Ш К О Л А
по параллельному программированию
гибридных кластеров
6 – 7 декабря 2012 г.

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

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

Формат занятий:
   09:00 – 12:30 – лекции
   14:00 – 18:30 – практические занятия

Минимальные требования к подготовке слушателей:
иметь представление об архитектуре современных кластеров и многоядерных компьютеров, знать в первом приближении MPI и С/C++ , уметь программировать и решать простые задачи с их использованием.

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

ПЕРВЫЙ  ДЕНЬ

ЛЕКЦИИ

ЛЕКЦИЯ 1. Введение в программирование графических ускорителей:
       1.   Программная архитектура CUDA
       2.   Аппаратная архитектура CUDA
       3.   Особенности CUDA, влияющие на эффективность программ
       4.   Архитектура кластеров ССКЦ СО РАН, НГУ, МГУ
       5.   Статистика TOP500 по графическим ускорителям 6.   Компилятор PGI. Использование CUDA в Fortran'е.

ЛЕКЦИЯ 2. Подробный разбор примеров программ для CUDA:
       1.   Сложение векторов и матриц
       2.   Редукция
       3.   Явная разностная схема/Клеточный автомат
       4.   Метод Монте-Карло
       5.   Требования к алгоритмам и их представлениям для их эффективной реализации на графических ускорителях.

ПРАКТИЧЕСКИЕ занятия

       На практических занятиях участники школы при помощи преподавателей реализуют на CUDA свою явную разностную схему и метод Монте-Карло. Можно приносить свои алгоритмы для реализации на гибридном кластере ССКЦ.

ВТОРОЙ  ДЕНЬ

ЛЕКЦИИ

ЛЕКЦИЯ 1.  Краткое описание технологических аспектов работы на кластере:
       1.   Как заходить на кластер. Дается описание клиентского ПО для терминального входа и передачи файлов между клиентской машиной и кластером. Показано, как пользователь может передавать на кластер исходные данные и программы и получать обратно результаты.
       2.   Как запускать задачи на исполнение. Даётся описание менеджеров очередей и трансляторов, установленных на кластерах ССКЦ. Показывается, как запускать программы на нескольких счетных узлах.
       3.   Как измерять время исполнения программы. Описывается один наиболее подходящий способ измерять время исполнения программ на кластерах ССКЦ.

ЛЕКЦИЯ 2.
       1.   Краткое введение в MPI. Общая структура MPI программы. Коммуникаторы. Ранги. Взаимодействия точка-точка.
       2.   Программирование в CUDA+MPI

ПРАКТИЧЕСКИЕ занятия

Краткое описание технологии GPUDirect. Рассмотрение примеров:
Пример 1. Локальная фильтрация изображений
       1.   Последовательная версия
       2.   Версия с MPI
       3.   Версия с CUDA
       4.   Версия с CUDA+MPI
Пример 2. Моделирование клеточного автомата
       1.   Последовательная версия
       2.   Версия с MPI
       3.   Версия с CUDA
       4.   Версия с CUDA+MPI

       На следующей  школе продолжится обучение программированию гибридных кластеров. Она запланирована на март 2013 года с примерной тематикой занятий: программирование гибридных кластеров с помощью ОpenCL.

МАТЕРИАЛЫ  ШКОЛЫ  (.zip, 5.4 Мб)

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

ПОЛЕЗНЫЕ  ССЫЛКИ:

          Популярные свободно распространяемые библиотеки:
1. MAGMA (http://icl.cs.utk.edu/magma/software) A collection of next gen linear algebra routines. Designed for heterogeneous GPU-based architectures. Supports current LAPACK and BLAS standards.
2. NVIDIA CUSP (http://code.google.com/p/cusp-library/) A GPU accelerated Open Source C++ library of generic parallel algorithms for sparse linear algebra and graph computations. Provides an easy to use high-level interface.

          Библиотеки, входящие в CUDA 5 Toolkit:
1. NVIDIA cuFFT  NVIDIA CUDA Fast Fourier Transform Library (cuFFT) provides a simple interface for computing FFTs up to 10x faster, without having to develop your own custom GPU FFT implementation.
2. NVIDIA cuBLAS  NVIDIA CUDA BLAS Library (cuBLAS) is a GPU-accelerated version of the complete standard BLAS library that delivers 6x to 17x faster performance than the latest MKL BLAS.
3. NVIDIA cuSPARSE  NVIDIA CUDA Sparse (cuSPARSE) Matric library provides a collection of basic linear algebra subroutines used for sparse matrices that delivers over 8x performance boost.
4. NVIDIA cuRAND  The CUDA Random Number Generation library performs high quality GPU-accelerated random number generation (RNG) over 8x faster than typical CPU only code.
5. Thrust  A powerful, open source library of parallel algorithms and data structures. Perform GPU-accelerated sort, scan, transform, and reductions with just a few lines of code.
6. NVIDIA CUDA Math Library  An industry proven, highly accurate collection of standard mathematical functions, providing high performance on NVIDIA GPUs.
7. NVIDIA NPP  NVIDIA Performance Primitives is a GPU accelerated library with a very large collection of 1000's of image processing primitives and signal processing primitives.

          Видеозапись вебинара по библиотекам с поддержкой CUDA - http://www.gotdotnet.ru/blogs/parallel-computing/10070/

          Cписок наиболее распространенных приложений с поддержкой GPU (.pdf, 128 Кб)

          Статья по OpenACC (компилятор PGI Accelerator). (.pdf, 543 Кб)

          Вебинары о эффективном использовании OpenACC:
для кода Fortran (http://youtu.be/MjGEcZ7LHAQ)
для кода
C (http://youtu.be/5tDhWkSc4BI