File size: 15,466 Bytes
184d68f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
/*
 * Copyright 1993-2020 NVIDIA Corporation.  All rights reserved.
 *
 * NOTICE TO LICENSEE:
 *
 * This source code and/or documentation ("Licensed Deliverables") are
 * subject to NVIDIA intellectual property rights under U.S. and
 * international Copyright laws.
 *
 * These Licensed Deliverables contained herein is PROPRIETARY and
 * CONFIDENTIAL to NVIDIA and is being provided under the terms and
 * conditions of a form of NVIDIA software license agreement by and
 * between NVIDIA and Licensee ("License Agreement") or electronically
 * accepted by Licensee.  Notwithstanding any terms or conditions to
 * the contrary in the License Agreement, reproduction or disclosure
 * of the Licensed Deliverables to any third party without the express
 * written consent of NVIDIA is prohibited.
 *
 * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
 * LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE
 * SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE.  IT IS
 * PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND.
 * NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED
 * DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY,
 * NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
 * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
 * LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY
 * SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
 * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
 * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
 * OF THESE LICENSED DELIVERABLES.
 *
 * U.S. Government End Users.  These Licensed Deliverables are a
 * "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT
 * 1995), consisting of "commercial computer software" and "commercial
 * computer software documentation" as such terms are used in 48
 * C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government
 * only as a commercial end item.  Consistent with 48 C.F.R.12.212 and
 * 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all
 * U.S. Government End Users acquire the Licensed Deliverables with
 * only those rights set forth herein.
 *
 * Any use of the Licensed Deliverables in individual and commercial
 * software must include, in the user documentation and internal
 * comments to the code, the above Disclaimer and U.S. Government End
 * Users Notice.
 */

#define CUSPARSE_G77              1
#define CUSPARSE_INTEL_FORTRAN    2
#define CUSPARSE_G95              3

/* Default to g77 on Linux, and Intel Fortran on Win32 */
#if defined(_WIN32)
#define CUSPARSE_FORTRAN_COMPILER CUSPARSE_INTEL_FORTRAN
#elif defined(__linux) || defined(__QNX__)
#define CUSPARSE_FORTRAN_COMPILER CUSPARSE_G95
#elif defined(__APPLE__)
#define CUSPARSE_FORTRAN_COMPILER CUSPARSE_G95
#define RETURN_COMPLEX   1
#else
#error unsupported platform
#endif

#if (CUSPARSE_FORTRAN_COMPILER==CUSPARSE_G77) || (CUSPARSE_FORTRAN_COMPILER==CUSPARSE_G95)
/* NOTE: Must use -fno-second-underscore when building Fortran source with g77
 *       g77 invocation may not use -fno-f2c, which forces different return
 *       type conventions than the one used below
 */
#define CUDA_MALLOC                 cuda_malloc_
#define CUDA_FREE                   cuda_free_
#define CUDA_MEMCPY_FORT2C_INT      cuda_memcpy_fort2c_int_
#define CUDA_MEMCPY_FORT2C_REAL     cuda_memcpy_fort2c_real_
#define CUDA_MEMCPY_C2FORT_INT      cuda_memcpy_c2fort_int_
#define CUDA_MEMCPY_C2FORT_REAL     cuda_memcpy_c2fort_real_
#define CUDA_MEMSET                 cuda_memset_
#define GET_SHIFTED_ADDRESS         get_shifted_address_

