ALP User Documentation  0.8.preview
Algebraic Programming User Documentation
spblas_impl.h
Go to the documentation of this file.
1 
2 /*
3  * Copyright 2021 Huawei Technologies Co., Ltd.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
35 #ifndef _H_ALP_SPBLAS_IMPL
36 #define _H_ALP_SPBLAS_IMPL
37 
38 #include "blas_sparse_vec.h"
39 
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43 
86 #ifndef SPBLAS_PREFIX
87  #error "SPBLAS_PREFIX must be defined"
88 #endif
89 
92 #define SPBLAS_NAME( name ) SPCONCAT( SPBLAS_PREFIX, name )
93 #define EXT_SPBLAS_PREFIX SPCONCAT( SPBLAS_PREFIX, ext_ )
94 #define EXT_SPBLAS_NAME( name ) SPCONCAT( EXT_SPBLAS_PREFIX, name )
95 
110 #define SPBLAS_RET_T void
111 
133 SPBLAS_RET_T SPBLAS_NAME( dcsrgemv )(
134  const char * transa,
135  const int * m,
136  const double * a, const int * ia, const int * ja,
137  const double * x,
138  double * y
139 );
140 
170 SPBLAS_RET_T SPBLAS_NAME( dcsrmm )(
171  const char * transa,
172  const int * m, const int * n, const int * k,
173  const double * alpha,
174  const char * matdescra, const double * val, const int * indx,
175  const int * pntrb, const int * pntre,
176  const double * b, const int * ldb,
177  const double * beta,
178  double * c, const int * ldc
179 );
180 
221 SPBLAS_RET_T SPBLAS_NAME( dcsrmultcsr )(
222  const char * trans, const int * request, const int * sort,
223  const int * m, const int * n, const int * k,
224  double * a, int * ja, int * ia,
225  double * b, int * jb, int * ib,
226  double * c, int * jc, int * ic,
227  const int * nzmax, int * info
228 );
229 
261 SPBLAS_RET_T EXT_SPBLAS_NAME( dcsrmultsv )(
262  const char * trans, const int * request,
263  const int * m, const int * n,
264  const double * a, const int * ja, const int * ia,
265  const extblas_sparse_vector x,
267 );
268 
273 SPBLAS_RET_T EXT_SPBLAS_NAME( free )();
274  // ends the SpBLAS doxygen group
276 
277 #ifdef __cplusplus
278 } // end extern "C"
279 #endif
280 
281 #endif // end _H_ALP_SPBLAS_IMPL
282 
void * extblas_sparse_vector
A sparse vector.
Definition: blas_sparse_vec.h:69
This is an ALP-specific extension to the NIST Sparse BLAS standard to support sparse vectors.