Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CUDA_full / L03_Threads_Memory.pptx
Скачиваний:
58
Добавлен:
27.03.2015
Размер:
804.55 Кб
Скачать

Вариант 5

При s <= 32 в блоке работает только один варп.

Можно развернуть цикл, избавившись от синхронизации и проверки условия.

for ( int s = blockDim.x / 2; s > 32; s >>= 1 ) { if ( tid < s )

data [tid] += data [tid + s];

__syncthreads ();

}

if ( tid < 32 ) { // unroll last iterations data [tid] += data [tid + 32];

data [tid] += data [tid + 16]; data [tid] += data [tid + 8]; data [tid] += data [tid + 4]; data [tid] += data [tid + 2]; data [tid] += data [tid + 1];

}

Н. Новгород, 2012 г.

Исполнение потоков. Иерархия памяти

61

Результаты

Вариант

Время

алгоритма

выполнения

 

(миллисекунды

 

)

1

19.09

2

11.91

3

10.62

4

9.10

Возможна дальнейшая5 оптимизация: 8полное.67 разворачивание на этапе компиляции при помощи параметров шаблонов. В примере в SDK данный вариант

реализован.

Н. Новгород, 2012 г.

Исполнение потоков. Иерархия памяти

62

Материалы

Линев А.В., Боголепов Д.К., Бастраков С.И. «Технологии параллельного программирования для процессоров новых архитектур» / Учебник.

Дополнительная подготовка магистров по программе «Суперкомпьютерные технологии»: http://hpcc.unn.ru/?doc=493

NVIDIA CUDA C Programming Guide v. 4.1.

А.В. Боресков, А.А. Харламов «Основы работы с технологией CUDA» и материалы курса по CUDA в МГУ: https://sites.google.com/site/cudacsmsusu/file-cabinet

Д. Сандерс, Э. Кэндрот «Технология CUDA в примерах: введение в программирование графических процессоров» (пер. с англ.).

Н. Новгород, 2012 г.

Исполнение потоков. Иерархия памяти

63

Соседние файлы в папке CUDA_full