#define CUSPARSE_CREATE             cusparse_create_
#define CUSPARSE_DESTROY            cusparse_destroy_
#define CUSPARSE_GET_VERSION        cusparse_get_version_
#define CUSPARSE_SET_STREAM         cusparse_set_stream_
#define CUSPARSE_SET_POINTER_MODE   cusparse_set_pointer_mode_
#define CUSPARSE_GET_POINTER_MODE   cusparse_get_pointer_mode_
#define CUSPARSE_CREATE_MAT_DESCR   cusparse_create_mat_descr_
#define CUSPARSE_DESTROY_MAT_DESCR  cusparse_destroy_mat_descr_
#define CUSPARSE_SET_MAT_TYPE       cusparse_set_mat_type_
#define CUSPARSE_GET_MAT_TYPE       cusparse_get_mat_type_
#define CUSPARSE_SET_MAT_FILL_MODE  cusparse_set_mat_fill_mode_
#define CUSPARSE_GET_MAT_FILL_MODE  cusparse_get_mat_fill_mode_
#define CUSPARSE_SET_MAT_DIAG_TYPE  cusparse_set_mat_diag_type_
#define CUSPARSE_GET_MAT_DIAG_TYPE  cusparse_get_mat_diag_type_
#define CUSPARSE_SET_MAT_INDEX_BASE cusparse_set_mat_index_base_
#define CUSPARSE_GET_MAT_INDEX_BASE cusparse_get_mat_index_base_
#define CUSPARSE_CREATE_SOLVE_ANALYSIS_INFO cusparse_create_solve_analysis_info_
#define CUSPARSE_DESTROY_SOLVE_ANALYSIS_INFO cusparse_destroy_solve_analysis_info_
//#define CUSPARSE_SAXPYI             cusparse_saxpyi_
//#define CUSPARSE_DAXPYI             cusparse_daxpyi_
//#define CUSPARSE_CAXPYI             cusparse_caxpyi_
//#define CUSPARSE_ZAXPYI             cusparse_zaxpyi_
//#define CUSPARSE_SGTHR              cusparse_sgthr_
//#define CUSPARSE_DGTHR              cusparse_dgthr_
//#define CUSPARSE_CGTHR              cusparse_cgthr_
//#define CUSPARSE_ZGTHR              cusparse_zgthr_
//#define CUSPARSE_SGTHRZ             cusparse_sgthrz_
//#define CUSPARSE_DGTHRZ             cusparse_dgthrz_
//#define CUSPARSE_CGTHRZ             cusparse_cgthrz_
//#define CUSPARSE_ZGTHRZ             cusparse_zgthrz_
//#define CUSPARSE_SSCTR              cusparse_ssctr_
//#define CUSPARSE_DSCTR              cusparse_dsctr_
//#define CUSPARSE_CSCTR              cusparse_csctr_
//#define CUSPARSE_ZSCTR              cusparse_zsctr_
//#define CUSPARSE_SROTI              cusparse_sroti_
//#define CUSPARSE_DROTI              cusparse_droti_
//#define CUSPARSE_SCSRMV             cusparse_scsrmv_
//#define CUSPARSE_DCSRMV             cusparse_dcsrmv_
//#define CUSPARSE_CCSRMV             cusparse_ccsrmv_
//#define CUSPARSE_ZCSRMV             cusparse_zcsrmv_
//#define CUSPARSE_SCSRSV_ANALYSIS    cusparse_scsrsv_analysis_
//#define CUSPARSE_DCSRSV_ANALYSIS    cusparse_dcsrsv_analysis_
//#define CUSPARSE_CCSRSV_ANALYSIS    cusparse_ccsrsv_analysis_
//#define CUSPARSE_ZCSRSV_ANALYSIS    cusparse_zcsrsv_analysis_
//#define CUSPARSE_SCSRSV_SOLVE       cusparse_scsrsv_solve_
//#define CUSPARSE_DCSRSV_SOLVE       cusparse_dcsrsv_solve_
//#define CUSPARSE_CCSRSV_SOLVE       cusparse_ccsrsv_solve_
//#define CUSPARSE_ZCSRSV_SOLVE       cusparse_zcsrsv_solve_
//#define CUSPARSE_SCSRMM             cusparse_scsrmm_
//#define CUSPARSE_DCSRMM             cusparse_dcsrmm_
//#define CUSPARSE_CCSRMM             cusparse_ccsrmm_
//#define CUSPARSE_ZCSRMM             cusparse_zcsrmm_
//#define CUSPARSE_SCSRSM_ANALYSIS    cusparse_scsrsm_analysis_
//#define CUSPARSE_DCSRSM_ANALYSIS    cusparse_dcsrsm_analysis_
//#define CUSPARSE_CCSRSM_ANALYSIS    cusparse_ccsrsm_analysis_
//#define CUSPARSE_ZCSRSM_ANALYSIS    cusparse_zcsrsm_analysis_
//#define CUSPARSE_SCSRSM_SOLVE       cusparse_scsrsm_solve_
//#define CUSPARSE_DCSRSM_SOLVE       cusparse_dcsrsm_solve_
//#define CUSPARSE_CCSRSM_SOLVE       cusparse_ccsrsm_solve_
//#define CUSPARSE_ZCSRSM_SOLVE       cusparse_zcsrsm_solve_
#define CUSPARSE_SGTSV              cusparse_sgtsv_
#define CUSPARSE_DGTSV              cusparse_dgtsv_
#define CUSPARSE_CGTSV              cusparse_cgtsv_
#define CUSPARSE_ZGTSV              cusparse_zgtsv_
#define CUSPARSE_SGTSV_STRIDEDBATCH cusparse_sgtsv_stridedbatch_
#define CUSPARSE_DGTSV_STRIDEDBATCH cusparse_dgtsv_stridedbatch_
#define CUSPARSE_CGTSV_STRIDEDBATCH cusparse_cgtsv_stridedbatch_
#define CUSPARSE_ZGTSV_STRIDEDBATCH cusparse_zgtsv_stridedbatch_
#define CUSPARSE_SNNZ               cusparse_snnz_
#define CUSPARSE_DNNZ               cusparse_dnnz_
#define CUSPARSE_CNNZ               cusparse_cnnz_
#define CUSPARSE_ZNNZ               cusparse_znnz_
#define CUSPARSE_SDENSE2CSR         cusparse_sdense2csr_
#define CUSPARSE_DDENSE2CSR         cusparse_ddense2csr_
#define CUSPARSE_CDENSE2CSR         cusparse_cdense2csr_
#define CUSPARSE_ZDENSE2CSR         cusparse_zdense2csr_
#define CUSPARSE_SCSR2DENSE         cusparse_scsr2dense_
#define CUSPARSE_DCSR2DENSE         cusparse_dcsr2dense_
#define CUSPARSE_CCSR2DENSE         cusparse_ccsr2dense_
#define CUSPARSE_ZCSR2DENSE         cusparse_zcsr2dense_
#define CUSPARSE_SDENSE2CSC         cusparse_sdense2csc_
#define CUSPARSE_DDENSE2CSC         cusparse_ddense2csc_
#define CUSPARSE_CDENSE2CSC         cusparse_cdense2csc_
#define CUSPARSE_ZDENSE2CSC         cusparse_zdense2csc_
#define CUSPARSE_SCSC2DENSE         cusparse_scsc2dense_
#define CUSPARSE_DCSC2DENSE         cusparse_dcsc2dense_
#define CUSPARSE_CCSC2DENSE         cusparse_ccsc2dense_
#define CUSPARSE_ZCSC2DENSE         cusparse_zcsc2dense_
#define CUSPARSE_XCOO2CSR           cusparse_xcoo2csr_
#define CUSPARSE_XCSR2COO           cusparse_xcsr2coo_
//#define CUSPARSE_SCSR2CSC           cusparse_scsr2csc_
//#define CUSPARSE_DCSR2CSC           cusparse_dcsr2csc_
//#define CUSPARSE_CCSR2CSC           cusparse_ccsr2csc_
//#define CUSPARSE_ZCSR2CSC           cusparse_zcsr2csc_

