发行说明¶
cuStateVec v1.7.0¶
添加了新的 API
使用信号量的分布式索引位交换 API 用于同步 (请参阅
custatevecSVSwapWorkerCreateWithSemaphore()
和custatevecSVSwapWorkerSetSubSVsP2PWithSemaphores()
)
改进的性能/功能
改进了
custatevecApplyGeneralizedPermutationMatrix()
在输入矩阵为对角矩阵且元素为 1 的情况下的性能。改进了当使用 MPI 调用
custatevecSVSwapWorkerExecute()
时的性能。更新了
custatevecComputeExpectationBatched()
以支持输出期望值的设备指针。
其他更改
停止支持
Linux ppc64le
。
cuStateVec v1.6.0¶
添加了新的 API
批量状态向量的期望值(请参阅
custatevecComputeExpectationBatched()
)
改进的性能/功能
降低了
custatevecComputeExpectation()
中的 API 执行延迟。对于 1-4 量子比特可观测值,性能可能会提高。
已解决问题
修复了
nIndexBits > 20
时custatevecBatchMeasure()
可能会返回不正确结果的问题。
兼容性说明:
cuQuantum 将在以下 cuQuantum 版本中停止支持 RHEL 7。请提前计划并牢记这一点。谢谢。
cuStateVec v1.5.0¶
添加了新的 API
子状态向量的迁移(请参阅 主机状态向量迁移)
改进的性能/功能
改进了
custatevecApplyPauliRotation()
的性能。
已解决问题
修复了
custatevecMultiDeviceSwapIndexBits()
接受为 indexBitSwaps 参数指定的无效索引位位置的问题。
cuStateVec v1.4.1¶
解决问题
修复了当将 6 量子比特门矩阵应用于双精度复数数据类型的状态向量时,
custatevecApplyMatrix()
不是异步执行的问题。修复了
custatevecMeasureBatched()
在 NVIDIA H100 上可能因“非法指令”错误而失败的问题。
cuStateVec v1.4.0¶
添加新的 API
批量状态向量的门应用(请参阅
custatevecApplyMatrixBatched()
)批量状态向量的测量(请参阅
custatevecAbs2SumArrayBatched()
,custatevecCollapseByBitStringBatched()
,custatevecMeasureBatched()
)状态向量初始化为典型状态(请参阅
custatevecInitializeStateVector()
)
解决问题
修复了 Hopper 架构上的一个问题,其中
custatevecApplyMatrix()
在nIndexBits + nControls = 12
、nTargets = 5
和svDataType = CUDA_C_32F
的情况下可能产生不正确的结果。
兼容性说明:
cuStateVec 支持 Ubuntu 20.04+。
cuStateVec v1.3.0¶
添加新的 API
分布式状态向量上优化的状态向量元素交换算法(请参阅 分布式索引位交换 部分。)
提高性能/功能
改进了 Hopper 架构上
custatevecApplyMatrix()
中 5 量子比特门应用(单精度)和 6 量子比特门应用(双精度)的性能。支持 CUDA 延迟加载。通过将所需 GPU 内核的加载推迟到第一个调用站点,这可以显著减少内存占用。此功能需要 CUDA 11.8(或更高版本)。有关其他要求和详细信息,请参阅 CUDA 文档。目前,此功能需要用户通过设置环境变量
CUDA_MODULE_LOADING=LAZY
来选择启用。在未来的 CUDA 版本中,延迟加载可能会成为默认设置。
解决问题
修复了
custatevecMultiDeviceSwapIndexBits()
中 CUDA 调用在多个 GPU 上分配的流上未正确排序的问题。
其他更改
引入对 CUDA 12 的支持。
在 PyPI.org 上为 CUDA 12 用户发布了一组带有后缀
-cu12
的新 wheels。示例:
pip install custatevec-cu12
用于安装与 CUDA 12 兼容的 cuStateVec现有的
cuquantum
wheel(不带-cuXX
后缀)已转换为自动安装程序,该程序将尝试检测当前的 CUDA 环境并安装相应的 wheels。请注意,此自动检测可能会遇到检测不成功的情况,尤其是在仅 CPU 环境(如 CI/CD)中。如果检测失败,我们假设目标环境为 CUDA 11 并继续。此假设可能会在未来的版本中更改,在这种情况下,我们建议用户显式(手动)安装正确的 wheels。
兼容性说明:
cuStateVec 需要 CUDA 11.x 或 12.x。
cuStateVec 支持 Ubuntu 18.04+
在下一个版本中,将删除 Ubuntu 18.04。最低支持的 Ubuntu 版本将为 20.04。
cuStateVec v1.2.0¶
我们在 NVIDIA/cuQuantum GitHub Discussions 上!对于有关 cuQuantum 的任何问题(或基于 cuQuantum 构建的令人兴奋的工作),请随时通过 GitHub Discussions 与我们联系。
错误报告仍应发送至 我们的 GitHub issue tracker。
此版本引入了对 Hopper GPU 系列的支持。
提高性能/功能
提高了
custatevecApplyMatrix()
中 4 量子比特和 5 量子比特门应用的性能。更新了
custatevecSamplerSample()
以接受超过 40 量子比特的状态向量。为与用户提供的设备内存处理程序相关的错误添加了
CUSTATEVEC_STATUS_DEVICE_ALLOCATOR_ERROR
。
解决问题
修复了
custatevecMultiDeviceSwapIndexBits()
可能为 32 量子比特或更大的状态向量返回错误结果的问题。修复了
custatevecApplyGeneralizedPermutationMatrix()
和custatevecComputeExpectationsOnPauliBasis()
中的寄存器溢出。
其他更改
conda 软件包已在 conda-forge 上发布:
conda install -c conda-forge custatevec
。用户仍然可以使用conda install -c conda-forge cuquantum
获取 cuStateVec 和 cuTensorNet,与之前一样。pip wheel 已在 PyPI 上发布:
pip install custatevec-cu11
。用户仍然可以使用pip install cuquantum
获取 cuStateVec 和 cuTensorNet,与之前一样。目前,
cuquantum
元 wheel 指向cuquantum-cu11
元 wheel(然后指向custatevec-cu11
和cutensornet-cu11
wheels)。当新的 CUDA 版本可用时,这可能会在未来的版本中更改。鼓励使用带有-cuXX
后缀的 wheels。
cuStateVec v1.1.0¶
添加新的 API
在多个 GPU 上优化的状态向量元素交换算法(请参阅
custatevecMultiDeviceSwapIndexBits()
)
提高性能/功能
针对复数 128 位下 4 量子比特和 5 量子比特门应用,
custatevecApplyMatrix()
的性能改进针对 7 量子比特或更大尺寸的对角门应用,
custatevecApplyGeneralizedPermutationMatrix()
的性能改进
解决问题
修复了
custatevecComputeExpectation()
和custatevecApplyGeneralizedPermutationMatrix()
对于 32 量子比特或更大尺寸的状态向量可能返回错误结果的问题。修复了 glibc 符号问题,该问题阻止了在 conda-forge 上发布
cuquantum
ppc64le 包。
兼容性说明:
cuStateVec 需要 CUDA 11.x
限制说明:
如果设备之间没有对等 (P2P) 访问权限,
custatevecMultiDeviceSwapIndexBits()
可能会导致段错误。当 API 调用期间发生段错误时,请检查是否通过cudaDeviceEnablePeerAccess
启用了任意设备对之间的直接访问。如果未提供在当前设备上创建的句柄,
custatevecMultiDeviceSwapIndexBits()
可能会返回CUSTATEVEC_STATUS_INVALID_VALUE
。 有关详细信息,请参阅custatevecMultiDeviceSwapIndexBits()
。如果将错误的设备指针传递给函数,则可能会返回
CUSTATEVEC_STATUS_INTERNAL_ERROR
。如果函数返回CUSTATEVEC_STATUS_INTERNAL_ERROR
,请检查是否传递了正确的指针并且正确指定了大小。
cuStateVec v1.0.0¶
提高性能/功能
门应用 API 已重新优化
custatevecApplyMatrix()
减少了 API 执行延迟。对于单精度下的 1-4 量子比特矩阵应用和双精度下的 1-5 量子比特矩阵应用,使用小状态向量的性能可能会提高。custatevecApplyGeneralizedPermutationMatrix()
减少了 API 执行延迟。对于对角矩阵的情况,使用小状态向量的性能可能会提高。
解决问题
custatevecApplyMatrix()
、custatevecApplyGeneralizedPermutationMatrix()
和custatevecComputeExpectationsOnPauliBasis()
中的多线程问题已修复。此版本中的所有 cuStateVec API 都是线程安全的,只要每个主机线程都有自己的 cuStateVec 句柄。
添加新的 API
批量测量和采样器 API 的扩展,以接受跨多个 GPU 的状态向量分区(请参阅
custatevecBatchMeasureWithOffset()
、custatevecSamplerGetSquaredNorm()
、custatevecSamplerApplySubSVOffset()
)在单个 GPU 上优化的状态向量元素交换算法(请参阅
custatevecSwapIndexBits()
)测试给定矩阵是否为厄米特矩阵或酉矩阵(请参阅
custatevecTestMatrixType()
)设置带有用户提供数据的记录器回调(请参阅
custatevecLoggerSetCallbackData()
)
API breaking changes:
采样器和访问器描述符完全不透明,就像库句柄
custatevecHandle_t
一样。对于这两个描述符,都有相应的析构函数 API。此外,它们现在在各种例程中按值传递。现在 C 和 Python API 已统一。某些 API 已重命名如下
先前版本 (< 1.0.0)
新版本 (= 1.0.0)
custatevecApplyMatrix_bufferSize
custatevecApplyExp
custatevecApplyGeneralizedPermutationMatrix_bufferSize
custatevecApplyGeneralizedPermutationMatrixGetWorkspaceSize()
custatevecExpectation_bufferSize
custatevecExpectation
custatevecExpectationsOnPauliBasis
custatevecSampler_create
custatevecSampler_preprocess
custatevecSampler_sample
custatevecAccessor_create
custatevecAccessor_createReadOnly
custatevecAccessor_setExtraWorkspace
custatevecAccessor_set
custatevecAccessor_get
以下 API 的参数已重新排序/重命名
兼容性说明:
cuStateVec 需要 CUDA 11.x
限制说明:
如果将错误的设备指针传递给函数,则可能会返回
CUSTATEVEC_STATUS_INTERNAL_ERROR
。如果函数返回CUSTATEVEC_STATUS_INTERNAL_ERROR
,请检查是否传递了正确的指针并且正确指定了大小。
cuStateVec v0.1.1¶
支持 NVIDIA cuQuantum Appliance(请参阅此处)
批量测量和采样器 API 的扩展,以接受跨多个 GPU 的状态向量分区
针对多个 GPU 优化的状态向量元素交换算法
注意:多 GPU 功能和优化目前仅在 cuQuantum Appliance 中可用
cuStateVec v0.1.0¶
添加对
Linux ppc64le
的支持添加新的 API
广义置换矩阵的门应用
泡利字符串的期望值
用于获取/设置状态向量元素的访问器
兼容性说明:
cuStateVec 需要 CUDA 11.4 或更高版本
cuStateVec 需要 NVIDIA HPC SDK 21.11 或更高版本
限制说明:
如果将错误的设备指针传递给函数,则可能会返回
CUSTATEVEC_STATUS_INTERNAL_ERROR
。如果函数返回CUSTATEVEC_STATUS_INTERNAL_ERROR
,请检查是否传递了正确的指针并且正确指定了大小。
cuStateVec v0.0.1¶
初始版本发布
支持
Linux x86_64
,Linux Arm64
支持 Volta 和 Ampere 架构(计算能力 7.0+)
兼容性说明:
cuStateVec 需要 CUDA 11.4 或更高版本
cuStateVec 需要 NVIDIA HPC SDK 21.7 或更高版本
限制说明:
此版本针对 NVIDIA A100 和 V100 GPU 进行了优化。
如果将错误的设备指针传递给函数,则可能会返回
CUSTATEVEC_STATUS_INTERNAL_ERROR
。如果函数返回CUSTATEVEC_STATUS_INTERNAL_ERROR
,请检查是否传递了正确的指针并且正确指定了大小。性能优化计划在未来的版本中进行。