«Автоматическое отображение Фортран-программ на графический процессор»


Моделирование порядка исполнения блоков



бет5/7
Дата19.07.2016
өлшемі1.18 Mb.
#209881
түріДипломная работа
1   2   3   4   5   6   7

4.4 Моделирование порядка исполнения блоков

При отсутствии зависимостей все блоки вычислительной решётки выполняются параллельно, по мере освобождения ресурсов ускорителя, без синхронизации между собой. Пусть num_launches обозначает необходимое для выполнения всех итераций число запусков ядровой функции цикла. В случае, когда зависимости отсутствуют, num_launches = 1, т.к. алгоритм построения вычислительной предполагает полное заполнение пространства витков блоками.


Зависимостью длины p называется ситуация, при которой виток i не может быть выполнен, пока не завершится виток i-p. При наличии зависимостей длины n по какому-либо измерению, не более p последовательных итераций этого измерения могут быть выполнены параллельно. Пусть у параллельного цикла было m измерений и присутствует зависимость длины nj по измерению j (j > 1, j <= m). Тогда в связи с построением вычислительной сетки (описание приведено выше) длина зависимости в вычислительной решётке nj0 составит:
nj0 =  + nj, (11)
где количество итераций параллельного цикла по измерению k.
Понятно, что с точки зрения организации конвейерного исполнения блоков нас интересует зависимость минимальной длины n:
n = min(nj0), где 1 <= j0 <= m (12)
В таком случае организуется конвейер, в котором первые n блоков выполнятся последовательно (разгон конвейера), после чего выполняются блоки, для которых ожидаемые данные уже готовы. При этом число последовательных запусков функции-ядра равно:
num_launches = n + ceil (num_iterations / (*gridsize)) - 1 (13)
где ceil() – функция округления вверх, num_iterations – общее число итераций, blocksize – размеры блока по числу нитей, gridsize – количество блоков в сетке.


5 Прогнозирование выполнения модели

В данном разделе вводится модель графического ускорителя и приводится расчёт характеристик выполнения по построенной ранее модели программы. Результат зависит в равной степени как от свойств программы, так и от параметров ускорителя.




5.1 Модель графического ускорителя

В данном исследовании производится статический анализ кода программы, эффективность работы рассчитывается аналитически. Согласно поставленной задаче имитация работы ускорителя не требуется, поэтому модель ускорителя – это набор числовых параметров.




Параметр

Описание

Значение для TeslaC2050

arithm_latency

Задержка в тактах на выполнение одной арифметической операции

2

bandwidth

Пропускная способность канала памяти, гигабайт/сек.

144

cores_per_sm

Число шейдерных АЛУ в потоковом мультипроцессоре

32

compute_cap

Версия прошивки и вычислительные возможности

2.0

delay_coal

Задержка между двумя последовательными выровненными операциями с памятью

4

delay_uncoal

Задержка между двумя последовательными невыровненными операциями с памятью

40

frequency

Тактовая частота процессорного ядра, мегагерц

1150

glob_mem_latency

Задержка в тактах на выполнение одной транзакции обмена с глобальной памятью

500

reciproc_latency

Задержка в тактах выполнения одной операции, содержащей возможное приведение типа переменных

16

switch_latency

Задержка в тактах на переключение контекста активных блоков

3000

sm_num

Число потоковых мультипроцессоров

14

Таблица 1. Модель ускорителя
Помимо параметров, перечисленных выше, существует набор технических характеристик, который является универсальным для каждого ускорителя с определённой версией CUDA compute capability.


Параметр

Описание

Значение для версии 2.0

max_block_dims

Максимальное число размерностей решётки нитей в блоке

3

max_blocks_per_sm

Максимальное число одновременно запускаемых блоков на одном мультипроцессоре

8

max_grid_dims

Максимальное число размерностей решётки блоков

3

max_regs_per_sm

Число регистров на каждом мультипроцессоре

32768

max_thread_per_block

Максимальное число нитей в блоке

1024

max_warps_per_sm

Максимальное число варпов, запускаемых одновременно на одном потоковом мультипроцессоре

48

shared_mem_per_sm

Объём разделяемой памяти в байтах на каждом мультипроцессоре

49152

Таблица 2. Модель ускорителя. Характеристики, зависящие от compute capability



Достарыңызбен бөлісу:
1   2   3   4   5   6   7




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет