На суперкомпьютере установлено несколько компиляторов. По умолчанию будет использоваться gcc 4.8.5, для использования другого компилятора необходимо загрузить соответствующий модуль.
user@master ~$ module load gcc-9.4.0 # для использования gcc 9.4.0 user@master ~$ module load intel2017 # для использования icc 17.0.0 user@master ~$ module load compiler/2022.0.2 # для использования icpc (ICC) 2021.5.0 (из пакета oneAPI)
Далее нужно выполнить компиляцию и линковку вашей программы
user@master ~$ echo '#include <stdio.h> int main() { printf("Hello World!\n"); return 0; }' >hello.c user@master ~$ cc -o hello_gcc_4.8.5 hello.c # если используется компилятор по умолчанию, или user@master ~$ icc -o hello_icc_17.0.0 # если загружен модуль load intel2017
Для запуска программы в интерактивном режиме на одном узле кластера нужно выполнить команду следующего вида:
user@master ~$ srun -N 1 -p gpu -t 10 ./hello_gcc_4.8.5 # Пример №1 Hello World! user@master ~$ srun -N 1 -p gpu -t 5 /home/user/hello_icc_17.0.0 # Пример №2 Hello World!
Для запуска в пакетном режиме необходимо подготовить файл задания и поставить его в очередь заданий:
user@master ~$ echo '#!/bin/sh #SBATCH --time=10 #SBATCH --partition=gpu ./hello_gcc_4.8.5' >batch_hello_gcc_4.8.5.sh user@master ~$ sbatch -N 1 batch_hello_gcc_4.8.5.sh Submitted batch job 2420505
Параметры запуска задания (time, partition, N etc) могут быть указаны как в файле задания, так и в командной строке sbatch. Номер задания может быть использован для просмотра его состояния. После завершения выполнения задания стандартный вывод и стандартный вывод ошибки записываются в файлы slurm-JOBID.out и slurm-JOBID.err (можно задать файлы с другими именами).
user@master ~$ scontrol show job 2420505 JobId=2420505 JobName=batch_hello_gcc_4.8.5.sh UserId=user(userid) GroupId=Users(10000) MCS_label=N/A Priority=1052937772 Nice=0 Account=user QOS=normal JobState=PENDING Reason=None Dependency=(null) Requeue=1 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0 RunTime=00:00:00 TimeLimit=00:10:00 TimeMin=N/A ... user@master ~$ cat slurm-2420505.out Hello World!
Обратите внимание, что при запуске программы может потребоваться загрузка модулей, которые использовались при ее сборке.