PaStiX Handbook 6.4.0
Loading...
Searching...
No Matches
bcsc_c.h
Go to the documentation of this file.
1/**
2 * @file bcsc_c.h
3 *
4 * @copyright 2004-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
5 * Univ. Bordeaux. All rights reserved.
6 *
7 * @version 6.4.0
8 * @author Mathieu Faverge
9 * @author Pierre Ramet
10 * @author Xavier Lacoste
11 * @author Vincent Bridonneau
12 * @date 2024-07-05
13 *
14 * @generated from /builds/7cspzRFxD/0/solverstack/pastix/bcsc/bcsc_z.h, normal z -> c, Thu Jul 16 08:31:45 2026
15 *
16 **/
17#ifndef _bcsc_c_h_
18#define _bcsc_c_h_
19
20/**
21 * @addtogroup bcsc_internal
22 * @{
23 *
24 * @name PastixComplex32 initialization functions
25 * @{
26 */
27void bcsc_cinit( const spmatrix_t *spm,
28 const pastix_order_t *ord,
29 const SolverMatrix *solvmtx,
30 int initAt,
31 pastix_bcsc_t *bcsc,
32 pastix_int_t valuesize );
33
34#if defined(PASTIX_WITH_MPI)
35void bcsc_cstore_data( const spmatrix_t *spm,
36 const pastix_order_t *ord,
37 const pastix_int_t *col2cblk,
38 bcsc_handle_comm_t *bcsc_comm );
39#endif
40
41/**
42 * @}
43 * @}
44 *
45 * @addtogroup bcsc
46 * @{
47 *
48 * @name PastixComplex32 vector(s) operations
49 * @{
50 */
51void bvec_caxpy_seq( pastix_data_t *pastix_data,
54 const pastix_complex32_t *x,
56void bvec_caxpy_smp( pastix_data_t *pastix_data,
59 const pastix_complex32_t *x,
61
62void bvec_ccopy_seq( pastix_data_t *pastix_data,
64 const pastix_complex32_t *x,
66void bvec_ccopy_smp( pastix_data_t *pastix_data,
68 const pastix_complex32_t *x,
70
71#if defined(PRECISION_z) || defined(PRECISION_c)
72pastix_complex32_t bvec_cdotc_seq( pastix_data_t *pastix_data,
74 const pastix_complex32_t *x,
75 const pastix_complex32_t *y );
76pastix_complex32_t bvec_cdotc_smp( pastix_data_t *pastix_data,
78 const pastix_complex32_t *x,
79 const pastix_complex32_t *y );
80#endif
81
84 const pastix_complex32_t *x,
85 const pastix_complex32_t *y );
88 const pastix_complex32_t *x,
89 const pastix_complex32_t *y );
90
91void bvec_cgemv_seq( pastix_data_t *pastix_data,
95 const pastix_complex32_t *A,
96 pastix_int_t lda,
97 const pastix_complex32_t *x,
100void bvec_cgemv_smp( pastix_data_t *pastix_data,
101 pastix_int_t m,
102 pastix_int_t n,
103 pastix_complex32_t alpha,
104 const pastix_complex32_t *A,
105 pastix_int_t lda,
106 const pastix_complex32_t *x,
109
110float bvec_cnrm2_seq( pastix_data_t *pastix_data,
111 pastix_int_t n,
112 const pastix_complex32_t *x );
113float bvec_cnrm2_smp( pastix_data_t *pastix_data,
114 pastix_int_t n,
115 const pastix_complex32_t *x );
116
117void bvec_cscal_seq( pastix_data_t *pastix_data,
118 pastix_int_t n,
119 pastix_complex32_t alpha,
121void bvec_cscal_smp( pastix_data_t *pastix_data,
122 pastix_int_t n,
123 pastix_complex32_t alpha,
125
126#if defined( PASTIX_WITH_MPI )
127int bvec_cexchange_data_rep( pastix_data_t *pastix_data,
128 pastix_int_t nrhs,
130 pastix_int_t ldb,
131 pastix_rhs_t Pb );
132int bvec_callocate_buf_dst( bvec_handle_comm_t *rhs_comm );
133int bvec_cexchange_data_dst( pastix_data_t *pastix_data,
134 pastix_dir_t dir,
135 pastix_int_t nrhs,
137 pastix_int_t ldb,
138 pastix_rhs_t Pb,
139 const pastix_int_t *glob2loc );
140#endif
141
142int bvec_clapmr( pastix_data_t *pastix_data,
143 pastix_dir_t dir,
144 pastix_int_t m,
145 pastix_int_t n,
147 pastix_int_t lda,
148 pastix_rhs_t PA );
149
150/**
151 * @}
152 *
153 * @name PastixComplex32 matrix operations
154 * @{
155 */
156float bcsc_cnorm( pastix_normtype_t ntype,
157 const pastix_bcsc_t *bcsc );
158
159void bcsc_cspsv( pastix_data_t *pastix_data,
161 pastix_complex32_t *work );
162
163void bcsc_cspmv( const pastix_data_t *pastix_data,
164 pastix_trans_t trans,
165 pastix_complex32_t alpha,
166 const pastix_complex32_t *x,
169
170void bcsc_cspmv_seq( const pastix_data_t *pastix_data,
171 pastix_trans_t trans,
172 pastix_complex32_t alpha,
173 const pastix_complex32_t *x,
176void bcsc_cspmv_smp( const pastix_data_t *pastix_data,
177 pastix_trans_t trans,
178 pastix_complex32_t alpha,
179 const pastix_complex32_t *x,
182
183/**
184 * @}
185 *
186 * @name PastixComplex32 MPI vector operations
187 * @{
188 */
189const pastix_complex32_t *bvec_cgather_remote( const pastix_data_t *pastix_data,
190 const pastix_complex32_t *y );
191void bvec_cnullify_remote( const pastix_data_t *pastix_data,
193void bvec_callreduce( const pastix_data_t *pastix_data,
195/**
196 * @}
197 * @}
198 */
199#endif /* _bcsc_c_h_ */
BEGIN_C_DECLS typedef int pastix_int_t
Definition datatypes.h:51
float _Complex pastix_complex32_t
Definition datatypes.h:76
void bcsc_cinit(const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, int initAt, pastix_bcsc_t *bcsc, pastix_int_t valuesize)
Initializes a centralize pastix_complex32_t block csc.
void bvec_cgemv_smp(pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, pastix_complex32_t alpha, const pastix_complex32_t *A, pastix_int_t lda, const pastix_complex32_t *x, pastix_complex32_t beta, pastix_complex32_t *y)
Compute.
float bcsc_cnorm(pastix_normtype_t ntype, const pastix_bcsc_t *bcsc)
Compute the norm of an bcsc matrix.
Definition bcsc_cnorm.c:252
float bvec_cnrm2_seq(pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex32_t *x)
Compute the norm 2 of a vector. (Sequential version)
void bcsc_cspmv_smp(const pastix_data_t *pastix_data, pastix_trans_t trans, pastix_complex32_t alpha, const pastix_complex32_t *x, pastix_complex32_t beta, pastix_complex32_t *y)
Perform y = alpha A x + beta y (Parallel version)
Definition bcsc_cspmv.c:552
const pastix_complex32_t * bvec_cgather_remote(const pastix_data_t *pastix_data, const pastix_complex32_t *y)
Gather a distributed right hand side (bvec storage) on all nodes.
void bcsc_cspmv_seq(const pastix_data_t *pastix_data, pastix_trans_t trans, pastix_complex32_t alpha, const pastix_complex32_t *x, pastix_complex32_t beta, pastix_complex32_t *y)
Compute the matrix-vector product y = alpha * A * x + beta * y (Sequential version)
Definition bcsc_cspmv.c:246
void bvec_cscal_seq(pastix_data_t *pastix_data, pastix_int_t n, pastix_complex32_t alpha, pastix_complex32_t *x)
Scale a vector by the scalar alpha. (Sequential version)
void bvec_callreduce(const pastix_data_t *pastix_data, pastix_complex32_t *y)
Apply an all reduce of the vector on all nodes.
void bvec_ccopy_smp(pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex32_t *x, pastix_complex32_t *y)
Copy a vector y = x (parallel version)
void bvec_ccopy_seq(pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex32_t *x, pastix_complex32_t *y)
Copy a vector y = x (Sequential version)
void bvec_caxpy_seq(pastix_data_t *pastix_data, pastix_int_t n, pastix_complex32_t alpha, const pastix_complex32_t *x, pastix_complex32_t *y)
Compute y <- alpha * x + y. (Sequential version)
void bcsc_cspsv(pastix_data_t *pastix_data, pastix_complex32_t *b, pastix_complex32_t *work)
Solve A x = b with A the sparse matrix.
pastix_complex32_t bvec_cdotu_smp(pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex32_t *x, const pastix_complex32_t *y)
Compute a regular scalar product x.y (Parallel version)
void bcsc_cspmv(const pastix_data_t *pastix_data, pastix_trans_t trans, pastix_complex32_t alpha, const pastix_complex32_t *x, pastix_complex32_t beta, pastix_complex32_t *y)
Compute the matrix-vector product y = alpha * op(A) * x + beta * y.
Definition bcsc_cspmv.c:629
pastix_complex32_t bvec_cdotu_seq(pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex32_t *x, const pastix_complex32_t *y)
Compute the scalar product x.y. (Sequential version)
void bvec_cgemv_seq(pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, pastix_complex32_t alpha, const pastix_complex32_t *A, pastix_int_t lda, const pastix_complex32_t *x, pastix_complex32_t beta, pastix_complex32_t *y)
Compute.
float bvec_cnrm2_smp(pastix_data_t *pastix_data, pastix_int_t n, const pastix_complex32_t *x)
Compute the norm 2 of a vector. (Parallel version)
void bvec_caxpy_smp(pastix_data_t *pastix_data, pastix_int_t n, pastix_complex32_t alpha, const pastix_complex32_t *x, pastix_complex32_t *y)
Perform y = alpha * x + y (Parallel version)
int bvec_clapmr(pastix_data_t *pastix_data, pastix_dir_t dir, pastix_int_t m, pastix_int_t n, pastix_complex32_t *A, pastix_int_t lda, pastix_rhs_t PA)
Apply a row permutation to a right hand side A (LAPACK xlatmr)
void bvec_cscal_smp(pastix_data_t *pastix_data, pastix_int_t n, pastix_complex32_t alpha, pastix_complex32_t *x)
Scale a vector (Parallel version)
void bvec_cnullify_remote(const pastix_data_t *pastix_data, pastix_complex32_t *y)
Set to 0 remote coefficients.
Structure to manage communications with distributed spm.
Definition bcsc.h:92
Structure to manage communications with distributed rhs.
Definition bvec.h:66
enum pastix_normtype_e pastix_normtype_t
Norms.
enum pastix_dir_e pastix_dir_t
Direction.
enum pastix_trans_e pastix_trans_t
Transpostion.
Order structure.
Definition order.h:47
Main PaStiX data structure.
Definition pastixdata.h:68
Main PaStiX RHS structure.
Definition pastixdata.h:155
Solver column block structure.
Definition solver.h:203