1. braket¶
1.1. はじめに¶
(古典的な) コンピューターでの量子ゲートのシミュレーションのためのツールであるbraketについての「富岳」での利用方法を利用例を交えて説明します。
「富岳」でサポートしているバージョンは、v1.6.0です。
braketの詳細につきましては、 https://github.com/naoki-yoshioka/braket をご参照ください。
1.2. 利用方法¶
利用するにあたり、高性能計算向けのソフトウェアパッケージ管理システム(Spack)を利用します。
1.2.1. Spack環境の準備¶
利用手引書 富岳 Spack 利用ガイド に基づいてSpack環境を構築します。
本ドキュメントでは、「パブリックインスタンスの利用」を想定してQulacsの利用法を解説します。
1.2.2. braketのロード¶
braketを使用する場合、下記のコマンドでロードします。
$ spack load braket %fj
1.2.3. braketのアンロード¶
braketを使用しない場合、下記のコマンドでアンロードします。
$ spack unload braket %fj
1.3. 利用例¶
「富岳」においてバッチジョブでbraketを実行する場合の例を示します。
1.3.1. 入力データの入手¶
本ドキュメントで示す入力データは次の手順により入手可能です。入力データを入手し、tar.gzを展開します。
$ wget https://github.com/naoki-yoshioka/braket/archive/refs/tags/v1.6.0.tar.gz
$ tar xvf v1.6.0.tar.gz
1.3.2. バッチジョブスクリプトの作成¶
1.3.1.で展開したbra配下でバッチスクリプトを作成します。次のバッチスクリプトは、braket利用における例です。
※ シングルアカウントの場合は、run.shに実行グループid(idコマンドで確認)の指定が必要。
(例:#PJM -g hp*****)
$ cat run.sh
#!/bin/sh
#PJM -g hp*****
#PJM -L "node=1"
#PJM -L "rscgrp=small"
#PJM -L "elapse=00:20:00"
#PJM --mpi "max-proc-per-node=12"
#PJM -x PJM_LLIO_GFSCACHE=/vol0004
#PJM -S
export PATH=/opt/FJSVxtclanga/tcsds-1.2.36/bin:$PATH
export LD_LIBRARY_PATH=/opt/FJSVxtclanga/tcsds-1.2.36/lib64:$LD_LIBRARY_PATH
. /vol0004/spack/share/spack/setup-env.sh
spack load braket %fj
mpiexec -np 4 bra --mode simple --file qcx/hadamards08.qcx 1> stdout 2> stderr
1.3.3. バッチジョブスクリプトの実行¶
下記のコマンドで実行します。
$ pjsub run.sh
1.3.4. 結果の確認¶
output.job-id配下に作成されるstdoutファイルにおいて、Expectation values of spinsの<Qx>, <Qy>, <Qz>の値が下記の値と一致すれば問題ありません。
Operations finished: 0.002061 (0.002061)
Expectation values of spins:
<Qx> <Qy> <Qz>
-0.000 0.500 0.500
-0.000 0.500 0.500
-0.000 0.500 0.500
-0.000 0.500 0.500
-0.000 0.500 0.500
-0.000 0.500 0.500
-0.000 0.500 0.500
-0.000 0.500 0.500
Expectation values finished: 0.002574 (0.000512)