1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
//------------------------------------------------------------------------------
// GB_transpose.h: definitions for GB_transpose
//------------------------------------------------------------------------------
// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
//------------------------------------------------------------------------------
#ifndef GB_TRANSPOSE_H
#define GB_TRANSPOSE_H
#include "GB.h"
#include "GB_atomics.h"
bool GB_transpose_method // if true: use GB_builder, false: use bucket
(
const GrB_Matrix A, // matrix to transpose
int *nworkspaces_bucket, // # of slices of A for the bucket method
int *nthreads_bucket, // # of threads to use for the bucket method
GB_Context Context
) ;
GrB_Info GB_transpose // C=A', C=(ctype)A' or C=op(A')
(
GrB_Matrix C, // output matrix C, possibly modified in-place
GrB_Type ctype, // desired type of C; if NULL use A->type.
// ignored if op is present (cast to op->ztype)
const bool C_is_csc, // desired CSR/CSC format of C
const GrB_Matrix A, // input matrix; C == A if done in place
// no operator is applied if op is NULL
const GB_Operator op_in, // unary/idxunop/binop to apply
const GrB_Scalar scalar, // scalar to bind to binary operator
bool binop_bind1st, // if true, binop(x,A) else binop(A,y)
bool flipij, // if true, flip i,j for user idxunop
GB_Context Context
) ;
GB_PUBLIC
GrB_Info GB_transpose_in_place // C=A', no change of type, no operators
(
GrB_Matrix C, // output matrix C, possibly modified in-place
const bool C_is_csc, // desired CSR/CSC format of C
GB_Context Context
) ;
GrB_Info GB_transpose_cast // C= (ctype) A' or one (A'), not in-place
(
GrB_Matrix C, // output matrix C, not in place
GrB_Type ctype, // desired type of C
const bool C_is_csc, // desired CSR/CSC format of C
const GrB_Matrix A, // input matrix; C != A
const bool iso_one, // if true, C = one (A'), as iso
GB_Context Context
) ;
GrB_Info GB_transpose_bucket // bucket transpose; typecast and apply op
(
GrB_Matrix C, // output matrix (static header)
const GB_iso_code C_code_iso, // iso code for C
const GrB_Type ctype, // type of output matrix C
const bool C_is_csc, // format of output matrix C
const GrB_Matrix A, // input matrix
// no operator is applied if op is NULL
const GB_Operator op, // unary/idxunop/binop to apply
const GrB_Scalar scalar, // scalar to bind to binary operator
bool binop_bind1st, // if true, binop(x,A) else binop(A,y)
const int nworkspaces, // # of workspaces to use
const int nthreads, // # of threads to use
GB_Context Context
) ;
void GB_transpose_ix // transpose the pattern and values of a matrix
(
GrB_Matrix C, // output matrix
const GrB_Matrix A, // input matrix
// for sparse case:
int64_t *restrict *Workspaces, // Workspaces, size nworkspaces
const int64_t *restrict A_slice, // how A is sliced, size nthreads+1
int nworkspaces, // # of workspaces to use
// for all cases:
int nthreads // # of threads to use
) ;
void GB_transpose_op // transpose, typecast, and apply operator to a matrix
(
GrB_Matrix C, // output matrix
const GB_iso_code C_code_iso, // iso code for C
// no operator is applied if op is NULL
const GB_Operator op, // unary/idxunop/binop to apply
const GrB_Scalar scalar, // scalar to bind to binary operator
bool binop_bind1st, // if true, binop(x,A) else binop(A,y)
const GrB_Matrix A, // input matrix
// for sparse or hypersparse case:
int64_t *restrict *Workspaces, // Workspaces, size nworkspaces
const int64_t *restrict A_slice, // how A is sliced, size nthreads+1
int nworkspaces, // # of workspaces to use
// for all cases:
int nthreads // # of threads to use
) ;
GB_PUBLIC
GrB_Info GB_shallow_copy // create a purely shallow matrix
(
GrB_Matrix C, // output matrix C, with a static header
const bool C_is_csc, // desired CSR/CSC format of C
const GrB_Matrix A, // input matrix
GB_Context Context
) ;
#endif
|