common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Contact
Event
Project
Research

Terms of service (Web service)

Terms of service (Quantum and ML Cloud service)

Privacy policy


Sign in
Sign up
common.title

NVIDIAの量子コンピュータSDK、cuQuantum23.10アップデート!CPU/GPU対応や複素数の勾配計算など

Yuichiro Minato

2023/11/06 04:37

今回NVIDIAの量子コンピュータSDKを利用する際のcuQuantum23.10がアップデートされましたので、今回その内容を確認したいと思います。

こちらのソフトウェア開発キットにおいては主に3つのパートに分かれています。1つはcuStateVecと呼ばれる状態ベクトルシュミレーターと呼ばれるシュレーターです。こちらは伝統的なシュミレーターとなっていまして、cuQuantumのコアパートとなっています。もう1つは、cuTensorNetと呼ばれる新しいシミュレーターとなっていまして、こちらは伝統的なものとは違って新しいものとなっていて使い方は少しコツが必要です。最後がそれら2つのシュミレーターを操作するためのPythonのラッパーとなっていて、こちらはcuQuantum Pythonと言う名前で更新がされています。主にこの3つが更新されていますので確認したいと思います。

リリースノート

https://docs.nvidia.com/cuda/cuquantum/latest/cuquantum_sdk_release_notes.html#cuquantum-sdk-v23-10

こちらにあります。

cuStateVecは1.5.0です。

https://docs.nvidia.com/cuda/cuquantum/latest/custatevec/release_notes.html#custatevec-v1-5-0

cuStateVec v1.5.0

まずはcuStateVecです。一つは新しいAPIのようです。大事ですね。二つ目はパフォーマンスの向上です。三つ目はイシューの解決なので、三つ目は飛ばして前の二つを見ます。

APIに関しては、結構大きなアップデートです。最近NVIDIAはCPUにも参入していて、Grace CPUをリリースしています。そうしたGraceにも対応したリリースに見えます。

まずは概要の解説が下記のサイトにあります。

https://docs.nvidia.com/cuda/cuquantum/latest/custatevec/host_state_vector_migration.html

ホスト状態ベクトルの移行について

cuStateVecライブラリはcustatevecSubSVMigrator APIを提供し、ユーザーがホストCPUメモリとデバイスGPUメモリを組み合わせてシミュレーションの規模を拡大できるようになったようです。Grace HopperのCPUもGPUも効率的に使え、さらに量子コンピュータのシミュレーションが高速になりそうな気がします。

custatevecSubSVMigrator API

custatevecSubSVMigrator APIは、CPU(ホスト)上に割り当てられた状態ベクトルと、さらにGPU(デバイス)上に割り当てられた状態ベクトルを移行するためのユーティリティです。このAPIを使うことで、CPUメモリを活用して状態ベクトルを収容することができます。また、CPUとGPUの両方のメモリを利用して単一の状態ベクトルを割り当てることで、シミュレーションされる量子ビットの数を最大化することもできます。

なんか、APIはこちらに

https://docs.nvidia.com/cuda/cuquantum/latest/custatevec/api/functions.html#_CPPv430custatevecSubSVMigratorMigrate18custatevecHandle_t35custatevecSubSVMigratorDescriptor_tiPKvPv17custatevecIndex_t17custatevecIndex_t

cuTensorNetは2.3.0です。

https://docs.nvidia.com/cuda/cuquantum/latest/cutensornet/release_notes.html#cutensornet-v2-3-0

cuTensorNet v2.3.0

2番目はバグ修正として、最初と最後が気になります。

量子分野およびその他の分野で遭遇するテンソルネットワークの仕様と処理を簡素化するために、cuTensorNetはユーザーが与えられたテンソルネットワーク状態を徐々に構築し、その後その特性を計算するための高レベルAPI関数のセットを提供します。

主に、スライシングやMPSの分解などでのAPIの提供があるようです。SVDに関しては新しい分解のオプションが。

最後のOther changesはかなり気になる機能です。複素数における勾配の計算がExperimentalで出ています。機械学習などで勾配を求める際には、量子コンピュータの場合には複素数ですので一般のライブラリなどでは非対応の場合もありますので。

最後にcuQuantum Pythonを見ます。

https://docs.nvidia.com/cuda/cuquantum/latest/python/release_notes.html#cuquantum-python-v23-10-0

cuQuantum Python v23.10.0

今回もバグ修正以外を見ます。当然ですが、cuStateVecとcuTensorNet関連のAPIの話がありました。また、PyTorchのTensorにも対応したようです。Torch Tensorのようなオブジェクトで自動微分情報が設定されててもいけるようです。あとは、先ほどcuStateVecやcuTensorNetでふれた内容をサポートしてます。

どうでしょう。結構大きな変更はCPUとGPUに関してGrace Hopperを意識したアップデート、PyTorchなどの既存機械学習フレームワークとの互換性を考えて複素数の微分ができるようになっていて、勾配計算が楽になりそうです。以上です。

© 2025, blueqat Inc. All rights reserved