@landwatersun

Научно-образовательный IT-форум при КНИТУ-КАИ

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Научно-образовательный IT-форум при КНИТУ-КАИ » Теоретические материалы » Программирования графических процессоров NVIDIA


Программирования графических процессоров NVIDIA

Сообщений 11 страница 11 из 11

1

Предлагаем Вам пройти видеокурсы по программированию массивно-параллельных процессоров. Пройдя предлагаемые курсы, Вы получите широкий спектр практических навыков, которые позволят Вам к концу занятий овладеть основами программирования современных графических процессоров (GPU) NVIDIA.

Видеокурс №1
(А. Шевченко, А. Ивахненко, 2013 г.)

http://forumfiles.ru/files/000c/4b/84/94641.png

Видеокурс №2
(Е. Перепёлкин, 2014 г.)

http://forumfiles.ru/files/000c/4b/84/94641.png

Материалы к видеокурсам

http://forumfiles.ru/files/000c/4b/84/76762.gif

Онлайн-тестирование
по видеокурсу №1

http://forumfiles.ru/files/000c/4b/84/22783.png

Заметка:
Для лучшего усвоения видеоматериалов по программированию графических процессоров NVIDIA следует знать основы программирования на С/C++. Для тех, кто не обладает знаниями в данных языках программирования и не имеет достаточно времени для покрытия данного пробела, рекомендую пройти обучение по С++ посредством ресурса sololearn. Приложение по обучению можно установить на смартфон или планшет, что позволяет иметь обучающий ресурс всегда под рукой.

C++ Tutorial

http://forumfiles.ru/files/000c/4b/84/91778.png

11

Вадим Коробейников написал(а):

1. Латентность - количество тактов между появлением инструкции и завершением ее исполнения.
     Судя по количеству тактов, которое равно 11, можно сделать вывод что речь идет латентности арифметических операций. (Т.к. латентность инструкций обращения в память в разы выше, например для доступа к глобальной памяти это 400-800 тактов).
     Полная загруженность вычислительных ресурсов достигается когда все планировщики варпов в каждом такте имеют варп, готовый на исполнение. Таким образом, латентности каждой инструкции скрывается путем передачи инструкций на исполнение другим варпам.

2. Существует теорема Литтла (Little's Law), которая может быть применена и для GPU:

Необходимое_число_варпов = Латентность * Число_исполняемых_варпов_за_такт

     В нашем случае латентность равна 11, чтобы иметь 4 варпа (при этом достигается полная загруженность при 4х планировщиках варпов) запущенными в одном и том же цикле, нам нужно 11*4 = 44 варпа.

Professional CUDA  Programming (page 90)

Отредактировано Вадим Коробейников (Вчера 23:27:50)


Пожалуй, наиболее полный и правильный ответ. Мне думается, что в лекции следовало бы отметить, что требуется загрузить 11 срезов инструкций 4-х варпов для передачи инструкций ядрам (core) без задержек. Порой возникает недоумение, когда говорят, что нужно 44 варпа для покрытия латентности в 11 тактов, ведь варп это группа из 32 нитей, где каждая нить итак содержит множество инструкций. Но это только мое понимание. Готов подискутировать. :)

Ниже прилагаю описание работы Dual Warp Scheduler архитектуры Fermi (GT200).

The SM schedules threads in groups of 32 parallel threads called warps. Each SM features two
warp schedulers and two instruction dispatch units, allowing two warps to be issued and
executed concurrently. Fermi’s dual warp scheduler selects two warps, and issues one
instruction from each warp to a group of sixteen cores, sixteen load/store units, or four SFUs.
Because warps execute independently, Fermi’s scheduler does not need to check for
dependencies from within the instruction stream. Using this elegant model of dual-issue, Fermi
achieves near peak hardware performance.

https://pp.vk.me/c631319/v631319045/22e22/qntqxnSl-aw.jpg

Most instructions can be dual issued; two integer instructions, two floating instructions, or a
mix of integer, floating point, load, store, and SFU instructions can be issued concurrently.
Double precision instructions do not support dual dispatch with any other operation.


Полный материал доступен по ссылке.

Сравнение с теоремой Литтла просто шикарное! Для тех, кто не в курсе:

Первое доказательство теоремы было представлено сравнительно недавно - в 1961г. Оно было сделано Джоном Литтлом (John Dutton Conant Little), который последние 47 лет работает профессором Массачусетского Технологического Института. Кроме теоремы, Литтл известен своими работами по маркетингу и считается родоначальником научного подхода в этой области (marketing science).

Классическая, более известная формулировка теоремы гласит, что среднее количество клиентов (N) в стабильно-функционирующей системе, равно произведению усредненной скорости прибытия клиентов (lambda) на среднее время, которое они проводят в системе(T):

https://pp.vk.me/c631319/v631319045/22e29/ynPsOzhZZAM.jpg

Хочется заметить, что это, на первый взгляд, простое соотношение, удивительным образом никак не зависит от распределения вероятности прибытия клиентов и, соответственно, не требует никаких знаний или предположений о том по каким расписаниям они будут появляться и обслуживаться в системе.


Вы здесь » Научно-образовательный IT-форум при КНИТУ-КАИ » Теоретические материалы » Программирования графических процессоров NVIDIA