Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Архитектура Tesla. Программно-аппаратный стек CUDA

Содержание

Примеры многоядерных системНа первой лекции мы рассмотрелиIntel Core 2 DuoSMPCellBlueGene/LG80 / Tesla
Архитектура Tesla. Программно-аппаратный стек CUDA. Лекторы:Боресков А.В. (ВМиК МГУ)Харламов А.А. (NVidia) Примеры многоядерных системНа первой лекции мы рассмотрелиIntel Core 2 DuoSMPCellBlueGene/LG80 / Tesla Примеры многоядерных системМы хотели обратить ваше внимание на следующие особенности:Как правило вычислительный Tesla vs GeForceУ кого есть вопросы в чем разница? ПланАрхитектура TeslaПрограммная модель CUDAСинтаксические особенности CUDA Архитектура Tesla: Мультипроцессор Tesla 8 Архитектура Tesla Мультипроцессор Tesla 10 Архитектура Tesla 10Interconnection Network АрхитектураМаштабируемость:[+][-] SM внутри TPC[+][-] TPC[+][-] DRAM партицииСхожие архитектуры:Tesla 8:  8800 GTXTesla 10: GTX 280 Технические деталиRTM CUDA Programming GuideRun CUDAHelloWorldПечатает аппаратно зависимые параметрыРазмер shared памятиКол-во SMРазмер ПланАрхитектура TeslaСинтаксические особенности CUDAПрограммная модель CUDA Программная модель CUDA GPU (device) это вычислительное устройство, которое:Является сопроцессором к CPU Программная модель CUDAПоследовательные части кода выполняются на CPUМассивно-параллельные части кода выполняются на Программная модель CUDAПараллельная часть кода выполняется как большое количество нитейНити группируются в Программная модель CUDAДесятки тысяч потоковfor (int ix = 0; ix < nx; Программная модель CUDAПотоки в CUDA объединяются в блоки:Возможна 1D, 2D, 3D топология Программная модель CUDAПотоки в блоке могут разделять ресурсы со своими соседямиfloat g_Data[gN];for Программная модель CUDAБлоки могут использовать shared память Т.к. блок целиком выполняется на Программная модель CUDAБлоки потоков объединяются в сетку (grid) потоковВозможна 1D, 2D топология сетки блоков потоков ПланАрхитектура TeslaСинтаксические особенности CUDAПрограммная модель CUDA Синтаксис CUDA CUDA – это расширение языка C [+] спецификаторы для функций Синтаксис CUDA СпецификаторыСпецификатор функцийСпецификатор переменных Синтаксис CUDA Встроенные переменные Сравним CPU код vs CUDA kernel:__global__ void incKernel Синтаксис CUDA Встроенные переменныеВ любом CUDA kernel’e доступны:dim3 gridDim;uint3 blockIdx;dim3 blockDim;uint3 threadIdx;int Синтаксис CUDA  Директивы запуска ядраКак запустить ядро с общим кол-во тредов Как скомпилировать CUDA кодNVCC – компилятор для CUDAОсновными опциями команды nvcc являются:-deviceemu - компиляция в Ресуры нашего курса	CUDA.CS.MSU.SUМесто для вопросов и дискуссийМесто для материалов нашего курсаМесто для
Слайды презентации

Слайд 2 Примеры многоядерных систем
На первой лекции мы рассмотрели
Intel Core

Примеры многоядерных системНа первой лекции мы рассмотрелиIntel Core 2 DuoSMPCellBlueGene/LG80 / Tesla

2 Duo
SMP
Cell
BlueGene/L
G80 / Tesla


Слайд 3 Примеры многоядерных систем
Мы хотели обратить ваше внимание на

Примеры многоядерных системМы хотели обратить ваше внимание на следующие особенности:Как правило

следующие особенности:
Как правило вычислительный узел – достаточно маломощный процессор
Вычислительные

узлы имеют свою оперативную память и свой кэш
Вычислительные узлы объединяются в более крупные блоки
Крупные блоки могут объединяться с целью наращивания вычислительной мощи


Слайд 4 Tesla vs GeForce
У кого есть вопросы в чем

Tesla vs GeForceУ кого есть вопросы в чем разница?

разница?


Слайд 5 План
Архитектура Tesla
Программная модель CUDA
Синтаксические особенности CUDA

ПланАрхитектура TeslaПрограммная модель CUDAСинтаксические особенности CUDA

Слайд 6 Архитектура Tesla: Мультипроцессор Tesla 8

Архитектура Tesla: Мультипроцессор Tesla 8

Слайд 7 Архитектура Tesla Мультипроцессор Tesla 10

Архитектура Tesla Мультипроцессор Tesla 10

Слайд 8 Архитектура Tesla 10
Interconnection Network

Архитектура Tesla 10Interconnection Network

Слайд 9 Архитектура
Маштабируемость:
[+][-] SM внутри TPC
[+][-] TPC
[+][-] DRAM партиции
Схожие архитектуры:
Tesla

АрхитектураМаштабируемость:[+][-] SM внутри TPC[+][-] TPC[+][-] DRAM партицииСхожие архитектуры:Tesla 8: 8800 GTXTesla 10: GTX 280

8: 8800 GTX
Tesla 10: GTX 280


Слайд 10 Технические детали
RTM CUDA Programming Guide
Run CUDAHelloWorld
Печатает аппаратно зависимые

Технические деталиRTM CUDA Programming GuideRun CUDAHelloWorldПечатает аппаратно зависимые параметрыРазмер shared памятиКол-во

параметры
Размер shared памяти
Кол-во SM
Размер warp’а
Кол-во регистров на SM

т.д.

Слайд 11 План
Архитектура Tesla
Синтаксические особенности CUDA
Программная модель CUDA

ПланАрхитектура TeslaСинтаксические особенности CUDAПрограммная модель CUDA

Слайд 12 Программная модель CUDA
GPU (device) это вычислительное устройство,

Программная модель CUDA GPU (device) это вычислительное устройство, которое:Является сопроцессором к

которое:
Является сопроцессором к CPU (host)
Имеет собственную память (DRAM)
Выполняет одновременно

очень много нитей


Слайд 13 Программная модель CUDA
Последовательные части кода выполняются на CPU
Массивно-параллельные

Программная модель CUDAПоследовательные части кода выполняются на CPUМассивно-параллельные части кода выполняются

части кода выполняются на GPU как ядра
Отличия нитей между

CPU и GPU
Нити на GPU очень «легкие»
HW планировщик задач
Для полноценной загрузки GPU нужны тысячи нитей
Для покрытия латентностей операций чтения / записи
Для покрытия латентностей sfu инструкций



Слайд 14 Программная модель CUDA
Параллельная часть кода выполняется как большое

Программная модель CUDAПараллельная часть кода выполняется как большое количество нитейНити группируются

количество нитей
Нити группируются в блоки фиксированного размера
Блоки объединяются в

сеть блоков
Ядро выполняется на сетке из блоков
Каждая нить и блок имеют свой идентификатор


Слайд 15 Программная модель CUDA
Десятки тысяч потоков
for (int ix =

Программная модель CUDAДесятки тысяч потоковfor (int ix = 0; ix <

0; ix < nx; ix++)
{
pData[ix] = f(ix); }
for

(int ix = 0; ix < nx; ix++)
for (int iy = 0; iy < ny; iy++)
{
pData[ix + iy * nx] = f(ix) * g(iy); }

for (int ix = 0; ix < nx; ix++)
for (int iy = 0; iy < ny; iy++)
for (int iz = 0; iz < nz; iz++)
{
pData[ix + (iy + iz * ny) * nx] = f(ix) * g(iy) * h(iz); }


Слайд 16 Программная модель CUDA
Потоки в CUDA объединяются в блоки:
Возможна

Программная модель CUDAПотоки в CUDA объединяются в блоки:Возможна 1D, 2D, 3D

1D, 2D, 3D топология блока
Общее кол-во потоков в блоке

ограничено
В текущем HW это 512 потоков

Слайд 17 Программная модель CUDA
Потоки в блоке могут разделять ресурсы

Программная модель CUDAПотоки в блоке могут разделять ресурсы со своими соседямиfloat

со своими соседями
float g_Data[gN];
for (int ix = 0; ix

< nx; ix++)
{
pData[ix] = f(ix, g_Data[ix / n]); }

Слайд 18 Программная модель CUDA
Блоки могут использовать shared память
Т.к.

Программная модель CUDAБлоки могут использовать shared память Т.к. блок целиком выполняется

блок целиком выполняется на одном SM
Объем shared памяти

ограничен и зависит от HW
Внутри Блока потоки могут синхронизоваться
Т.к. блок целиком выполняется на одном SM

Слайд 19 Программная модель CUDA
Блоки потоков объединяются в сетку (grid)

Программная модель CUDAБлоки потоков объединяются в сетку (grid) потоковВозможна 1D, 2D топология сетки блоков потоков

потоков
Возможна 1D, 2D топология сетки блоков потоков


Слайд 20 План
Архитектура Tesla
Синтаксические особенности CUDA
Программная модель CUDA

ПланАрхитектура TeslaСинтаксические особенности CUDAПрограммная модель CUDA

Слайд 21 Синтаксис CUDA
CUDA – это расширение языка C

Синтаксис CUDA CUDA – это расширение языка C [+] спецификаторы для

[+] спецификаторы для функций и переменных
[+] новые встроенные

типы
[+] встроенные переменные (внутри ядра)
[+] директива для запуска ядра из C кода
Как скомпилировать CUDA код
[+] nvcc компилятор
[+] .cu расширение файла

Слайд 22 Синтаксис CUDA Спецификаторы
Спецификатор функций
Спецификатор переменных

Синтаксис CUDA СпецификаторыСпецификатор функцийСпецификатор переменных

Слайд 23 Синтаксис CUDA Встроенные переменные
Сравним CPU код vs CUDA

Синтаксис CUDA Встроенные переменные Сравним CPU код vs CUDA kernel:__global__ void

kernel:
__global__ void incKernel ( float * pData )
{

int idx = blockIdx.x * blockDim.x + threadIdx.x;
pData [idx] = pData [idx] + 1.0f;
}

float * pData;
for (int ix = 0; ix < nx; ix++)
{
pData[ix] = pData[ix] + 1.0f; }

Пусть nx = 2048
Пусть в блоке 256 потоков

 кол-во блоков = 2048 / 256 = 8

[ 0 .. 7 ]

[ == 256]

[ 0 .. 255 ]


Слайд 24 Синтаксис CUDA Встроенные переменные
В любом CUDA kernel’e доступны:
dim3 gridDim;
uint3

Синтаксис CUDA Встроенные переменныеВ любом CUDA kernel’e доступны:dim3 gridDim;uint3 blockIdx;dim3 blockDim;uint3

blockIdx;
dim3 blockDim;
uint3 threadIdx;
int warpSize;
dim3 – встроенный тип, который

используется для задания размеров kernel’а
По сути – это uint3.

Слайд 25 Синтаксис CUDA Директивы запуска ядра
Как запустить ядро с

Синтаксис CUDA Директивы запуска ядраКак запустить ядро с общим кол-во тредов

общим кол-во тредов равным nx?
incKernel ( pData );
dim3

threads(256, 1, 1);
dim3 blocks(nx / 256, 1);

float * pData;

<<< , >>> угловые скобки, внутри которых задаются параметры запуска ядра:
Кол-во блоке в сетке
Кол-во потоков в блоке

Неявно предпологаем, что nx кратно 256


Слайд 26 Как скомпилировать CUDA код
NVCC – компилятор для CUDA
Основными

Как скомпилировать CUDA кодNVCC – компилятор для CUDAОсновными опциями команды nvcc являются:-deviceemu - компиляция

опциями команды nvcc являются:
-deviceemu - компиляция в режиме эмуляции, весь код будет

выполняться в многонитевом режиме на CPU и можно использовать обычный отладчик (хотя не все ошибки могут проявится в таком режиме)
--use_fast_math - заменить все вызовы стандартных математических функций на их быстрые (но менее точные) аналоги
-o  - задать имя выходного файла
CUDA файлы обычно носят расширение .cu



Слайд 27 Ресуры нашего курса
CUDA.CS.MSU.SU
Место для вопросов и дискуссий
Место для

Ресуры нашего курса	CUDA.CS.MSU.SUМесто для вопросов и дискуссийМесто для материалов нашего курсаМесто

материалов нашего курса
Место для ваших статей!
Если вы нашли какой-то

интересный подход!
Или исследовали производительность разных подходов и знаете, какой из них самый быстрый!
Или знаете способы сделать работу с CUDA проще!
Steps3d
www.nvidia.ru


  • Имя файла: arhitektura-tesla-programmno-apparatnyy-stek-cuda.pptx
  • Количество просмотров: 86
  • Количество скачиваний: 0
- Предыдущая Музей живой воды