#elif CUSPARSE_FORTRAN_COMPILER==CUSPARSE_INTEL_FORTRAN

#define CUDA_MALLOC                 CUDA_MALLOC
#define CUDA_FREE                   CUDA_FREE
#define CUDA_MEMCPY_FORT2C_INT      CUDA_MEMCPY_FORT2C_INT
#define CUDA_MEMCPY_FORT2C_REAL     CUDA_MEMCPY_FORT2C_REAL
#define CUDA_MEMCPY_C2FORT_INT      CUDA_MEMCPY_C2FORT_INT
#define CUDA_MEMCPY_C2FORT_REAL     CUDA_MEMCPY_C2FORT_REAL
#define CUDA_MEMSET                 CUDA_MEMSET
#define GET_SHIFTED_ADDRESS         GET_SHIFTED_ADDRESS

#define CUSPARSE_CREATE             CUSPARSE_CREATE
#define CUSPARSE_DESTROY            CUSPARSE_DESTROY
#define CUSPARSE_GET_VERSION        CUSPARSE_GET_VERSION
#define CUSPARSE_SET_STREAM         CUSPARSE_SET_STREAM
#define CUSPARSE_SET_POINTER_MODE   CUSPARSE_SET_POINTER_MODE
#define CUSPARSE_GET_POINTER_MODE   CUSPARSE_GET_POINTER_MODE
#define CUSPARSE_CREATE_MAT_DESCR   CUSPARSE_CREATE_MAT_DESCR
#define CUSPARSE_DESTROY_MAT_DESCR  CUSPARSE_DESTROY_MAT_DESCR
#define CUSPARSE_SET_MAT_TYPE       CUSPARSE_SET_MAT_TYPE
#define CUSPARSE_GET_MAT_TYPE       CUSPARSE_GET_MAT_TYPE
#define CUSPARSE_SET_MAT_FILL_MODE  CUSPARSE_SET_MAT_FILL_MODE
#define CUSPARSE_GET_MAT_FILL_MODE  CUSPARSE_GET_MAT_FILL_MODE
#define CUSPARSE_SET_MAT_DIAG_TYPE  CUSPARSE_SET_MAT_DIAG_TYPE
#define CUSPARSE_GET_MAT_DIAG_TYPE  CUSPARSE_GET_MAT_DIAG_TYPE
#define CUSPARSE_SET_MAT_INDEX_BASE CUSPARSE_SET_MAT_INDEX_BASE
#define CUSPARSE_GET_MAT_INDEX_BASE CUSPARSE_GET_MAT_INDEX_BASE
#define CUSPARSE_CREATE_SOLVE_ANALYSIS_INFO CUSPARSE_CREATE_SOLVE_ANALYSIS_INFO
#define CUSPARSE_DESTROY_SOLVE_ANALYSIS_INFO CUSPARSE_DESTROY_SOLVE_ANALYSIS_INFO
//#define CUSPARSE_SAXPYI             CUSPARSE_SAXPYI
//#define CUSPARSE_DAXPYI             CUSPARSE_DAXPYI
//#define CUSPARSE_CAXPYI             CUSPARSE_CAXPYI
//#define CUSPARSE_ZAXPYI             CUSPARSE_ZAXPYI
//#define CUSPARSE_SDOTI              CUSPARSE_SDOTI
//#define CUSPARSE_DDOTI              CUSPARSE_DDOTI
//#define CUSPARSE_CDOTI              CUSPARSE_CDOTI
//#define CUSPARSE_ZDOTI              CUSPARSE_ZDOTI
//#define CUSPARSE_CDOTCI             CUSPARSE_CDOTCI
//#define CUSPARSE_ZDOTCI             CUSPARSE_ZDOTCI
//#define CUSPARSE_SGTHR              CUSPARSE_SGTHR
//#define CUSPARSE_DGTHR              CUSPARSE_DGTHR
//#define CUSPARSE_CGTHR              CUSPARSE_CGTHR
//#define CUSPARSE_ZGTHR              CUSPARSE_ZGTHR
//#define CUSPARSE_SGTHRZ             CUSPARSE_SGTHRZ
//#define CUSPARSE_DGTHRZ             CUSPARSE_DGTHRZ
//#define CUSPARSE_CGTHRZ             CUSPARSE_CGTHRZ
//#define CUSPARSE_ZGTHRZ             CUSPARSE_ZGTHRZ
//#define CUSPARSE_SSCTR              CUSPARSE_SSCTR
//#define CUSPARSE_DSCTR              CUSPARSE_DSCTR
//#define CUSPARSE_CSCTR              CUSPARSE_CSCTR
//#define CUSPARSE_ZSCTR              CUSPARSE_ZSCTR
//#define CUSPARSE_SROTI              CUSPARSE_SROTI
//#define CUSPARSE_DROTI              CUSPARSE_DROTI
//#define CUSPARSE_SCSRMV             CUSPARSE_SCSRMV
//#define CUSPARSE_DCSRMV             CUSPARSE_DCSRMV
//#define CUSPARSE_CCSRMV             CUSPARSE_CCSRMV
//#define CUSPARSE_ZCSRMV             CUSPARSE_ZCSRMV
//#define CUSPARSE_SCSRSV_ANALYSIS    CUSPARSE_SCSRSV_ANALYSIS
//#define CUSPARSE_DCSRSV_ANALYSIS    CUSPARSE_DCSRSV_ANALYSIS
//#define CUSPARSE_CCSRSV_ANALYSIS    CUSPARSE_CCSRSV_ANALYSIS
//#define CUSPARSE_ZCSRSV_ANALYSIS    CUSPARSE_ZCSRSV_ANALYSIS
//#define CUSPARSE_SCSRSV_SOLVE       CUSPARSE_SCSRSV_SOLVE
//#define CUSPARSE_DCSRSV_SOLVE       CUSPARSE_DCSRSV_SOLVE
//#define CUSPARSE_CCSRSV_SOLVE       CUSPARSE_CCSRSV_SOLVE
//#define CUSPARSE_ZCSRSV_SOLVE       CUSPARSE_ZCSRSV_SOLVE
//#define CUSPARSE_SCSRMM             CUSPARSE_SCSRMM
//#define CUSPARSE_DCSRMM             CUSPARSE_DCSRMM
//#define CUSPARSE_CCSRMM             CUSPARSE_CCSRMM
//#define CUSPARSE_ZCSRMM             CUSPARSE_ZCSRMM
//#define CUSPARSE_SCSRSM_ANALYSIS    CUSPARSE_SCSRSM_ANALYSIS
//#define CUSPARSE_DCSRSM_ANALYSIS    CUSPARSE_DCSRSM_ANALYSIS
//#define CUSPARSE_CCSRSM_ANALYSIS    CUSPARSE_CCSRSM_ANALYSIS
//#define CUSPARSE_ZCSRSM_ANALYSIS    CUSPARSE_ZCSRSM_ANALYSIS
//#define CUSPARSE_SCSRSM_SOLVE       CUSPARSE_SCSRSM_SOLVE
//#define CUSPARSE_DCSRSM_SOLVE       CUSPARSE_DCSRSM_SOLVE
//#define CUSPARSE_CCSRSM_SOLVE       CUSPARSE_CCSRSM_SOLVE
//#define CUSPARSE_ZCSRSM_SOLVE       CUSPARSE_ZCSRSM_SOLVE
#define CUSPARSE_SGTSV              CUSPARSE_SGTSV
#define CUSPARSE_DGTSV              CUSPARSE_DGTSV
#define CUSPARSE_CGTSV              CUSPARSE_CGTSV
#define CUSPARSE_ZGTSV              CUSPARSE_ZGTSV
#define CUSPARSE_SGTSV_STRIDEDBATCH CUSPARSE_SGTSV_STRIDEDBATCH
#define CUSPARSE_DGTSV_STRIDEDBATCH CUSPARSE_DGTSV_STRIDEDBATCH
#define CUSPARSE_CGTSV_STRIDEDBATCH CUSPARSE_CGTSV_STRIDEDBATCH
#define CUSPARSE_ZGTSV_STRIDEDBATCH CUSPARSE_ZGTSV_STRIDEDBATCH
#define CUSPARSE_SNNZ               CUSPARSE_SNNZ
#define CUSPARSE_DNNZ               CUSPARSE_DNNZ
#define CUSPARSE_CNNZ               CUSPARSE_CNNZ
#define CUSPARSE_ZNNZ               CUSPARSE_ZNNZ
#define CUSPARSE_SDENSE2CSR         CUSPARSE_SDENSE2CSR
#define CUSPARSE_DDENSE2CSR         CUSPARSE_DDENSE2CSR
#define CUSPARSE_CDENSE2CSR         CUSPARSE_CDENSE2CSR
#define CUSPARSE_ZDENSE2CSR         CUSPARSE_ZDENSE2CSR
#define CUSPARSE_SCSR2DENSE         CUSPARSE_SCSR2DENSE
#define CUSPARSE_DCSR2DENSE         CUSPARSE_DCSR2DENSE
#define CUSPARSE_CCSR2DENSE         CUSPARSE_CCSR2DENSE
#define CUSPARSE_ZCSR2DENSE         CUSPARSE_ZCSR2DENSE
#define CUSPARSE_SDENSE2CSC         CUSPARSE_SDENSE2CSC
#define CUSPARSE_DDENSE2CSC         CUSPARSE_DDENSE2CSC
#define CUSPARSE_CDENSE2CSC         CUSPARSE_CDENSE2CSC
#define CUSPARSE_ZDENSE2CSC         CUSPARSE_ZDENSE2CSC
#define CUSPARSE_SCSC2DENSE         CUSPARSE_SCSC2DENSE
#define CUSPARSE_DCSC2DENSE         CUSPARSE_DCSC2DENSE
#define CUSPARSE_CCSC2DENSE         CUSPARSE_CCSC2DENSE
#define CUSPARSE_ZCSC2DENSE         CUSPARSE_ZCSC2DENSE
#define CUSPARSE_XCOO2CSR           CUSPARSE_XCOO2CSR
#define CUSPARSE_XCSR2COO           CUSPARSE_XCSR2COO
//#define CUSPARSE_SCSR2CSC           CUSPARSE_SCSR2CSC
//#define CUSPARSE_DCSR2CSC           CUSPARSE_DCSR2CSC
//#define CUSPARSE_CCSR2CSC           CUSPARSE_CCSR2CSC
//#define CUSPARSE_ZCSR2CSC           CUSPARSE_ZCSR2CSC

#else
#error unsupported Fortran compiler
#endif