SpM Handbook 1.3.0
Loading...
Searching...
No Matches
s_spm_matrixvector.c File Reference
#include "common.h"
#include <lapacke.h>
#include <cblas.h>

Go to the source code of this file.

Functions

int spm_sspmm (spm_side_t side, spm_trans_t transA, spm_trans_t transB, spm_int_t K, float alpha, const spmatrix_t *A, const float *B, spm_int_t ldb, float beta, float *C, spm_int_t ldc)
 Compute a matrix-matrix product.
int spm_sspmv (spm_trans_t trans, float alpha, const spmatrix_t *A, const float *x, spm_int_t incx, float beta, float *y, spm_int_t incy)
 compute the matrix-vector product:
#define LAPACKE_slascl_work(_dir_, _uplo_, _kl_, _ku_, _cfrom_, _cto_, _m_, _n_, _A_, _lda_)
 Alias if Lapacke zlscl is not available.
typedef struct __spm_smatvec_s __spm_smatvec_t
 Typedef associated to structure.
typedef float(* __conj_fct_t) (float)
 Typedef to define the op function applied to the element (id or ).
typedef int(* __loop_fct_t) (const __spm_smatvec_t *)
 Typedef to the main loop function performing the matvec operation.
static float __fct_id (float val)
 Identity function.
static void s_spmm_build_Ctmp (int nrhs, const spmatrix_t *spm, const float *Cloc, spm_int_t ldcl, float **Cglb, spm_int_t *ldcg)
 Build a global C RHS, set to 0 for remote datas.
static void s_spmm_build_Btmp (int nrhs, const spmatrix_t *spm, const float *Bloc, spm_int_t ldbl, float **Bglb, spm_int_t *ldbg)
 Build a global B vector by gathering datas from all nodes.

Detailed Description

SParse Matrix package matrix-vector multiplication routines.

Version
1.3.0
Author
Matthieu Kuhn
Mathieu Faverge
Tony Delarue
Alycia Lisito
Date
2024-07-26
Generated arithmetic file from /builds/fpruvost/spm/src/z_spm_matrixvector.c, normal z -> s, Fri Oct 23 13:05:00 2026

Definition in file s_spm_matrixvector.c.

Macro Definition Documentation

◆ LAPACKE_slascl_work

#define LAPACKE_slascl_work ( _dir_,
_uplo_,
_kl_,
_ku_,
_cfrom_,
_cto_,
_m_,
_n_,
_A_,
_lda_ )
Value:
__spm_slascl( (_cto_), (_m_), (_n_), (_A_), (_lda_) )

Alias if Lapacke zlscl is not available.

Parameters
[in]_dir_Unused parameter
[in]_uplo_Unused parameter
[in]_kl_Unused parameter
[in]_ku_Unused parameter
[in]_cfrom_Unused parameter
[in]_cto_The scaling factor of the matrix A
[in]_m_The number of rows of the matrix A
[in]_n_The number of columns of the matrix A
[in,out]_A_On entry the lda-by-n matrix to scale. On exit, the matrix is multiplied by cto.
[in]_lda_The leading dimension of the matrix A. lda >= max(1, m)

Definition at line 737 of file s_spm_matrixvector.c.

Referenced by spm_sspmm(), and spmScalMat().

Typedef Documentation

◆ __spm_smatvec_t

typedef struct __spm_smatvec_s __spm_smatvec_t

Typedef associated to structure.

Definition at line 35 of file s_spm_matrixvector.c.

◆ __conj_fct_t

typedef float(* __conj_fct_t) (float)

Typedef to define the op function applied to the element (id or ).

Definition at line 40 of file s_spm_matrixvector.c.

◆ __loop_fct_t

typedef int(* __loop_fct_t) (const __spm_smatvec_t *)

Typedef to the main loop function performing the matvec operation.

Definition at line 45 of file s_spm_matrixvector.c.

Function Documentation

◆ __fct_id()

float __fct_id ( float val)
static

Identity function.

Parameters
[in]valTODO
Returns
id(val)

Definition at line 62 of file s_spm_matrixvector.c.

◆ s_spmm_build_Ctmp()

void s_spmm_build_Ctmp ( int nrhs,
const spmatrix_t * spm,
const float * Cloc,
spm_int_t ldcl,
float ** Cglb,
spm_int_t * ldcg )
static

Build a global C RHS, set to 0 for remote datas.

Parameters
[in]nrhsThe number of RHS.
[in]spmThe pointer to the sparse matrix structure.
[in]ClocThe local matrix of size ldcl -by- nrhs
[in]ldclThe leading dimension of Cloc. ldcl >= max( 1, spm->nexp )
[out]CglbOn exit, contains the centralized version of the Cloc matrix.
[out]ldcgOn exit, contains the leading dimension of the Cglb matrix. ldcg >= max(1, spm->gNexp )

Definition at line 948 of file s_spm_matrixvector.c.

References spmatrix_s::baseval, spmatrix_s::dof, spmatrix_s::dofs, spmatrix_s::gNexp, spmatrix_s::loc2glob, and spmatrix_s::n.

Referenced by spm_sspmm(), and spm_sspmv().

◆ s_spmm_build_Btmp()

void s_spmm_build_Btmp ( int nrhs,
const spmatrix_t * spm,
const float * Bloc,
spm_int_t ldbl,
float ** Bglb,
spm_int_t * ldbg )
static

Build a global B vector by gathering datas from all nodes.

Parameters
[in]spmThe pointer to the sparse matrix structure.
[in]nrhsThe number of RHS.
[in]BlocThe local B vector.
[in,out]ldblThe leading dimension of the local B vector.
[out]BglbThe global B vector.
[out]ldbgThe leading dimension of the global B vector.

Definition at line 1012 of file s_spm_matrixvector.c.

References spmatrix_s::gNexp, and s_spmGatherRHS().

Referenced by spm_sspmm(), and spm_sspmv().