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)