SpM Handbook 1.2.4
Loading...
Searching...
No Matches
d_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_dspmm (spm_side_t side, spm_trans_t transA, spm_trans_t transB, spm_int_t K, double alpha, const spmatrix_t *A, const double *B, spm_int_t ldb, double beta, double *C, spm_int_t ldc)
 Compute a matrix-matrix product.
 
int spm_dspmv (spm_trans_t trans, double alpha, const spmatrix_t *A, const double *x, spm_int_t incx, double beta, double *y, spm_int_t incy)
 compute the matrix-vector product:
 
#define LAPACKE_dlascl_work(_dir_, _uplo_, _kl_, _ku_, _cfrom_, _cto_, _m_, _n_, _A_, _lda_)    __spm_dlascl( (_cto_), (_m_), (_n_), (_A_), (_lda_) )
 Alias if Lapacke zlscl is not available.
 
typedef struct __spm_dmatvec_s __spm_dmatvec_t
 Typedef associated to structure.
 
typedef double(* __conj_fct_t) (double)
 Typedef to define the op function applied to the element (id or )
 
typedef int(* __loop_fct_t) (const __spm_dmatvec_t *)
 Typedef to the main loop function performing the matvec operation.
 
static double __fct_id (double val)
 Identity function.
 
static void d_spmm_build_Ctmp (int nrhs, const spmatrix_t *spm, const double *Cloc, spm_int_t ldcl, double **Cglb, spm_int_t *ldcg)
 Build a global C RHS, set to 0 for remote datas.
 
static void d_spmm_build_Btmp (int nrhs, const spmatrix_t *spm, const double *Bloc, spm_int_t ldbl, double **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.2.4
Author
Matthieu Kuhn
Mathieu Faverge
Tony Delarue
Alycia Lisito
Date
2024-05-29
Generated arithmetic file from /builds/2mk6rsew/0/fpruvost/spm/src/z_spm_matrixvector.c, normal z -> d, Fri Nov 29 11:34:29 2024

Definition in file d_spm_matrixvector.c.

Macro Definition Documentation

◆ LAPACKE_dlascl_work

#define LAPACKE_dlascl_work (   _dir_,
  _uplo_,
  _kl_,
  _ku_,
  _cfrom_,
  _cto_,
  _m_,
  _n_,
  _A_,
  _lda_ 
)     __spm_dlascl( (_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 d_spm_matrixvector.c.

Typedef Documentation

◆ __spm_dmatvec_t

typedef struct __spm_dmatvec_s __spm_dmatvec_t

Typedef associated to structure.

Definition at line 35 of file d_spm_matrixvector.c.

◆ __conj_fct_t

typedef double(* __conj_fct_t) (double)

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

Definition at line 40 of file d_spm_matrixvector.c.

◆ __loop_fct_t

typedef int(* __loop_fct_t) (const __spm_dmatvec_t *)

Typedef to the main loop function performing the matvec operation.

Definition at line 45 of file d_spm_matrixvector.c.

Function Documentation

◆ __fct_id()

static double __fct_id ( double  val)
static

Identity function.

Parameters
[in]valTODO
Returns
id(val)

Definition at line 62 of file d_spm_matrixvector.c.

◆ d_spmm_build_Ctmp()

static void d_spmm_build_Ctmp ( int  nrhs,
const spmatrix_t spm,
const double *  Cloc,
spm_int_t  ldcl,
double **  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 d_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_dspmm(), and spm_dspmv().

◆ d_spmm_build_Btmp()

static void d_spmm_build_Btmp ( int  nrhs,
const spmatrix_t spm,
const double *  Bloc,
spm_int_t  ldbl,
double **  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 d_spm_matrixvector.c.

References d_spmGatherRHS(), and spmatrix_s::gNexp.

Referenced by spm_dspmm(), and spm_dspmv().