cuDensityMat 数据类型¶
cudensitymatHandle_t
¶
-
typedef void *cudensitymatHandle_t¶
不透明数据结构,用于保存库上下文(上下文句柄)。
此句柄保存库上下文(设备属性、系统信息等)。句柄必须分别使用 cudensitymatCreate() 和 cudensitymatDestroy() 函数进行初始化和销毁。
cudensitymatStatus_t
¶
-
enum cudensitymatStatus_t¶
库 API 函数的返回状态。
所有库 API 函数都返回一个状态,该状态可以取以下值之一。
值
-
enumerator CUDENSITYMAT_STATUS_SUCCESS = 0¶
操作已成功完成。
-
enumerator CUDENSITYMAT_STATUS_NOT_INITIALIZED = 1¶
库未初始化。
-
enumerator CUDENSITYMAT_STATUS_ALLOC_FAILED = 3¶
库内部资源分配失败。
-
enumerator CUDENSITYMAT_STATUS_INVALID_VALUE = 7¶
向函数传递了无效的参数值(通常表示用户错误)。
-
enumerator CUDENSITYMAT_STATUS_ARCH_MISMATCH = 8¶
GPU 设备未准备好或不支持目标架构。
-
enumerator CUDENSITYMAT_STATUS_EXECUTION_FAILED = 13¶
GPU 程序执行失败。这通常是由 GPU 上的 CUDA 内核启动失败引起的。
-
enumerator CUDENSITYMAT_STATUS_INTERNAL_ERROR = 14¶
发生了内部库错误。
-
enumerator CUDENSITYMAT_STATUS_NOT_SUPPORTED = 15¶
请求的操作不受支持。
-
enumerator CUDENSITYMAT_STATUS_CALLBACK_ERROR = 16¶
用户回调函数内部发生错误。
-
enumerator CUDENSITYMAT_STATUS_CUBLAS_ERROR = 17¶
调用 cuBLAS 库失败。
-
enumerator CUDENSITYMAT_STATUS_CUDA_ERROR = 18¶
发生未知 CUDA 错误。
-
enumerator CUDENSITYMAT_STATUS_INSUFFICIENT_WORKSPACE = 19¶
提供的工作空间缓冲区不足。
-
enumerator CUDENSITYMAT_STATUS_INSUFFICIENT_DRIVER = 20¶
CUDA 驱动程序版本不足。
-
enumerator CUDENSITYMAT_STATUS_IO_ERROR = 21¶
文件 I/O 期间发生错误。
-
enumerator CUDENSITYMAT_STATUS_CUTENSOR_VERSION_MISMATCH = 22¶
动态链接的 cuTENSOR 库不兼容。
-
enumerator CUDENSITYMAT_STATUS_NO_DEVICE_ALLOCATOR = 23¶
请求从内存池中提取 GPU 设备内存,但尚未设置内存池。
-
enumerator CUDENSITYMAT_STATUS_CUTENSOR_ERROR = 24¶
调用 cuTENSOR 库失败。
-
enumerator CUDENSITYMAT_STATUS_CUDMLVER_ERROR = 25¶
调用 cuSOLVER 库失败。
-
enumerator CUDENSITYMAT_STATUS_DEVICE_ALLOCATOR_ERROR = 26¶
GPU 设备内存池操作失败。
-
enumerator CUDENSITYMAT_STATUS_DISTRIBUTED_FAILURE = 27¶
分布式通信服务失败。
-
enumerator CUDENSITYMAT_STATUS_INTERRUPTED = 28¶
操作被用户中断,无法恢复或完成。
-
enumerator CUDENSITYMAT_STATUS_CUTENSORNET_ERROR = 29¶
调用 cuTensorNet 库失败。
-
enumerator CUDENSITYMAT_STATUS_SUCCESS = 0¶
cudensitymatComputeType_t
¶
-
enum cudensitymatComputeType_t¶
支持的计算类型。
值
-
enumerator CUDENSITYMAT_COMPUTE_64F = (1U << 4U)¶
-
enumerator CUDENSITYMAT_COMPUTE_32F = (1U << 2U)¶
-
enumerator CUDENSITYMAT_COMPUTE_64F = (1U << 4U)¶
cudensitymatDistributedProvider_t
¶
-
enum cudensitymatDistributedProvider_t¶
分布式通信服务的支持提供商。
值
-
enumerator CUDENSITYMAT_DISTRIBUTED_PROVIDER_NONE = 0¶
无通信服务提供程序(单 GPU 执行)
-
enumerator CUDENSITYMAT_DISTRIBUTED_PROVIDER_MPI = 1¶
MPI 通信服务。
-
enumerator CUDENSITYMAT_DISTRIBUTED_PROVIDER_NCCL = 2¶
NCCL 通信服务(可能也需要 MPI)
-
enumerator CUDENSITYMAT_DISTRIBUTED_PROVIDER_NVSHMEM = 3¶
NVSHMEM 通信服务。
-
enumerator CUDENSITYMAT_DISTRIBUTED_PROVIDER_NONE = 0¶
cudensitymatDistributedCommunicator_t
¶
-
struct cudensitymatDistributedCommunicator_t¶
用于以类型擦除形式存储 MPI 通信器的显式数据结构。
cudensitymatWorkspaceDescriptor_t
¶
-
typedef void *cudensitymatWorkspaceDescriptor_t¶
描述工作区缓冲区的不透明数据结构。
cudensitymatMemspace_t
¶
-
enum cudensitymatMemspace_t¶
用于工作区缓冲区分配的内存空间。
值
-
enumerator CUDENSITYMAT_MEMSPACE_DEVICE = 0¶
设备内存空间。
-
enumerator CUDENSITYMAT_MEMSPACE_HOST = 1¶
主机内存空间。
-
enumerator CUDENSITYMAT_MEMSPACE_DEVICE = 0¶
cudensitymatWorkspaceKind_t
¶
-
enum cudensitymatWorkspaceKind_t¶
工作区缓冲区的种类。
值
-
enumerator CUDENSITYMAT_WORKSPACE_SCRATCH = 0¶
暂存工作区内存。
-
enumerator CUDENSITYMAT_WORKSPACE_SCRATCH = 0¶
cudensitymatState_t
¶
-
typedef void *cudensitymatState_t¶
保存量子态表示的不透明数据结构。
量子态由其纯度(纯态或混合态)、形状(所有量子自由度的规范)、数值表示(张量或矩阵)、结构压缩(张量网络或本征分解)、显式对称性(如果有)等定义。
注意
每个量子自由度都由某个维度的向量空间表示。完整的量子态存在于由与量子自由度相关的向量空间构建的张量积空间中。此外,可以通过将完整的量子态空间投影到较低维度的子空间来引入投影量子态。
cudensitymatStatePurity_t
¶
-
enum cudensitymatStatePurity_t¶
量子态纯度(纯态或混合态)。
值
-
enumerator CUDENSITYMAT_STATE_PURITY_PURE¶
纯量子态。
-
enumerator CUDENSITYMAT_STATE_PURITY_MIXED = 1¶
混合量子态。
-
enumerator CUDENSITYMAT_STATE_PURITY_PURE¶
cudensitymatElementaryOperator_t
¶
-
typedef void *cudensitymatElementaryOperator_t¶
表示作用于单个或多个量子自由度的基本张量算符的不透明数据结构。
cudensitymatElementaryOperatorSparsity_t
¶
-
enum cudensitymatElementaryOperatorSparsity_t¶
基本算符稀疏性种类。
值
-
enumerator CUDENSITYMAT_OPERATOR_SPARSITY_NONE = 0¶
无稀疏性(稠密张量)
-
enumerator CUDENSITYMAT_OPERATOR_SPARSITY_MULTIDIAGONAL = 1¶
多对角线稀疏性(一个或多个对角线)
-
enumerator CUDENSITYMAT_OPERATOR_SPARSITY_NONE = 0¶
cudensitymatOperatorTerm_t
¶
-
typedef void *cudensitymatOperatorTerm_t¶
表示算符项的不透明数据结构,该算符项可以从混合量子态的任一侧(即,从右矢侧或左矢侧)作用于单个或多个量子自由度。对于纯量子态,它只能从一侧作用。
通常,算符项定义为各个张量算符乘积的总和,其中乘积中的每个单独的张量算符作用于不相交的量子自由度。总和可能包含一个或多个此类乘积,其中每个乘积可能由一个或多个张量算符组成。
cudensitymatOperator_t
¶
-
typedef void *cudensitymatOperator_t¶
表示复合算符(算符项的集合)的不透明数据结构,该复合算符可以从混合量子态的任一侧(即,从右矢侧或左矢侧)作用于单个或多个自由度。对于纯量子态,它只能从一侧作用。
此处的算符定义为一个或多个算符项的集合。
cudensitymatOperatorAction_t
¶
-
typedef void *cudensitymatOperatorAction_t¶
表示给定数量的算符对相应数量的输入量子态的集体作用的不透明数据结构,从而产生对单个输出量子态的更新(当执行实际计算时)。
此数据结构允许指定集体算符作用,其中算符和输入量子态在每个作用对中可能都不同。作用对定义为算符作用于输入量子态,从而为每个作用对生成对同一输出量子态的更新。
cudensitymatExpectation_t
¶
-
typedef void *cudensitymatExpectation_t¶
指定算符期望值计算的不透明数据结构。
此数据结构封装了给定的算符,它将能够计算给定量子态上的期望值。
cudensitymatScalarCallback_t
¶
-
typedef int32_t (*cudensitymatScalarCallback_t)(double time, int32_t numParams, const double params[], cudaDataType_t dataType, void *scalarStorage)¶
返回标量的外部回调函数。
可以将外部用户提供的标量回调函数注册到库中,以便在给定时间点延迟调用,并提供一些给定的实参数值。
- 参数
time – [in] 时间值。
numParams – [in] 外部实参数的数量。
params – [in] 实参数值数组。
dataType – [in] 返回标量的数据类型。
scalarStorage – [inout] 指向 CPU 可访问内存中标量存储的指针。
- 返回值
int32_t 错误代码。
cudensitymatTensorCallback_t
¶
-
typedef int32_t (*cudensitymatTensorCallback_t)(cudensitymatElementaryOperatorSparsity_t sparsity, int32_t numModes, const int64_t modeExtents[], const int32_t diagonalOffsets[], double time, int32_t numParams, const double params[], cudaDataType_t dataType, void *tensorStorage)¶
返回张量的外部回调函数。
可以将外部用户定义的张量回调函数注册到库中,以便在给定时间点延迟调用,并提供一些给定的实参数值。
注意
张量回调函数填充一个稠密数组,该数组表示具有特定稀疏性种类的基本张量算符
CUDENSITYMAT_OPERATOR_SPARSITY_NONE:返回的稠密数组与基本张量算符本身具有完全相同的形状;
CUDENSITYMAT_OPERATOR_SPARSITY_MULTIDIAGONAL:返回的稠密数组的形状为 [N,M],其中 N 是基本张量算符矩阵的维度,而 M 是该矩阵的非零对角线的数量,并用尾随零填充到完整矩阵维度。
- 参数
sparsity – [in] 基本张量算符稀疏性种类。
numModes – [in] 返回数据数组中的模式数。
modeExtents – [in] 返回数据数组中的模式范围。
diagonalOffsets – [in] 对于 CUDENSITYMAT_OPERATOR_SPARSITY_MULTIDIAGONAL,存储的基本张量算符矩阵的非零对角线的偏移量:主对角线的偏移量为零,主对角线以下的对角线的偏移量为负,主对角线以上的对角线的偏移量为正。对于 CUDENSITYMAT_OPERATOR_SPARSITY_NONE,此参数没有意义,可以设置为 NULL。
time – [in] 时间值。
numParams – [in] 外部实参数的数量。
params – [in] 实参数值数组。
dataType – [in] 返回数组的数据类型。
tensorStorage – [inout] 指向 CPU 可访问内存中张量元素存储(数组数据)的指针。
- 返回值
int32_t 错误代码。