How to build on FX1000
(1) Clone the repository
Our repository is private, so you need to register the public key at first.
Generate a public key
$ ssh-keygen -t ed25519 $ cat .ssh/id_ed25519.pub
Register the public key
[Settings] –> [SSH and GPG keys] –> push [New SSH key]
or this page
clone the repository
You cannot use the original home directory, but can use
/work/ga28/{YourID}.
$ cd /work/ga28/a2800X/ $ git clone git@github.com:Fujitsu-UTokyo-QDD/QDD.git
(2) Build
Create
build.shfile in QDD directory.$ cd QDD $ cat build.sh #!/bin/bash #PJM -L rscgrp=short-o #PJM -L node=1 #PJM -L elapse=00:05:00 #PJM -g ga28 module load python/3.8.9 CC="mpifcc -Kfast -Nclang -msve-vector-bits=512 -fno-builtin" CXX="mpiFCC -Kfast -Nclang -msve-vector-bits=512 -fno-builtin" Python_ROOT_DIR=/work/opt/local/aarch64/apps/fj/1.2.31/python/3.8.9 Boost_DIR=/work/ga28/share/boost_1_81_0-aarch64/lib/cmake/Boost-1.81.0 /work/ga28/share/cmake-3.26.4-linux-aarch64/bin/cmake -B build -DCMAKE_BUILD_TYPE=Release -DisMPI=ON /work/ga28/share/cmake-3.26.4-linux-aarch64/bin/cmake --build build -j
Points
Boost library is already built with gcc, and put in the shared directory. (Fujitsu compiler (mpifcc/mpiFCC) does not work well.)
Newer cmake is put in the shared directory.
QDD should be compiled with Fujitsu compiler (for profiling).
Submit the job
$ pjsub build.sh
Check the job id & status
$ pjstat
You can find the stdout/stderr from
build.sh.{JobID}file.
(3) Run
Create
run.shfile in QDD directory.$ cat run.sh #!/bin/bash #PJM -L rscgrp=short-o #PJM -L node=4 #PJM --mpi proc=1 #PJM -L elapse=01:00:00 #PJM -g ga28 mpiexec -np 4 ./build/test/mpi_test_grover 30
#PJM -L node=4represents the number of nodes.
Submit the job
$ pjsub run.sh
Check the job id & status
$ pjstat
You can find the stdout/stderr from
run.sh.{JobID}file.
Tips
You can use FX1000 interactively with the following command.
$ pjsub --interact -g ga28 -L rscgrp=interactive-o,node=1
If the number of node is 1, the maximum execution time is 60mins.
If more, it is 10mins.
You cannot use multiple interactive jobs at the same time.