Для запуска программы на кластере, необходимо написать скрипт. Покажем это на примере программы, использующей CUDA.
# Копируем программу перемножения матриц. mkdir -p ~/cuda-examples/0_Simple cp -irv /box/soft/cuda/9.0/samples/0_Simple/matrixMul ~/cuda-examples/0_Simple cp -irv /box/soft/cuda/9.0/samples/common ~/cuda-examples # Подключаем CUDA и совместимую версиюю GCC через модули. module load cuda/10.1 module load gcc/8 module load make # Собираем программу (переменная CUDA_PATH нужна только для сборки примера). export CUDA_PATH=$(realpath $(dirname $(realpath $(which nvcc)))/..) cd ~/cuda-examples/0_Simple/matrixMul makeДля написания скрипта используем любой редактор, например,
nano
. Для создания файла job.sh набираем в консоли nano job.sh
. В файле пишем команды для запуска нашей программы.#!/bin/sh module load cuda/10.1 ~/cuda-examples/bin/x86_64/linux/release/matrixMulДелаем скрипт исполняемым и отправляем в очередь на исполнение. Раздел указываем с помощью опции
-p gpulab
.$ chmod +x job.sh # Здесь вместо gpulab можно указать любой другой раздел (capybara) $ sbatch -p gpulab job.sh Submitted batch job 25999После завершения задачи в текущей директории появится файл со стандартным выводом и потоком ошибок. Проверяем содержимое файла командой
cat
.$ cat slurm-25999.out [Matrix Multiply Using CUDA] - Starting... GPU Device 0: "GeForce GTX 1060 6GB" with compute capability 6.1 MatrixA(320,320), MatrixB(640,320) Computing result using CUDA Kernel... done Performance= 515.14 GFlop/s, Time= 0.254 msec, Size= 131072000 Ops, WorkgroupSize= 1024 threads/block Checking computed result for correctness: Result = PASS NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.