发行说明¶
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现有的
cuquantumwheel(不带-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-cu11wheels)。当新的 CUDA 版本可用时,这可能会在未来的版本中更改。鼓励使用带有-cuXX后缀的 wheels。
cuStateVec v1.1.0¶
添加新的 API
在多个 GPU 上优化的状态向量元素交换算法(请参阅
custatevecMultiDeviceSwapIndexBits())
提高性能/功能
针对复数 128 位下 4 量子比特和 5 量子比特门应用,
custatevecApplyMatrix()的性能改进针对 7 量子比特或更大尺寸的对角门应用,
custatevecApplyGeneralizedPermutationMatrix()的性能改进
解决问题
修复了
custatevecComputeExpectation()和custatevecApplyGeneralizedPermutationMatrix()对于 32 量子比特或更大尺寸的状态向量可能返回错误结果的问题。修复了 glibc 符号问题,该问题阻止了在 conda-forge 上发布
cuquantumppc64le 包。
兼容性说明:
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,请检查是否传递了正确的指针并且正确指定了大小。性能优化计划在未来的版本中进行。