Вы здесь

Использование CUDA

Запуск задач на графических процессорах в системе 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