Школа по технологии NVIDIA CUDA
 11 -- 13 апреля 2012 г.

Школу организует ИВМиМГ СО РАН совместно с Научно-образовательным центром «Параллельные вычисления» (Дубна), NVIDIA и Учебным центром по технологии CUDA (CUDA Teaching Center) НГУ.

Место проведения школы – Академгородок, пр-кт ак. Лаврентьева, 6, ИВМиМГ СО РАН.

Лекции - конф. зал ИВМиМГ СО РАН,
Практикум - конференц-зал 2 (ком. 1-233) и возможно компьютерный класс (ком. 1-232).

Практикумы будут проводиться на гибридном расширении кластера НКС-30Т с GPU NVIDIA TESLA M2090.
Для участия в практикумах необходимо принести с собой ноутбук.
Доступ к кластеру будет обеспечиваться по Wi-Fi.
ssh клиент для MS Windows это программа PuTTy - http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Лекторы: 11 апреля - Нгуен Минь Дык, Научно-Образовательный Центр "Параллельные Вычисления" (Дубна).
12 апреля - Евгений Перепёлкин, Научно-Образовательный Центр "Параллельные Вычисления" (Дубна).
13 апреля - к.т.н. А.А. Романенко, НГУ, Учебный центр по технологии CUDA (CUDA Teaching Center).

Начало лекций: 10:00 час.   Перерыв на обед: 13:30 - 15:00 час.   Каждое занятие - полтора часа.

ПРОГРАММА  ШКОЛЫ

1 День  
09:30 - 10:00 Открытие Школы
(ак. Б.Г. Михайленко, проректор НГУ по информатизации д.ф.-м.н. М.М. Лаврентьев,
 зав. ССКЦ д.т.н. Б.М. Глинский)
10:00 - 13:30 Быстрая разработка для GPU с помощью директив OpenACC:
Основные директивы и примеры, локализация данных.
Конфигурация ядра и распараллеливание циклов.
Профилировщик и сбор характеристик выполнения.
GPU программирование на CUDA Fortran:
Простейший пример программы на CUDA Fortran. Основные принципы.
Параллелизм блоков и потоков. Иерархия памяти. 
Обмен данными между GPU и хостом. Асинхронное исполнение.
Обработка ошибок. Запрос свойств GPU и их интерпретация.
13:30 - 15:00 Перерыв на обед
15:00 - 16:30 Практикум:
Написание простых программ по шаблонам на CUDA Fortran.
Написание простых программ по шаблонам с использованием OpenACC директив.
Профилирование программ с использованием инструментов от PGI.
************************************************************************************************************************
2 День  
10:00 - 20:00 Эволюция GPU и GPGPU::
Производительность и параллелизм.
Эволюция GPU. SIMD и SIMT.
Программная модель CUDA:
Простейший пример программы для CUDA C.
Основные принципы. Параллелизм блоков и потоков.
Иерархия памяти.
CUDA runtime API:
Обмен данными между GPU и хостом. Асинхронное исполнение.
Обработка ошибок. Запрос свойств GPU и их интерпретация.
Иерархия памяти:
Уровни памяти (обзор). Регистровый файл, константная память.
Глобальная память. Пример: простейшая реализация умножения матриц.
Разделяемая память.
Пример: эффективная реализация умножения матриц
с разделяемой памятью.
Практикум:
Настройка системы, знакомство с программированием на CUDA.
Написание простейших программ на CUDA C по шаблонам.
Демонстрация основных возможностей CUDA.
************************************************************************************************************************
3 День  
10:00 - 13:30 Использование нескольких GPUs:
Гибридная система, замечания для NUMA-систем.
Контекст устройства. Пример: использование нескольких GPU в последовательной программе.
MPI. Пример: использование библиотеки MPI со встроенной поддержкой CUDA.
POSIX-threads. OpenMP. Boost.Threads.
Правила использования CUDA Events, CUDA Streams и доступа к данным между несколькими GPU.

Прикладные библиотеки для CUDA:
Fortran: введение в ISO C Binding.
CUBLAS & MAGMA. CUSPARSE. CUFFT.
13:30 - 15:00 Перерыв на обед
15:00 - 16:30 Практикум:
Демонстрация простых примеров с использованием MultiGPU.
************************************************************************************************************************

МАТЕРИАЛЫ  ШКОЛЫ:

1). Programming using CUDA Fortran (.pdf, 1.3 Мб)

2). Programming with OpenACCGPU (.pdf, 4.1 Мб)

3). Примеры практикума для Fortran (.rar, 206 Кб)

4). Архитектура и программирование массивно-параллельных вычислительных систем (.pdf, 3.3 Мб)

5). Программно-аппаратный стек CUDA. Иерархия памяти. Глобальная память.  (.pdf, 1.8 Мб)

6). Иерархия памяти CUDA. Shared-память и ее эффективное использование. Параллельная редукция. (.pdf, 516 Кб)

7). Иерархия памяти CUDA. Текстуры в CUDA. Цифровая обработка сигналов. (.pdf, 1.2 Мб)

8). Нерегулярный параллелизм в обработке цифровых сигналов (.pdf, 1.1 Мб)

9). Особенности реализации алгоритмов трассировки лучей на CUDA (.pdf, 1.9 Мб)

10). Решение дифференциальных уравнений на CUDA на примере задач аэро-гидродинамики (.pdf, 708 Кб)

11). CUDA. Оптимизация программ. (.pdf, 914 Кб)

12). Программирование для систем с несколькими GPU (.pdf, 775 Кб)

13). Оптимизированные библиотеки CUDA (.pdf, 699 Кб)

************************************************************************************************************************

КОНСУЛЬТАЦИИ  по технологиям Nvidia Cuda - http://fit.nsu.ru/cuda/index.php/contact-us

************************************************************************************************************************

КРАТКИЙ  ФОТООТЧЁТ