Логотип ЛСМ ЮУрГУ
ЛСМ ЮУрГУ Русский язык
О нас
Наши партнеры
Отделы и сотрудники
История
Новости
Информация в СМИ
Фотогалерея
Эмблема ЛСМ
Экскурсии
Контакты
Вычислительные ресурсы
Суперкомпьютер «Торнадо ЮУрГУ»
Суперкомпьютер «СКИФ-Аврора ЮУрГУ»
Комплекс «GPU»
Кластер «СКИФ Урал»
Пользователям
Правила
Регистрация
Прикладное ПО
Системное ПО
Техническая поддержка
Обучение
Система ПВК
Программное обеспечение
Правила
Инструкции
Коммерческим клиентам
Научная работа
Цели ЛСМ
Проекты
Публикации
Зарегистрированные программы
     
Google

www по сайту
Главная / Пользователям / Инструкции / Базовая инструкция по работе с вычислительным комплексом на основе GPU NVidia

На данной странице приведена пошаговая инструкция по использованию вычислительного комплекса.

0. Подключение к комплексу с GPU ускорителями
 — Зарегистрированным пользователям для получения доступа к комплексу необходимо обратиться по электронной почте supercomputer@susu.ru темой «Получение данных доступа к комплексу с GPU») или создать заявку в системе https://rt.hpc.susu.ru/
 — Незарегистрированным пользователям необходимо пройти процедуру регистрации
 — На данном комплексе коммерческие расчеты имеют приоритет над задачами некоммерческих пользователей и задачи могут приостанавливаться на время выполнения коммерческих расчетов
1. Выделение сервера для компиляции программ
 1.1. Выделения сервера:

 salloc --gres=gpu:1


 1.2. Просмотр имени выделившегося узла

 squeue
            JOBID PARTITION    NAME    USER ST      TIME NODES NODELIST (REASON)
              753     work    bash login R      0:02     1 tesla3


 1.3. Переход на выделенный узел

 ssh tesla3


2. Компиляция программы
 2.1. Создайте в домашнем каталоге файл saxpy.cu скопируя в консоль код, приведенный ниже (источник):

cat > saxpy.cu <<EOF
   #include <stdio.h>

   __global__
   void saxpy (int n, float a, float *x, float *y)
   {
    int i = blockIdx.x*blockDim.x + threadIdx.x;
    if (i < n) y[i] = a*x[i] + y[i];
   }

   int main (void)
   {
    int N = 1<<20;
    float *x, *y, *d_x, *d_y;
    x = (float*)malloc (N*sizeof (float));
    y = (float*)malloc (N*sizeof (float));

    cudaMalloc (&d_x, N*sizeof (float));
    cudaMalloc (&d_y, N*sizeof (float));

    for (int i = 0; i < N; i++) {
      x[i] = 1.0f;
      y[i] = 2.0f;
    }

    cudaMemcpy (d_x, x, N*sizeof (float), cudaMemcpyHostToDevice);
    cudaMemcpy (d_y, y, N*sizeof (float), cudaMemcpyHostToDevice);

    // Perform SAXPY on 1M elements
    saxpy<<< (N+255)/256, 256>>> (N, 2.0f, d_x, d_y);

    cudaMemcpy (y, d_y, N*sizeof (float), cudaMemcpyDeviceToHost);

    float maxError = 0.0f;
    for (int i = 0; i < N; i++)
      maxError = max (maxError, abs (y[i]-4.0f));
    printf ( «Max error: %f\n», maxError);

    cudaFree (d_x);
    cudaFree (d_y);
    free (x);
    free (y);
   }
EOF


 2.2. Скомпилируйте программу
  nvcc -o saxpy saxpy.cu


3. Запуск программы
 3.1. Создайте пакетный файл выполнив многострочную команду:
   cat > saxpy.sh <<EOF


   #!/bin/bash

   ./saxpy
   EOF
   chmod +x saxpy.sh


 3.2. Поставьте задачу в очередь
 
  sbatch --gres=gpu. /saxpy.sh

4. Проверка состояния (аналогично 1.2.)
5. Просмотр результата (через 10 секунд после запуска):
Вывести результат выполнения программы можно командой:
cat slurm-XXX.out

где XXX это номер задачи (JOBID вывод команды squeue), или номер задачи из вывода команды sbatch (например: Submitted batch job XXX).