メインコンテンツへスキップ

量子リソース管理インターフェース(QRMI)

量子リソース管理インターフェース(QRMI)は、高性能計算(HPC)システムが量子計算リソースへのアクセス、制御、および動作監視を行うためのベンダー非依存ライブラリです。シンプルなAPIセットを通じて量子リソースの制御に関わる複雑さを抽象化する、薄いミドルウェア層として機能します。Rustで記述されたこのインターフェースは、ほぼあらゆる計算環境への統合を容易にするためPythonおよびC APIも公開しています。

QRMIのビルドおよびデプロイ用ソースコードは、このGitHubリポジトリでご確認いただけます。

量子ハードウェアに対して量子ペイロードを実行するためのオプションのコマンドラインツール task_runner がPythonパッケージに含まれています。完全なドキュメントはGitHubリポジトリでご確認いただけます。

QRMIライブラリのビルド

このセクションでは、CおよびPython向けにQRMIをビルドする方法を説明します。

要件

QRMIは以下のオペレーティングシステム(OS)をサポートしています。

AlmaLinux 9, Amazon Linux 2023, CentOS Stream 9, CentOS Stream 10,
RedHat Enterprise Linux 8, RedHat Enterprise Linux 9,
RedHat Enterprise Linux 10, Rocky Linux 8, Rocky Linux 9, SuSE 15,
Ubuntu 22.04, Ubuntu 24.04, MacOS Sequoia 15.1 or above

コンパイル環境

  • Rustコンパイラ 1.91以上
  • Cコンパイラ: Linuxでは例えばGCC(gcc)、Rustの未知のターゲット/クロスコンパイルにはClang(clang-tools-extra)。QRMIはC11標準に準拠するコンパイラと互換性があります。
  • make/cmake(RHEL互換OSではmake/cmake RPM)
  • openssl(RHEL互換OSではopenssl-devel RPM)
  • zlib(RHEL互換OSではzlib-devel RPM)
  • Python 3.11、3.12、または3.13(Python APIの場合)
    • Pythonの開発に必要なライブラリとヘッダーファイル(RHEL互換OSではpython3.1x-devel RPM):
      • /usr/include/python3.1x
      • /usr/lib64/libpython3.1x.so
  • Doxygen(C APIドキュメント生成用)、OSによって異なります:
    • Linux(RHEL/CentOS/Rocky Linuxなど)の場合は dnf install doxygen
    • Linux(Ubuntuなど)の場合は apt install doxygen
    • MacOSの場合は brew install doxygen

ランタイム環境

  • gcc(RHEL互換OSではlibgcc RPM)
  • openssl(RHEL互換OSではopenssl-libs RPM)
  • zlib(RHEL互換OSではzlib RPM)
  • Python 3.11、3.12、または3.13(Python APIの場合)
    • Pythonの開発に必要なライブラリとヘッダーファイル(RHEL互換OSではpython3.1x-devel RPM)

QRMIリポジトリを保存した場所で以下のコマンドを実行して、Rust/C APIライブラリをビルドします。

. ~/.cargo/env
cargo clean
cargo build --release

Pythonパッケージをビルドするには、まずPython環境を設定し、必要な依存関係をインストールします。

. ~/.cargo/env
cargo clean
python3.12 -m venv ~/py312_qrmi_venv
source ~/py312_qrmi_venv/bin/activate
pip install --upgrade pip
pip install -r requirements-dev.txt

Pythonコードのスタブファイルを作成します。

. ~/.cargo/env
cargo run --bin stubgen --features=pyo3

最後に、ホストに配布するためのPythonホイールをビルドします。

source ~/py312_qrmi_venv/bin/activate
CARGO_TARGET_DIR=./target/release/maturin maturin build --release

ホイールは ./target/release/maturin/wheels ディレクトリに作成されます。pip install <wheel> でホストに配布およびインストールできます。

ロギング

QRMIはロギングにlogクレートをサポートしています。RUST_LOG 環境変数にログレベルを指定することで、詳細なQRMIランタイムログを確認できます。サポートされているレベルは errorwarninfodebug、および trace です。デフォルトレベルは warn です。

trace を指定すると、基礎となるHTTPトランザクションログを確認できます。

RUST_LOG=trace <your QRMI executable>

ログの例:

[2025-08-16T03:47:38Z DEBUG request::connect] starting new connection: https://iam.cloud.ibm.com/
[2025-08-16T03:47:38Z DEBUG direct_access_api::middleware::auth] current token ...

APIドキュメントのビルド

Rust APIドキュメントは以下を実行することで作成できます。

. ~/.cargo/env
cargo doc --no-deps --open

C APIドキュメントはdoxygenを使用して作成できます:

doxygen Doxyfile

これにより ./html ディレクトリの下にHTMLドキュメントが作成され、Webブラウザで開くことができます。

Python APIドキュメントは pydoc で生成されます。QRMIパッケージがインストールされた仮想環境に入った後、以下のコマンドを実行します:

python -m pydoc -p 8290
Server ready at http://localhost:8290/
Server commands: [b]rowser, [q]uit
server> b

次に、ブラウザで以下のページを開きます:

http://localhost:8290/qrmi.html

サーバーを停止するには:

server> q