Запуск задач на графических процессорах в системе SLURM задается опцией --gres=gpu:N
, где N
- число GPU.
Свежая версия библиотеки CUDA находится в каталоге /opt/cuda/.
/opt/cuda/include/ — заголовочные файлы;
/opt/cuda/lib /— библиотека CUDA;
/opt/cuda/doc/ — документация.
Чтобы использовать библиотеку CUDA, необходимо при компиляции программы заказать данную библиотеку, например:
gcc mytest.c -o mytest -lcuda -L/opt/cuda/lib -I/opt/cuda/include
Можно использовать компилятор nvcc:
nvcc <имя файла для компиляции> -o <имя выходного файла>
На кластере "Уран" при выполнении данной команды по умолчанию подключается библиотека CUDA . Можно компилировать программы на языках C и C++ (файлы с расширением .c и .cpp) и программы, написанные с использованием технологии CUDA (файлы с расширением .cu), например:
u9999@umt:~$ nvcc main.c -o gputest
Пример
Пусть файл cuda_test.cu (из домашнего каталога) содержит программу на CUDA:
#include <cuda.h>
#include <stdio.h>
int main() {
int GPU_N;
int dev;
cudaGetDeviceCount(&GPU_N);
printf("Device count: %d\n", GPU_N);
for(dev=0;dev<GPU_N;dev++) {
cudaDeviceProp deviceProp;
cudaGetDeviceProperties(&deviceProp, dev);
printf("PCI Bus id: %d\n",deviceProp.pciBusID);
}
return 0;
}
Тогда компиляция программы и запуск задачи на кластере могут иметь вид:
u9999@umt:~$ nvcc cuda_test.cu -o cuda_test
u9999@umt:~$ srun --gres=gpu:1 ./cuda_test
Device count: 1
PCI Bus id: 8
u9999@umt:~$ srun --gres=gpu:2 ./cuda_test
Device count: 2
PCI Bus id: 10
PCI Bus id: 26
Поддержка CUDA есть в компиляторе Portland Group.
Инструкции по использованию CUDA в Фортране можно найти на сайте Portland Group (http://www.pgroup.com/resources/cudafortran.htm).
Для компиляции Fortran-программы с CUDA следует установить переменные окружения командой module
или mpiset
, выбрав связку MVAPICH+PGI, например:
module switch mpi/default mvapich2/pgi_12.10
или соответственно
mpiset 7
и откомпилировать программу компилятором pgfortran с опцией -Mcuda
, указав при необходимости оптимизированные библиотеки, например:
pgfortran -o mytest test.cuf -Mcuda -lcublas