cuSolverDx#
API reference: cuSolverDx C++ documentation.
Operators#
Operators are set with cusolverdxSetOperatorInt64() or cusolverdxSetOperatorInt64s():
CUSOLVERDX_OPERATOR_SIZE— 1, 2, or 3 int64s (problem size).CUSOLVERDX_OPERATOR_BLOCK_DIM— 3 int64s.CUSOLVERDX_OPERATOR_TYPE—CUSOLVERDX_TYPE_REAL,CUSOLVERDX_TYPE_COMPLEX.CUSOLVERDX_OPERATOR_API—CUSOLVERDX_API_SMEMorCUSOLVERDX_API_SMEM_DYNAMIC_LD.CUSOLVERDX_OPERATOR_FUNCTION— seecusolverdxFunction_tfor the full list, includingCUSOLVERDX_FUNCTION_GETRF_NO_PIVOT,CUSOLVERDX_FUNCTION_GETRS_NO_PIVOT,CUSOLVERDX_FUNCTION_POTRF,CUSOLVERDX_FUNCTION_POTRS,CUSOLVERDX_FUNCTION_TRSM,CUSOLVERDX_FUNCTION_GETRF_PARTIAL_PIVOT,CUSOLVERDX_FUNCTION_GETRS_PARTIAL_PIVOT,CUSOLVERDX_FUNCTION_GEQRF,CUSOLVERDX_FUNCTION_UNMQR,CUSOLVERDX_FUNCTION_GELQF,CUSOLVERDX_FUNCTION_UNMLQ,CUSOLVERDX_FUNCTION_POSV,CUSOLVERDX_FUNCTION_GESV_NO_PIVOT,CUSOLVERDX_FUNCTION_GESV_PARTIAL_PIVOT,CUSOLVERDX_FUNCTION_GELS,CUSOLVERDX_FUNCTION_UNGQR,CUSOLVERDX_FUNCTION_UNGLQ,CUSOLVERDX_FUNCTION_GTSV_NO_PIVOT,CUSOLVERDX_FUNCTION_HTEV,CUSOLVERDX_FUNCTION_HEEV.CUSOLVERDX_OPERATOR_EXECUTION—COMMONDX_EXECUTION_BLOCK.CUSOLVERDX_OPERATOR_PRECISION—COMMONDX_PRECISION_F32,COMMONDX_PRECISION_F64.CUSOLVERDX_OPERATOR_SM— target SM.CUSOLVERDX_OPERATOR_ARRANGEMENT—CUSOLVERDX_ARRANGEMENT_COL_MAJOR/ROW_MAJOR(optional).CUSOLVERDX_OPERATOR_FILL_MODE—CUSOLVERDX_FILL_MODE_LOWER/UPPER(symmetric).CUSOLVERDX_OPERATOR_SIDE—CUSOLVERDX_SIDE_LEFT/RIGHT.CUSOLVERDX_OPERATOR_DIAG—CUSOLVERDX_DIAG_UNIT/NON_UNIT.CUSOLVERDX_OPERATOR_TRANSPOSE_MODE—CUSOLVERDX_TRANSPOSE_MODE_NON_TRANSPOSED/TRANSPOSED/CONJ_TRANSPOSED(optional).CUSOLVERDX_OPERATOR_LEADING_DIMENSION— leading dimensions (lda, ldb, …) (optional).CUSOLVERDX_OPERATOR_BATCHES_PER_BLOCK— batches per block (optional).CUSOLVERDX_OPERATOR_JOB—CUSOLVERDX_JOB_NO_VECTORS,CUSOLVERDX_JOB_ALL_VECTORS,CUSOLVERDX_JOB_MULTIPLY_VECTORS, orCUSOLVERDX_JOB_OVERWRITE_VECTORS(optional, for eigensolvers).
Options#
Use cusolverdxSetOptionStr() to set COMMONDX_OPTION_SYMBOL_NAME for the device function name.
Traits#
cusolverdxGetTraitInt64()—CUSOLVERDX_TRAIT_SUGGESTED_BATCHES_PER_BLOCK,CUSOLVERDX_TRAIT_WORKSPACE_SIZE.cusolverdxGetTraitInt64s()—CUSOLVERDX_TRAIT_BLOCK_DIM,CUSOLVERDX_TRAIT_SUGGESTED_BLOCK_DIM.cusolverdxGetTraitStrSize()+cusolverdxGetTraitStr()—CUSOLVERDX_TRAIT_SYMBOL_NAME.
Universal fatbin#
Use cusolverdxGetUniversalFATBINSize() and cusolverdxGetUniversalFATBIN() to get a
single fatbin for multiple SMs instead of LTOIR.
Device function signatures#
Signatures depend on the selected cusolverdxApi_t. For
CUSOLVERDX_API_SMEM, leading dimensions are fixed at compile time.
For CUSOLVERDX_API_SMEM_DYNAMIC_LD, leading dimensions are passed as
unsigned* at runtime. Representative SMEM-API signatures:
GETRF (no pivot):
void symbol(A*, info*)GETRS (no pivot):
void symbol(A*, B*)POTRF:
void symbol(A*, info*)POTRS:
void symbol(A*, B*)TRSM:
void symbol(A*, B*)GETRF (partial pivot):
void symbol(A*, ipiv*, info*)GETRS (partial pivot):
void symbol(A*, ipiv*, B*)GEQRF / GELQF:
void symbol(A*, tau*)UNMQR / UNMLQ:
void symbol(A*, tau*, C*)POSV:
void symbol(A*, B*, info*)GESV (no pivot / partial pivot):
void symbol(A*, [ipiv*,] B*, info*)GELS:
void symbol(A*, tau*, B*)UNGQR / UNGLQ:
void symbol(A*, tau*)GTSV (no pivot):
void symbol(dl*, d*, du*, B*, info*)HTEV:
void symbol(d*, e*, [v*,] info*)(v* present when JOB computes eigenvectors)HEEV:
void symbol(A*, lambda*, workspace*, info*)
See the Doxygen reference for cusolverdxFunction_t for the
complete signatures, including the dynamic-LD variants.
Examples#
cuSolverDx cholesky factorization example#
/*
* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <libcusolverdx.h>
#include <nvrtc.h>
#include <vector>
#include "common_examples.hpp"
#include "macros.hpp"
using namespace examples;
int main() {
long long int size[1] = { 64 };
long long int block_dim[3] = { 256, 1, 1 };
/**
* Create a descriptor
* This is equivalent to `using SOLVER = ...` in cuSOLVERDx C++
*/
cusolverdxDescriptor h { 0 };
LIBMATHDX_CHECK(cusolverdxCreateDescriptor(&h));
// Sets problem size
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64s(h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_SIZE, 1, size));
// CUSOLVERDX_OPERATOR_BLOCK_DIM indicates the block dimension
LIBMATHDX_CHECK(
cusolverdxSetOperatorInt64s(h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_BLOCK_DIM, 3, block_dim));
// CUSOLVERDX_TYPE_REAL means the inputs contain real type data
// CUSOLVERDX_TYPE_COMPLEX would be for inputs with complex type data
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_TYPE, cusolverdxType::CUSOLVERDX_TYPE_REAL));
// CUSOLVERDX_API_SMEM means that inputs are in smem
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_API, cusolverdxApi::CUSOLVERDX_API_SMEM));
// This means we generate a solver based on picked algorithm ("POTRF")
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_FUNCTION, cusolverdxFunction::CUSOLVERDX_FUNCTION_POTRF));
// COMMONDX_EXECUTION_BLOCK means multiple threads in a block participate in the solver
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_EXECUTION, commondxExecution::COMMONDX_EXECUTION_BLOCK));
// COMMONDX_PRECISION_F32 for single precision
// COMMONDX_PRECISION_F64 for double precision
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_PRECISION, commondxPrecision::COMMONDX_PRECISION_F64));
// Sets fill mode for symmetric matrices
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_FILL_MODE, cusolverdxFillMode::CUSOLVERDX_FILL_MODE_LOWER));
// Compute capability to target
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_SM, 800));
// COMMONDX_OPTION_SYMBOL_NAME indicates the required name for the device function.
LIBMATHDX_CHECK(cusolverdxSetOptionStr(h, commondxOption::COMMONDX_OPTION_SYMBOL_NAME, "my_solver"));
/**
* Compile the device function
*/
commondxCode code;
LIBMATHDX_CHECK(commondxCreateCode(&code));
// Specify arch to compile to
LIBMATHDX_CHECK(commondxSetCodeOptionInt64(code, COMMONDX_OPTION_TARGET_SM, 800ll));
LIBMATHDX_CHECK(cusolverdxFinalizeCode(code, h));
size_t lto_size = 0;
LIBMATHDX_CHECK(commondxGetCodeLTOIRSize(code, <o_size));
std::vector<char> lto(lto_size);
LIBMATHDX_CHECK(commondxGetCodeLTOIR(code, lto.size(), lto.data()));
LIBMATHDX_CHECK(commondxDestroyCode(code));
/**
* Query the universal cuSOLVERDx fatbin
*/
size_t fatbin_size = 0;
LIBMATHDX_CHECK(cusolverdxGetUniversalFATBINSize(h, &fatbin_size));
std::vector<char> fatbin(fatbin_size);
LIBMATHDX_CHECK(cusolverdxGetUniversalFATBIN(h, fatbin.size(), fatbin.data()));
printf("Successfully generated LTOIR, %zu bytes for POTRF of size %d; universal fatbin %zu bytes\n",
lto_size,
(int)size[0],
fatbin_size);
LIBMATHDX_CHECK(cusolverdxDestroyDescriptor(h));
}
cuSolverDx cholesky solve example#
/*
* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <libcusolverdx.h>
#include <nvrtc.h>
#include <vector>
#include "common_examples.hpp"
#include "macros.hpp"
using namespace examples;
int main() {
long long int size[1] = { 64 };
long long int block_dim[3] = { 256, 1, 1 };
/**
* Create a descriptor
* This is equivalent to `using SOLVER = ...` in cuSOLVERDx C++
*/
cusolverdxDescriptor h { 0 };
LIBMATHDX_CHECK(cusolverdxCreateDescriptor(&h));
// Sets problem size
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64s(h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_SIZE, 1, size));
// CUSOLVERDX_OPERATOR_BLOCK_DIM indicates the block dimension
LIBMATHDX_CHECK(
cusolverdxSetOperatorInt64s(h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_BLOCK_DIM, 3, block_dim));
// CUSOLVERDX_TYPE_REAL means the inputs contain real type data
// CUSOLVERDX_TYPE_COMPLEX would be for inputs with complex type data
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_TYPE, cusolverdxType::CUSOLVERDX_TYPE_REAL));
// CUSOLVERDX_API_SMEM means that inputs are in smem
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_API, cusolverdxApi::CUSOLVERDX_API_SMEM));
// Location of the non zeroes
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_FILL_MODE, cusolverdxFillMode::CUSOLVERDX_FILL_MODE_LOWER));
// This means we generate a solver based on picked algorithm ("POTRS")
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_FUNCTION, cusolverdxFunction::CUSOLVERDX_FUNCTION_POTRS));
// COMMONDX_EXECUTION_BLOCK means multiple threads in a block participate in the solver
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_EXECUTION, commondxExecution::COMMONDX_EXECUTION_BLOCK));
// COMMONDX_PRECISION_F32 for single precision
// COMMONDX_PRECISION_F64 for double precision
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_PRECISION, commondxPrecision::COMMONDX_PRECISION_F32));
// Compute capability to target
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_SM, 800));
// COMMONDX_OPTION_SYMBOL_NAME indicates the required name for the device function.
LIBMATHDX_CHECK(cusolverdxSetOptionStr(h, commondxOption::COMMONDX_OPTION_SYMBOL_NAME, "my_potrs"));
/**
* Compile the device function
*/
commondxCode code;
LIBMATHDX_CHECK(commondxCreateCode(&code));
// Specify arch to compile to
LIBMATHDX_CHECK(commondxSetCodeOptionInt64(code, COMMONDX_OPTION_TARGET_SM, 800ll));
LIBMATHDX_CHECK(cusolverdxFinalizeCode(code, h));
size_t lto_size = 0;
LIBMATHDX_CHECK(commondxGetCodeLTOIRSize(code, <o_size));
std::vector<char> lto(lto_size);
LIBMATHDX_CHECK(commondxGetCodeLTOIR(code, lto.size(), lto.data()));
LIBMATHDX_CHECK(commondxDestroyCode(code));
/**
* Query the universal cuSOLVERDx fatbin
*/
size_t fatbin_size = 0;
LIBMATHDX_CHECK(cusolverdxGetUniversalFATBINSize(h, &fatbin_size));
std::vector<char> fatbin(fatbin_size);
LIBMATHDX_CHECK(cusolverdxGetUniversalFATBIN(h, fatbin.size(), fatbin.data()));
printf("Successfully generated LTOIR, %zu bytes for POTRS of size %d; universal fatbin %zu bytes\n",
lto_size,
(int)size[0],
fatbin_size);
// How much workspace (in scalar elements) does the function need?
long long int workspace_size = 0;
LIBMATHDX_CHECK(cusolverdxGetTraitInt64(h, cusolverdxTraitType::CUSOLVERDX_TRAIT_WORKSPACE_SIZE, &workspace_size));
printf("Function requires %lld workspace elements\n", workspace_size);
LIBMATHDX_CHECK(cusolverdxDestroyDescriptor(h));
}
cuSolverDx triangular solve example#
/*
* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <libcusolverdx.h>
#include <nvrtc.h>
#include <vector>
#include "common_examples.hpp"
#include "macros.hpp"
using namespace examples;
int main() {
long long int size[3] = { 64, 64, 32 };
long long int block_dim[3] = { 256, 1, 1 };
/**
* Create a descriptor
* This is equivalent to `using SOLVER = ...` in cuSOLVERDx C++
*/
cusolverdxDescriptor h { 0 };
LIBMATHDX_CHECK(cusolverdxCreateDescriptor(&h));
// Sets problem size
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64s(h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_SIZE, 3, size));
// CUSOLVERDX_OPERATOR_BLOCK_DIM indicates the block dimension
LIBMATHDX_CHECK(
cusolverdxSetOperatorInt64s(h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_BLOCK_DIM, 3, block_dim));
// CUSOLVERDX_TYPE_REAL means the inputs contain real type data
// CUSOLVERDX_TYPE_COMPLEX would be for inputs with complex type data
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_TYPE, cusolverdxType::CUSOLVERDX_TYPE_REAL));
// CUSOLVERDX_API_SMEM means that inputs are in smem
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_API, cusolverdxApi::CUSOLVERDX_API_SMEM));
// Location of the non zeroes
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_FILL_MODE, cusolverdxFillMode::CUSOLVERDX_FILL_MODE_LOWER));
// Location of the triangular matrix
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_SIDE, cusolverdxSide::CUSOLVERDX_SIDE_LEFT));
// Diagonal of the triangular matrix
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_DIAG, cusolverdxDiag::CUSOLVERDX_DIAG_NON_UNIT));
// This means we generate a triangular-solve matrix, aka L^1 A or U^1 A, where A is a matrix and L/U are triangular
// matrices ("TRSM")
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_FUNCTION, cusolverdxFunction::CUSOLVERDX_FUNCTION_TRSM));
// COMMONDX_EXECUTION_BLOCK means multiple threads in a block participate in the solver
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_EXECUTION, commondxExecution::COMMONDX_EXECUTION_BLOCK));
// COMMONDX_PRECISION_F32 for single precision
// COMMONDX_PRECISION_F64 for double precision
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(
h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_PRECISION, commondxPrecision::COMMONDX_PRECISION_F32));
// Compute capability to target
LIBMATHDX_CHECK(cusolverdxSetOperatorInt64(h, cusolverdxOperatorType::CUSOLVERDX_OPERATOR_SM, 900));
// COMMONDX_OPTION_SYMBOL_NAME indicates the required name for the device function.
LIBMATHDX_CHECK(cusolverdxSetOptionStr(h, commondxOption::COMMONDX_OPTION_SYMBOL_NAME, "my_trsm"));
/**
* Compile the device function
*/
commondxCode code;
LIBMATHDX_CHECK(commondxCreateCode(&code));
// Specify arch to compile to
LIBMATHDX_CHECK(commondxSetCodeOptionInt64(code, COMMONDX_OPTION_TARGET_SM, 900));
LIBMATHDX_CHECK(cusolverdxFinalizeCode(code, h));
size_t lto_size = 0;
LIBMATHDX_CHECK(commondxGetCodeLTOIRSize(code, <o_size));
std::vector<char> lto(lto_size);
LIBMATHDX_CHECK(commondxGetCodeLTOIR(code, lto.size(), lto.data()));
LIBMATHDX_CHECK(commondxDestroyCode(code));
/**
* Query the universal cuSOLVERDx fatbin
*/
size_t fatbin_size = 0;
LIBMATHDX_CHECK(cusolverdxGetUniversalFATBINSize(h, &fatbin_size));
std::vector<char> fatbin(fatbin_size);
LIBMATHDX_CHECK(cusolverdxGetUniversalFATBIN(h, fatbin.size(), fatbin.data()));
printf("Successfully generated LTOIR, %zu bytes for TRSM %dx%dx%d; universal fatbin %zu bytes\n",
lto_size,
(int)size[0],
(int)size[1],
(int)size[2],
fatbin_size);
// How much workspace (in scalar elements) does the function need?
long long int workspace_size = 0;
LIBMATHDX_CHECK(cusolverdxGetTraitInt64(h, cusolverdxTraitType::CUSOLVERDX_TRAIT_WORKSPACE_SIZE, &workspace_size));
printf("Function requires %lld workspace elements\n", workspace_size);
LIBMATHDX_CHECK(cusolverdxDestroyDescriptor(h));
}
API reference#
-
typedef long long int cusolverdxDescriptor#
A cuSOLVERDx descriptor.
Equivalent to
using SOLVER = ...in cuSOLVERDx C++.
-
enum cusolverdxApi_t#
Type of cusolverdx API.
Values:
-
enumerator CUSOLVERDX_API_SMEM#
Input-output is in shared memory. Function signatures are defined by cusolverdxFunction_t. Leading dimensions are fixed at compile time based on problem size or provided operator. Functions are
extern "C"and the symbol name can be queried using CUSOLVERDX_TRAIT_SYMBOL_NAME.
-
enumerator CUSOLVERDX_API_SMEM_DYNAMIC_LD#
Input-output is in shared memory with dynamic leading dimensions. Function signatures are defined by cusolverdxFunction_t. Leading dimensions are passed as pointers to unsigned 32b integers (
unsigned*) at runtime. Functions areextern "C"and the symbol name can be queried using CUSOLVERDX_TRAIT_SYMBOL_NAME.
-
enumerator CUSOLVERDX_API_SMEM#
-
enum cusolverdxType_t#
Type of input values.
Values:
-
enumerator CUSOLVERDX_TYPE_REAL#
Input and output is real
-
enumerator CUSOLVERDX_TYPE_COMPLEX#
Input and output are complex
-
enumerator CUSOLVERDX_TYPE_REAL#
-
enum cusolverdxFunction_t#
Type of device function.
The function signatures depend on the selected cusolverdxApi_t :
For CUSOLVERDX_API_SMEM : Leading dimensions are fixed at compile time.
For CUSOLVERDX_API_SMEM_DYNAMIC_LD : Leading dimensions are passed as pointers to
unsignedat runtime.
Type definitions used in function signatures:
value_type: The value type determined by CUSOLVERDX_OPERATOR_TYPE and CUSOLVERDX_OPERATOR_PRECISION. For real types:floatordouble. For complex types:cuFloatComplexorcuDoubleComplex.status_type: A signed 32b integer (int) used to return status information.
All functions are
extern "C"and the symbol name can be queried using CUSOLVERDX_TRAIT_SYMBOL_NAME.Values:
-
enumerator CUSOLVERDX_FUNCTION_GETRF_NO_PIVOT#
LU without pivoting factorization See cuSOLVERDx LU factorization for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/getrf.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, status_type* info)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, status_type* info)
-
enumerator CUSOLVERDX_FUNCTION_GETRS_NO_PIVOT#
LU without pivoting solve See cuSOLVERDx LU solve for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/getrs.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, value_type* B)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, value_type* B, unsigned* ldb)
-
enumerator CUSOLVERDX_FUNCTION_POTRF#
Cholesky factorization See cuSOLVERDx Cholesky factorization for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/potrf.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, status_type* info)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, status_type* info)
-
enumerator CUSOLVERDX_FUNCTION_POTRS#
Cholesky solve See cuSOLVERDx Cholesky solve for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/potrs.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, value_type* B)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, value_type* B, unsigned* ldb)
-
enumerator CUSOLVERDX_FUNCTION_TRSM#
Triangular-solve with matrix right hand size See cuSOLVERDx documentation for more details (https://docs.nvidia.com/cuda/cusolverdx/)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, value_type* B)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, value_type* B, unsigned* ldb)
-
enumerator CUSOLVERDX_FUNCTION_GETRF_PARTIAL_PIVOT#
LU with partial pivoting factorization See cuSOLVERDx LU factorization for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/getrf.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, int* ipiv, status_type* info)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, int* ipiv, status_type* info)
-
enumerator CUSOLVERDX_FUNCTION_GETRS_PARTIAL_PIVOT#
LU with partial pivoting solve See cuSOLVERDx LU solve for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/getrs.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, int* ipiv, value_type* B)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, int* ipiv, value_type* B, unsigned* ldb)
-
enumerator CUSOLVERDX_FUNCTION_GEQRF#
QR Factorization See cuSOLVERDx QR factorize for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/geqrf.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, value_type* tau)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, value_type* tau)
-
enumerator CUSOLVERDX_FUNCTION_UNMQR#
Multiplication of Q From QR Factorization See cuSOLVERDx QR multiplication for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/unmqr.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, value_type* tau, value_type* C)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, value_type* tau, value_type* C, unsigned* ldc)
-
enumerator CUSOLVERDX_FUNCTION_GELQF#
LQ Factorization See cuSOLVERDx LQ factorize for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/gelqf.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, value_type* tau)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, value_type* tau)
-
enumerator CUSOLVERDX_FUNCTION_UNMLQ#
Multiplication of Q From LQ Factorization See cuSOLVERDx LQ multiplication for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/unmlq.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, value_type* tau, value_type* C)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, value_type* tau, value_type* C, unsigned* ldc)
-
enumerator CUSOLVERDX_FUNCTION_POSV#
Cholesky factorize and solve See cuSOLVERDx Cholesky solve for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/posv.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, value_type* B, status_type* info)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, value_type* B, unsigned* ldb, status_type* info)
-
enumerator CUSOLVERDX_FUNCTION_GESV_NO_PIVOT#
LU without pivoting factorize and solve See cuSOLVERDx LU solve for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/gesv.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, value_type* B, status_type* info)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, value_type* B, unsigned* ldb, status_type* info)
-
enumerator CUSOLVERDX_FUNCTION_GESV_PARTIAL_PIVOT#
LU with partial pivoting factorize and solve See cuSOLVERDx LU solve for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/gesv.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, int* ipiv, value_type* B, status_type* info)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, int* ipiv, value_type* B, unsigned* ldb, status_type* info)
-
enumerator CUSOLVERDX_FUNCTION_GELS#
Generalized Linear System Solver See cuSOLVERDx Generalized Linear System Solver for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/gels.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, value_type* tau, value_type* B)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, value_type* tau, value_type* B, unsigned* ldb)
-
enumerator CUSOLVERDX_FUNCTION_UNGQR#
Matrix Q Generation from QR Factorization See cuSOLVERDx Generalized Linear System Solver for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/functions/ungqr.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, value_type* tau)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, value_type* tau)
-
enumerator CUSOLVERDX_FUNCTION_UNGLQ#
Matrix Q Generation from LQ Factorization See cuSOLVERDx UNitary matrix Generation after LQ factorization for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/functions/unglq.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* A, value_type* tau)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* A, unsigned* lda, value_type* tau)
-
enumerator CUSOLVERDX_FUNCTION_GTSV_NO_PIVOT#
Solve General Tridiagonal System of Equations See cuSOLVERDx General Tridiagonal system SolVe for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/functions/gtsv.html)
Function signature for CUSOLVERDX_API_SMEM :
void (const value_type* dl, const value_type* d, const value_type* du, value_type* B, status_type* info)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (const value_type* dl, const value_type* d, const value_type* du, value_type* B, unsigned* ldb, status_type* info)
-
enumerator CUSOLVERDX_FUNCTION_HTEV#
Eigenvalue Solver for Symmetric or Hermitian Tridiagonal Matrix See cuSOLVERDx symmetric or Hermitian Tridiagonal EigenValues Solver for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/functions/htev.html)
Function signature for CUSOLVERDX_API_SMEM : When CUSOLVERDX_OPERATOR_JOB is CUSOLVERDX_JOB_NO_VECTORS :
void (value_type* smem_d, value_type* smem_e, status_type* info)Otherwise:void (value_type* smem_d, value_type* smem_e, value_type* smem_v, status_type* info)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* smem_d, value_type* smem_e, value_type* smem_v, unsigned int* ldv, status_type* info)Note: Dynamic LD is supported only for eigenvector calculation (CUSOLVERDX_OPERATOR_JOB in {CUSOLVERDX_JOB_ALL_VECTORS, CUSOLVERDX_JOB_MULTIPLY_VECTORS}).
-
enumerator CUSOLVERDX_FUNCTION_HEEV#
Eigenvalue Solver for Symmetric or Hermitian Matrix See cuSOLVERDx symmetric or HErmitian EigenValue Solver for more details (https://docs.nvidia.com/cuda/cusolverdx/get_started/functions/heev.html)
Function signature for CUSOLVERDX_API_SMEM :
void (value_type* smem_a, value_type* smem_lambda, value_type* workspace, status_type* info)Function signature for CUSOLVERDX_API_SMEM_DYNAMIC_LD :
void (value_type* smem_a, unsigned int* lda, value_type* smem_lambda, value_type* workspace, status_type* info)
-
enum cusolverdxArrangement_t#
Data arrangement mode.
Defines data arrangements in tensors’ taking part in the calculation.
Values:
-
enumerator CUSOLVERDX_ARRANGEMENT_COL_MAJOR#
Input and output are column major
-
enumerator CUSOLVERDX_ARRANGEMENT_ROW_MAJOR#
Input and output are row major
-
enumerator CUSOLVERDX_ARRANGEMENT_COL_MAJOR#
-
enum cusolverdxFillMode_t#
Tensor fill mode.
For symmetric matrix the fill mode can be upper or lower triangular
Values:
-
enumerator CUSOLVERDX_FILL_MODE_UPPER#
Upper-triangular
-
enumerator CUSOLVERDX_FILL_MODE_LOWER#
Lower-triangular
-
enumerator CUSOLVERDX_FILL_MODE_UPPER#
-
enum cusolverdxDiag_t#
Diag operator.
Indicates whether the matrix diagonal is unit (all ones) or non-unit.
Values:
-
enumerator CUSOLVERDX_DIAG_UNIT#
Unit diagonal
-
enumerator CUSOLVERDX_DIAG_NON_UNIT#
Non unit diagonal
-
enumerator CUSOLVERDX_DIAG_UNIT#
-
enum cusolverdxSide_t#
Side operator.
Indicates which side an operator is applied from in operations such as matrix multiplication.
Values:
-
enumerator CUSOLVERDX_SIDE_LEFT#
Left side
-
enumerator CUSOLVERDX_SIDE_RIGHT#
Right side
-
enumerator CUSOLVERDX_SIDE_LEFT#
-
enum cusolverdxTransposeMode_t#
Transpose mode.
Indicates inputs or outputs must be considered transposed.
Values:
-
enumerator CUSOLVERDX_TRANSPOSE_MODE_NON_TRANSPOSED#
Use matrix as-is in the operation
-
enumerator CUSOLVERDX_TRANSPOSE_MODE_TRANSPOSED#
Use transposed matrix in the operation
-
enumerator CUSOLVERDX_TRANSPOSE_MODE_CONJ_TRANSPOSED#
Use transposed and conjugate matrix in the operation
-
enumerator CUSOLVERDX_TRANSPOSE_MODE_NON_TRANSPOSED#
-
enum cusolverdxJob_t#
Job operator.
Specifies whether and how eigenvectors are computed and stored in eigenvalue operations.
Values:
-
enumerator CUSOLVERDX_JOB_NO_VECTORS#
Don’t compute any eigenvectors
-
enumerator CUSOLVERDX_JOB_ALL_VECTORS#
Compute all eigenvectors in a seperate storage array
-
enumerator CUSOLVERDX_JOB_MULTIPLY_VECTORS#
Compute all eigenvectors an multiply them to the existing array content
-
enumerator CUSOLVERDX_JOB_OVERWRITE_VECTORS#
Compute eigenvectors and overwrite the input A matrix
-
enumerator CUSOLVERDX_JOB_NO_VECTORS#
-
enum cusolverdxOperatorType_t#
Operators.
The set of supported cusolverDx operators.
Values:
-
enumerator CUSOLVERDX_OPERATOR_SIZE#
Operator data type: long long int * 1 or long long int * 2 or long long int * 3. See https://docs.nvidia.com/cuda/cusolverdx/api/description_ops.html#size-operator. Expected content:
<M>or<M, N>or<M, N, K>problem sizes. Operator definition: required
-
enumerator CUSOLVERDX_OPERATOR_TYPE#
Operator data type: cusolverdxType_t. Operator definition: required
-
enumerator CUSOLVERDX_OPERATOR_PRECISION#
Operator data type: commondxPrecision_t. Operator definition: required
-
enumerator CUSOLVERDX_OPERATOR_SM#
Operator data type: long long int. Expected content: 700 (Volta), 800 (Ampere), …, Operator definition: required
-
enumerator CUSOLVERDX_OPERATOR_EXECUTION#
Operator data type: commondxExecution_t. Operator definition: required
-
enumerator CUSOLVERDX_OPERATOR_BLOCK_DIM#
Operator data type: long long * 3. Expected content: <x, y, z> block dimensions. Operator definition: optional
-
enumerator CUSOLVERDX_OPERATOR_API#
Operator data type: cusolverdxApi_t. Operator definition: required
-
enumerator CUSOLVERDX_OPERATOR_FUNCTION#
Operator data type: cusolverdxFunction_t. Operator definition: required
-
enumerator CUSOLVERDX_OPERATOR_ARRANGEMENT#
Operator data type: cusolverdxArrangement_t. Operator definition: optional
-
enumerator CUSOLVERDX_OPERATOR_FILL_MODE#
Operator data type: cusolverdxFillMode_t. Operator definition: optional
-
enumerator CUSOLVERDX_OPERATOR_SIDE#
Operator data type: cusolverdxSide_t. Operator definition: optional
-
enumerator CUSOLVERDX_OPERATOR_DIAG#
Operator data type: cusolverdxDiag_t. Operator definition: optional
-
enumerator CUSOLVERDX_OPERATOR_TRANSPOSE_MODE#
Operator data type: cusolverdxTransposeMode_t. Operator definition: optional
-
enumerator CUSOLVERDX_OPERATOR_LEADING_DIMENSION#
Operator data type: long long. Expected content: <lda, ldb, …>. Operator definition: optional
-
enumerator CUSOLVERDX_OPERATOR_BATCHES_PER_BLOCK#
Operator data type: long long. Operator definition: optional
-
enumerator CUSOLVERDX_OPERATOR_JOB#
Operator data type: cusolverdxJob_t. Operator definition: optional
-
enumerator CUSOLVERDX_OPERATOR_SIZE#
-
enum cusolverdxTraitType_t#
Traits.
The set of supported types of traits that can be accessed from finalized sources that use cusolverdx.
Values:
-
enumerator CUSOLVERDX_TRAIT_SYMBOL_NAME#
Trait data type: C-string Value: symbol (device function) name.
-
enumerator CUSOLVERDX_TRAIT_BLOCK_DIM#
Trait data type: long long int * 3. Expected content: <x, y, z> block dimensions
-
enumerator CUSOLVERDX_TRAIT_SUGGESTED_BLOCK_DIM#
Trait data type: long long int * 3. Expected content: <x, y, z> suggested block dimension
-
enumerator CUSOLVERDX_TRAIT_SUGGESTED_BATCHES_PER_BLOCK#
Trait data type: long long int. Value: suggested batches per block
-
enumerator CUSOLVERDX_TRAIT_WORKSPACE_SIZE#
Trait data type: long long int. Value: workspace memory size, in bytes.
-
enumerator CUSOLVERDX_TRAIT_SYMBOL_NAME#
- commondxStatusType cusolverdxGetVersion(
- int *major,
- int *minor,
- int *patch
Returns the major.minor.patch version of cuSolverDx.
- Parameters:
major – [out] The major version
minor – [out] The minor version
patch – [out] The patch version
- Returns:
COMMONDX_SUCCESS
- commondxStatusType cusolverdxCreateDescriptor(
- cusolverdxDescriptor *handle
Creates a cuSOLVERDx descriptor.
- Parameters:
handle – [inout] A pointer to a descriptor handle. As output, an initialized cuSOLVERDx descriptor
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxSetOptionStr(
- cusolverdxDescriptor handle,
- commondxOption opt,
- const char *value
Sets a C-string option on a cuSOLVERDx descriptor.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor
opt – [in] The option to set
value – [in] The value for the option
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxSetOptionStrs(
- cusolverdxDescriptor handle,
- commondxOption opt,
- size_t count,
- const char **values
Sets one or more C-string option on a cuSOLVERDx descriptor.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor .
opt – [in] The option to set.
count – [in] The number of options.
values – [in] An array of
countC-strings.
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxSetOperatorInt64(
- cusolverdxDescriptor handle,
- cusolverdxOperatorType op,
- long long int value
Sets an integer operator on a cuSOLVERDx descriptor.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor
op – [in] The operator to set.
value – [in] A value for the operator
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxSetOperatorInt64s(
- cusolverdxDescriptor handle,
- cusolverdxOperatorType op,
- size_t count,
- const long long int *array
Sets a integer array operator on a cuSOLVERDx descriptor.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor
op – [in] The operator to set
count – [in] The number of entries in the array value, as indicated in the cusolverdxOperatorType_t documentation.
array – [in] A pointer to at least count integers, the array operator to set
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxGetLTOIRSize(
- cusolverdxDescriptor handle,
- size_t *lto_size
Extract the size of the LTOIR for a cuSOLVERDx descriptor.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor
lto_size – [out] As output, the size of the LTOIR
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxGetLTOIR(
- cusolverdxDescriptor handle,
- size_t size,
- void *lto
Extract the LTOIR from a cuSOLVERDx descriptor.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor
size – [in] The LTOIR size, output of cusolverdxGetLTOIRSize
lto – [out] The buffer contains the LTOIR
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxGetUniversalFATBINSize(
- cusolverdxDescriptor handle,
- size_t *fatbin_size
Returns the size of the universal fatbin for cuSOLVERDx.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor
fatbin_size – [out] The size of the fatbin, in bytes
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxGetUniversalFATBIN(
- cusolverdxDescriptor handle,
- size_t fatbin_size,
- void *fatbin
Returns a universal fatbin for cuSOLVERDx.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor
fatbin_size – [in] The size of the fatbin, output from cusolverdxGetUniversalFATBINSize
fatbin – [out] The universal fatbin. Must pointer to at least
fatbin_sizebytes.
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxGetTraitStrSize(
- cusolverdxDescriptor handle,
- cusolverdxTraitType trait,
- size_t *size
Returns the size of a C-string trait value.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor
trait – [in] A trait to query the descriptor for
size – [out] The size of the C-string value for the trait (including the
\0)
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxGetTraitStr(
- cusolverdxDescriptor handle,
- cusolverdxTraitType trait,
- size_t size,
- char *value
Returns a C-string trait value.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor
trait – [in] A trait to query the descriptor for
size – [in] The size of the C-string, output from cusolverdxGetTraitStrSize
value – [out] The C-string trait value
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxGetTraitInt64(
- cusolverdxDescriptor handle,
- cusolverdxTraitType trait,
- long long int *value
Returns an integer trait value.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor
trait – [in] A trait to query the descriptor for
value – [out] The trait value
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxGetTraitInt64s(
- cusolverdxDescriptor handle,
- cusolverdxTraitType trait,
- size_t count,
- long long int *values
Returns an integer array trait value.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor .
trait – [in] A trait to query the descriptor for.
count – [in] The size of the array to retrieve.
values – [out] The trait values. Must point to an array of
countvalues.
- Returns:
COMMONDX_SUCCESSon success, or an error code.
-
const char *cusolverdxOperatorTypeToStr(cusolverdxOperatorType op)#
Converts an operator enum to a human readable C-string.
- Parameters:
op – [in] An operator enum
- Returns:
A human readable C-string
-
const char *cusolverdxTraitTypeToStr(cusolverdxTraitType trait)#
Converts a trait enum to a human readable C-string.
- Parameters:
trait – [in] A trait enum
- Returns:
A human readable C-string
- commondxStatusType cusolverdxFinalizeCode(
- commondxCode code,
- cusolverdxDescriptor handle
Fills a code handle with the descriptor’s device function code.
- Parameters:
code – [out] A code handle
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor
- Returns:
COMMONDX_SUCCESSon success, or an error code.
- commondxStatusType cusolverdxDestroyDescriptor(
- cusolverdxDescriptor handle
Destroys a cuSOLVERDx descriptor.
- Parameters:
handle – [in] A cuSOLVERDx descriptor, output of cusolverdxCreateDescriptor
- Returns:
COMMONDX_SUCCESSon success, or an error code.
-
const char *cusolverdxFunctionToStr(cusolverdxFunction function)#
Convert a function enum to a human readable C-string.
- Parameters:
function – [in] The function enum to convert
- Returns:
The C-string
-
const char *cusolverdxFillModeToStr(cusolverdxFillMode mode)#
Convert a fill mode enum to a human readable C-string.
- Parameters:
mode – [in] The fill mode enum to convert
- Returns:
The C-string
-
const char *cusolverdxApiToStr(cusolverdxApi api)#
Convert an api enum to a human readable C-string.
- Parameters:
api – [in] The api enum to convert
- Returns:
A human readable The C-string
-
const char *cusolverdxTypeToStr(cusolverdxType type)#
Convert a type enum to a human readable C-string.
- Parameters:
type – [in] The type enum to convert
- Returns:
The C-string
- const char *cusolverdxArrangementToStr(
- cusolverdxArrangement arrangement
Convert an arrangement enum to a human readable C-string.
- Parameters:
arrangement – [in] The arrangement enum to convert
- Returns:
The C-string
-
const char *cusolverdxDiagToStr(cusolverdxDiag diag)#
Convert a diag enum to a human readable C-string.
- Parameters:
diag – [in] The diag enum to convert
- Returns:
A human readable The C-string
-
const char *cusolverdxSideToStr(cusolverdxSide side)#
Convert a side enum to a human readable C-string.
- Parameters:
side – [in] The side enum to convert
- Returns:
A human readable The C-string
- const char *cusolverdxTransposeModeToStr(
- cusolverdxTransposeMode transpose_mode
Convert a transpose_mode enum to a human readable C-string.
- Parameters:
transpose_mode – [in] The transpose_mode enum to convert
- Returns:
The C-string
-
const char *cusolverdxJobToStr(cusolverdxJob job)#
Convert a job enum to a human readable C-string.
- Parameters:
job – [in] The job enum to convert
- Returns:
A human readable C-string