SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
Архитектура и программирование
потоковых многоядерных процессоров
для научных расчётов

Лекция 4. Объединённая архитектура
графических процессоров Основные
процессоров.
составные элементы аппаратной
реализации GPU
GPU процессоры
Процессоры
G80 – 90nm (260/150W)
G92 - 65nm (110/~60W)
Регулярная вычислительная
структура – мало памяти
Тактирован
NVClock (periphery logic)
Hot Clock (SM cores)
Mem Clock (DRAM access
cirquits)

Знание вычислительной
архитектуры необходимо
для успешного
программирования
Аппаратная архитектура GPU

TPC

TPC

TPC

Texture Processor Cluster

TPC

TPC

TPC

TPC

Streaming Multiprocessor
Instruction L1

SM

TPC

Data L1

Instruction Fetch/Dispatch
Shared Memory

TEX

SP
SM

SP

SP

SP
SFU

SFU

SP

SP

SP

SP

SPA - Streaming
Processor Array (8x TPC)
TPC - Texture Processor
Cluster (2
Cl t (2x SM + TEX)
SM - Streaming
Multiprocessor (8x SP)
Multi-threaded
processor core
Fundamental
processing unit for
CUDA thread block
SP - Streaming Processor
Scalar ALU for a
single CUDA thread
g
Цели проекта GeForce 8800
Традиционно GPU были кристаллами для наиболее
эффективного исполнения одной программы
Разделение вычислений и операций с пмятью
Запуск произвольных (менее предсказуемых программ) – CUDA
Соотношение количества вычислений/переносов данных
Очерёдность вычислений/переносов данных

Совмещение аппаратного обесп. для обсчёта векторных и
растровых изображений
Скаляризация ALU
Облегчение работы компилятора
Унифицированная архитектура

Унификация
исполняющих элементов
Повышение
программируемости
Последовательность
д
операций жёстко
задана архитектурой
Программируемая
архитектура
Что такое ВОРП (WARP)?
Device делает 1 grid в любой момент

Device
Multiprocessor N

SM обрабатывает 1 или более blocks
Multiprocessor 2

Каждый Block разделён на SIMD группы,
внутри которых одни и те же инструкции
выполняются реально одновременно над
различными данными (warps) warp
size=16/32

Multiprocessor 1
Shared Memory
Register
s

Register
s

Processor
1

Processor
2

Важно! Полуворп – первая или вторая
половина ворпа

Processor
M

Instructio
n
Unit

Constant
Cache

Связывание в ворпы детерминировано в
порядке нарастания threadID
threadID=TIDX.x+TIDX.y*Dx+TIDX.z*Dx*Dy

…

Register
s

Texture
Cache

Device memory
Texture Processor Cluster (TPC)
TPC
SM 0
Instruction Fetch

T

Instruction L

e

1 Cache

Instruction Decode

x

T

t

e

u

x

I

Shared Memory
SP 0

R

SP 1

R

R

SP 5

SP 2

R

R

SP 6

R

R

SP 7

F

r

t

e

u

U

L

S

D

F

Constant L

r

&

SP 4

SP 3

S

R

e

U

L

1 Cache

2

SM 1

1

C

Instruction Fetch
Instruction L

U

1 Cache

a

Instruction Decode
I t
ti D
d

C

n

a

i

c

t

h
e

c

Shared Memory
SP 0

S

R

R

SP 1

R

R

SP 5

h

SP 4

F
U

TEX – Т
Текстурный блок – логика
йб
адресации текстурных массивов в 1D,
2D, 3D
+ L1 Кэш Текстур

S
F

SP 2

R

R

SP 6

SP 3

R

R

SP 7

Constant L

1 Cache

Load/Store

U

e

L2 Кэш инструкций и данных для обоих
SM
x2 Потоковых Мультипроцессора
(St ea
(Streaming Multiprocessor)
g u t p ocesso )
x8 потоковых процессоров (streaming
processors) = 8 MAD/clock cycle
Регистры для хранения промежуточных
р
р
р
у
результатов у выполняемых тредов =>
больше тредов лучше скрыты операции
чтения, но межет не хватить регистров
Streaming Multiprocessor (SM)
Streaming Multiprocessor

( SM )

Instruction Fetch

Instruction L

Thread

8 Streaming Processors (SP)

1 Cache

L 1 Fill

2 Super Function Units (SFU) –
сложные функции (sin cos, etc.)
(sin, cos etc )

/ Instruction Dispatch

Work

Shared Memory

Control

SP 0

S

RF 0

RF 4

SP 4

SP 1

RF 1

RF 5

SP 5

Results

S

F

U

1 - 512 потоков активны в
кажд.момент
SIMD инструкции для ворпов
16/32 тредов !!!! ВЕТВЛЕНИЯ

F

U

Много-поточная доставка
инструкций

SP 2

RF 2

RF 6

SP 6

SP 3

RF 3

RF 7

SP 7
Load Texture

Constant L

Load from Memory

1 Cache

L 1 Fill
Store to
Store to Memory

Hot clock = 1.35 GHz
20+ GFLOPS для каждого SP
Локальный регистровый файл
(RFn)
16 KB разделяемой памяти
Streaming Processors (SP)
Скалярный FP MAD ALU
Место исполнения инструкции в 1
треде в 1 момент времени

Shared Memory

SP 0

S

RF 0

RF 4

SP 4

SP 1

RF 1

RF 5

SP 5

S

F

F

U

SFU разделены между SP

U

SP 2

RF 2

RF 6

SP 6

SP 3

RF 3

RF 7

SP 7

Размер RF – 32KB Е
Р
Если
переполнен – отправляется в
локальную память
Для оптимальной загрузки
MAD/SFU конвейера ~ 8 варпов
Буфер инструкций SM
Буфер инструкций выбирает варп и инструкцию,
которые будут исполнены в следующий момент
времени

I$
L1

Multithreaded
Instruction Buffer

R
F

C$
L1

Shared
Mem

Operand Select

MAD

SFU

Критерии выбора:
Готовность данных
Длительность исполнения ворпа (старые имеют
приоритет)
)
Активный ворп будет исполнять свои инструкции
последовательно, пока не возникнет ситуация,
мешающая
Нет промежуточных результатов для новой
Не прочитаны операнды из памяти
Загрузка конвейера
Программно 32/16 тредов на варп
Аппаратно 8 SP в каждом SM
Ветвления внутри ворпа
Ветвления разрушают SIMD структуру исполнения
Инструкции ложной ветви не исполняются для текущего
треда
Время теряется как если бы все треды ворпа прошли всеми
возможными путями (последовательно)
Компилятор может востанавливать точки ре-синхронизации,
рассинхронизировавшихся тредов
Программист может помогать используя __syncthreads();
Регистровый файл SM
I$
L1

Multithreaded
Instruction Buffer

R
F

C$
L1

Shared
Mem

Operand Select

MAD

В каждом SM регистровый ф
д
р
р
файл
Размер = 32K
Распределён неравномерно между
SP

SFU

За один clock можно прочитать 4
операнда для каждого SP
TEX и Load/Store могут читать и
писать RF
Память констант
RO память констант находится в
DRAM на плате

I$
L1

Multithreaded
Instruction Buffer

R
F

C$
L1

Shared
Mem

Operand Select

MAD

SFU

Каждый из SM имеет L1 кэш (RO) в
операциях с памятью констант
р
Константы могут адресоваться
без индекса
Линейный индекс на основе threadID
й й
h
d
Разделяемая память
В каждом SM – 16 k RW разделяемой
й
памяти

I$
L1

16 банков 32-битных слов

Multithreaded
Instruction Buffer

R
F

C$
L1

Последовательная адреса ячеек
принадлежат последовательным банкам

Shared
Mem

Обращения к разным банкам возможны
одновременно

Operand Select

MAD

Обращения с конфликтами
реализуются как несколько
полледовательных обращений

SFU

BANK0

BANK1

BANK2

…

BANK15

word 0

word 1

word 2

word 15

word 16

word 17

word 18

word 31

word 32
d

word 33
d

word 34
d

word 47
d

word 4081

word 4082

word 4095

…
word 4080

Каждое чтение исполняется от тредов
полуворпа
Конвейеры исполнения комманд
Скалярный конвейер MAD (SP )
С
й
й
(SPs)

I$
L1

FMUL,FADD,FMAD
Целочисленные операции, приведение типов
1 инструкция за 1 clock

Multithreaded
Instruction Buffer

R
F

C$
L1

Shared
Mem

Operand Select
O
dS l t

MAD

SFU

Скалярный конвейер SFU
RCP,RSQ,LG2,EX2,SIN,COS
, Q,
,
,
,
1 инструкция за 4 clocks
можно также реализовывать FMUL, MOV

TEX конвейер (RO lдоступ к табулированным
константам)
LoaD / STore конвейер
Перенос содержимого регистров в/из локальную
память
Доступ к локальной и глобальной памяти
Parallel Thread eXecution
Virtual Machine (PTX VM )
C/C++
Application

Library
Programmer

C/C++
Compiler
PTX Code

PTX Code

PTX to Target

Translator
C

G80

…

Target code

GPU

Parallel Th
P
ll l Thread eXecution (PTX)
d X
ti
Virtual Machine, а также ISA
Программная модель
р р
ISA – Instruction Set Architecture
Variable declarations
Instructions and operands
Транслятор – оптимизирующий
компилятор
Трансляция PTX исполняемый
р
код
Драйвер видеокарты реализует VM
runtime
PTX код (пример1)

CUDA

float4 me = gx[gtid];
me.x += me.y * me.z;

PTX

ld.global.v4.f32 {$f1,$f3,$f5,$f7}, [$r9+0];
# 174
me.x += me.y * me.z;
mad.f32
$f1, $f5, $f3, $f1;
PTX Код (пример 2)
CUDA
__device__ void interaction(
float4 b0, float4 b1, float3 *accel)
{
r.x = b1.x - b0.x;
r.y = b1.y - b0.y;
r.z b1 z b0.z;
r z = b1.z - b0 z;
float distSqr = r.x * r.x + r.y * r.y + r.z * r.z;
float s = 1.0f/sqrt(distSqr);
accel->x += r.x * s;
accel->y += r.y * s;
accel->z += r.z * s;
}

PTX
sub.f32
sub.f32
sub.f32
mul.f32
mul.f32
mul.f32
add.f32
add.f32
rsqrt.f32
mad.f32
mov.f32
mad.f32
d f32
mov.f32
mad.f32
mov.f32
f32

$f18, $f1, $f15;
$ , $ , $f16;
$f19, $f3, $ ;
$f20, $f5, $f17;
$f21, $f18, $f18;
$f22, $f19, $f19;
$f23, $f20, $f20;
$f24, $f21, $f22;
$f25, $f23, $f24;
$f26, $f25;
$f13, $f18, $f26, $f13;
$f14, $f13;
$f11 $f19 $f26 $f11
$f11, $f19, $f26, $f11;
$f12, $f11;
$f9, $f20, $f26, $f9;
$f10 $f9
$f10, $f9;
Итоги лекции
В результате лекции студенты должны :
Понимать преимущества объединённой архитектуры
нового поколения графических процессоров
Понимать принципиальные элементы архитектуры GPU
процеccоров
Иметь возможность применить практически знание
архитектуры для оптимизации программ
Достаточные знания для начала самостоятельной работы

Weitere ähnliche Inhalte

Was ist angesagt?

Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
 
Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Mikhail Kurnosov
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Mikhail Kurnosov
 
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...Mikhail Kurnosov
 
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...Mikhail Kurnosov
 
Лекция №6 Организация ЭВМ и систем
Лекция №6 Организация ЭВМ и системЛекция №6 Организация ЭВМ и систем
Лекция №6 Организация ЭВМ и системpianist2317
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Mikhail Kurnosov
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Mikhail Kurnosov
 
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятьюПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятьюAlexey Paznikov
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Mikhail Kurnosov
 
Лекция 9. Программирование GPU
Лекция 9. Программирование GPUЛекция 9. Программирование GPU
Лекция 9. Программирование GPUMikhail Kurnosov
 
CUDA Course 2010 at MSU
CUDA Course 2010 at MSUCUDA Course 2010 at MSU
CUDA Course 2010 at MSUlarhat
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Mikhail Kurnosov
 
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияAlexey Paznikov
 
025
025025
025JIuc
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
присяжный Root Conf2009 Beta 1
присяжный Root Conf2009 Beta 1присяжный Root Conf2009 Beta 1
присяжный Root Conf2009 Beta 1Liudmila Li
 
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX ThreadsПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX ThreadsAlexey Paznikov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPMikhail Kurnosov
 
Лекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk PlusЛекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk PlusMikhail Kurnosov
 

Was ist angesagt? (20)

Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
 
Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
 
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
 
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
 
Лекция №6 Организация ЭВМ и систем
Лекция №6 Организация ЭВМ и системЛекция №6 Организация ЭВМ и систем
Лекция №6 Организация ЭВМ и систем
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятьюПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)
 
Лекция 9. Программирование GPU
Лекция 9. Программирование GPUЛекция 9. Программирование GPU
Лекция 9. Программирование GPU
 
CUDA Course 2010 at MSU
CUDA Course 2010 at MSUCUDA Course 2010 at MSU
CUDA Course 2010 at MSU
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
 
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
 
025
025025
025
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
присяжный Root Conf2009 Beta 1
присяжный Root Conf2009 Beta 1присяжный Root Conf2009 Beta 1
присяжный Root Conf2009 Beta 1
 
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX ThreadsПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Лекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk PlusЛекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk Plus
 

Andere mochten auch

Спецкурс Разработка серверов и серверных приложений лекция №1
Спецкурс Разработка серверов и серверных приложений лекция №1Спецкурс Разработка серверов и серверных приложений лекция №1
Спецкурс Разработка серверов и серверных приложений лекция №1Eugeniy Tyumentcev
 
аппаратное обеспечение
аппаратное обеспечениеаппаратное обеспечение
аппаратное обеспечениеttku
 
Технологии Intel для построения эффективной инфраструктуры
Технологии Intel для построения эффективной инфраструктурыТехнологии Intel для построения эффективной инфраструктуры
Технологии Intel для построения эффективной инфраструктурыCisco Russia
 
Лекция №12 Организация ЭВМ и систем
Лекция №12 Организация ЭВМ и системЛекция №12 Организация ЭВМ и систем
Лекция №12 Организация ЭВМ и системpianist2317
 
Hyper Threading Technology
Hyper Threading TechnologyHyper Threading Technology
Hyper Threading Technologyalxik
 
развитие ситуации на мировом рынке процессоров пк
развитие ситуации на мировом рынке процессоров пкразвитие ситуации на мировом рынке процессоров пк
развитие ситуации на мировом рынке процессоров пкElena Nazarova
 
Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...
Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...
Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...Cisco Russia
 
Презентация: Cерверные решения ЦМО
Презентация: Cерверные решения ЦМОПрезентация: Cерверные решения ЦМО
Презентация: Cерверные решения ЦМОElizaveta Artamonova
 
материнская плата
материнская плата материнская плата
материнская плата yadykinvladuslav
 
Презентация №5. ИНФРАСТРУКТУРА ЦОД: что нужно знать про СКС, электропитание,...
Презентация №5. ИНФРАСТРУКТУРА ЦОД: что нужно знать про СКС, электропитание,...Презентация №5. ИНФРАСТРУКТУРА ЦОД: что нужно знать про СКС, электропитание,...
Презентация №5. ИНФРАСТРУКТУРА ЦОД: что нужно знать про СКС, электропитание,...SINTO
 
Лекция №15 Организация ЭВМ и систем
Лекция №15 Организация ЭВМ и системЛекция №15 Организация ЭВМ и систем
Лекция №15 Организация ЭВМ и системpianist2317
 
Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...
Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...
Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...DEPO Computers
 
35
3535
35JIuc
 
лекция 9
лекция 9лекция 9
лекция 9JIuc
 
VMware vCloud Director Overview in Russian
VMware vCloud Director Overview in RussianVMware vCloud Director Overview in Russian
VMware vCloud Director Overview in Russianareconster
 
033
033033
033JIuc
 
46
4646
46JIuc
 
31
3131
31JIuc
 
Оптимизация ИТ в виртуальном частном облаке: основные вопросы для обсуждения
Оптимизация ИТ в виртуальном частном облаке: основные вопросы для обсужденияОптимизация ИТ в виртуальном частном облаке: основные вопросы для обсуждения
Оптимизация ИТ в виртуальном частном облаке: основные вопросы для обсужденияMichael Kozloff
 

Andere mochten auch (20)

Спецкурс Разработка серверов и серверных приложений лекция №1
Спецкурс Разработка серверов и серверных приложений лекция №1Спецкурс Разработка серверов и серверных приложений лекция №1
Спецкурс Разработка серверов и серверных приложений лекция №1
 
аппаратное обеспечение
аппаратное обеспечениеаппаратное обеспечение
аппаратное обеспечение
 
Технологии Intel для построения эффективной инфраструктуры
Технологии Intel для построения эффективной инфраструктурыТехнологии Intel для построения эффективной инфраструктуры
Технологии Intel для построения эффективной инфраструктуры
 
Лекция №12 Организация ЭВМ и систем
Лекция №12 Организация ЭВМ и системЛекция №12 Организация ЭВМ и систем
Лекция №12 Организация ЭВМ и систем
 
Hyper Threading Technology
Hyper Threading TechnologyHyper Threading Technology
Hyper Threading Technology
 
развитие ситуации на мировом рынке процессоров пк
развитие ситуации на мировом рынке процессоров пкразвитие ситуации на мировом рынке процессоров пк
развитие ситуации на мировом рынке процессоров пк
 
Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...
Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...
Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...
 
Презентация: Cерверные решения ЦМО
Презентация: Cерверные решения ЦМОПрезентация: Cерверные решения ЦМО
Презентация: Cерверные решения ЦМО
 
материнская плата
материнская плата материнская плата
материнская плата
 
Презентация №5. ИНФРАСТРУКТУРА ЦОД: что нужно знать про СКС, электропитание,...
Презентация №5. ИНФРАСТРУКТУРА ЦОД: что нужно знать про СКС, электропитание,...Презентация №5. ИНФРАСТРУКТУРА ЦОД: что нужно знать про СКС, электропитание,...
Презентация №5. ИНФРАСТРУКТУРА ЦОД: что нужно знать про СКС, электропитание,...
 
Лекция №15 Организация ЭВМ и систем
Лекция №15 Организация ЭВМ и системЛекция №15 Организация ЭВМ и систем
Лекция №15 Организация ЭВМ и систем
 
Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...
Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...
Технологии создания публичного облака DEPO Cloud на базе платформы Intel для ...
 
35
3535
35
 
лекция 9
лекция 9лекция 9
лекция 9
 
VMware vCloud Director Overview in Russian
VMware vCloud Director Overview in RussianVMware vCloud Director Overview in Russian
VMware vCloud Director Overview in Russian
 
033
033033
033
 
46
4646
46
 
31
3131
31
 
02 ram
02 ram02 ram
02 ram
 
Оптимизация ИТ в виртуальном частном облаке: основные вопросы для обсуждения
Оптимизация ИТ в виртуальном частном облаке: основные вопросы для обсужденияОптимизация ИТ в виртуальном частном облаке: основные вопросы для обсуждения
Оптимизация ИТ в виртуальном частном облаке: основные вопросы для обсуждения
 

Ähnlich wie Архитектура и программирование потоковых многоядерных процессоров для научных рассчетов. Лекция 4. Объединенная архитектура графических

Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Mikhail Kurnosov
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ontico
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Mikhail Kurnosov
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Alex Tutubalin
 
Лекция №2 Организация ЭВМ и систем
Лекция №2 Организация ЭВМ и системЛекция №2 Организация ЭВМ и систем
Лекция №2 Организация ЭВМ и системpianist2317
 
Современные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageСовременные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageDEPO Computers
 
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Ontico
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Ontico
 
Доклад на Highload-2012
Доклад на Highload-2012Доклад на Highload-2012
Доклад на Highload-2012Alex Tutubalin
 
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchipРазработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchipARCCN
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2Technopark
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
 
prezlec_Історія.ppt
prezlec_Історія.pptprezlec_Історія.ppt
prezlec_Історія.pptssusere2bc36
 
Операционные системы
Операционные системыОперационные системы
Операционные системыyaevents
 
Обзор современных микроконтроллеров и их архитектур
Обзор современных микроконтроллеров и их архитектурОбзор современных микроконтроллеров и их архитектур
Обзор современных микроконтроллеров и их архитектурIoT Community
 
Инфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от QlogikИнфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от QlogikExpolink
 
Виртуализация сетевой инфраструктуры на примере использования IOS-XRv 9000 и ...
Виртуализация сетевой инфраструктуры на примере использования IOS-XRv 9000 и ...Виртуализация сетевой инфраструктуры на примере использования IOS-XRv 9000 и ...
Виртуализация сетевой инфраструктуры на примере использования IOS-XRv 9000 и ...Cisco Russia
 

Ähnlich wie Архитектура и программирование потоковых многоядерных процессоров для научных рассчетов. Лекция 4. Объединенная архитектура графических (20)

Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12
 
Лекция № 2 Организация ЭВМ и систем
Лекция № 2 Организация ЭВМ и системЛекция № 2 Организация ЭВМ и систем
Лекция № 2 Организация ЭВМ и систем
 
Лекция №2 Организация ЭВМ и систем
Лекция №2 Организация ЭВМ и системЛекция №2 Организация ЭВМ и систем
Лекция №2 Организация ЭВМ и систем
 
Современные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageСовременные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO Storage
 
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 
Доклад на Highload-2012
Доклад на Highload-2012Доклад на Highload-2012
Доклад на Highload-2012
 
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchipРазработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциям
 
prezlec_Історія.ppt
prezlec_Історія.pptprezlec_Історія.ppt
prezlec_Історія.ppt
 
Операционные системы
Операционные системыОперационные системы
Операционные системы
 
Обзор современных микроконтроллеров и их архитектур
Обзор современных микроконтроллеров и их архитектурОбзор современных микроконтроллеров и их архитектур
Обзор современных микроконтроллеров и их архитектур
 
Инфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от QlogikИнфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от Qlogik
 
Виртуализация сетевой инфраструктуры на примере использования IOS-XRv 9000 и ...
Виртуализация сетевой инфраструктуры на примере использования IOS-XRv 9000 и ...Виртуализация сетевой инфраструктуры на примере использования IOS-XRv 9000 и ...
Виртуализация сетевой инфраструктуры на примере использования IOS-XRv 9000 и ...
 
Процессор
ПроцессорПроцессор
Процессор
 

Kürzlich hochgeladen (9)

Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 

Архитектура и программирование потоковых многоядерных процессоров для научных рассчетов. Лекция 4. Объединенная архитектура графических

  • 1. Архитектура и программирование потоковых многоядерных процессоров для научных расчётов Лекция 4. Объединённая архитектура графических процессоров Основные процессоров. составные элементы аппаратной реализации GPU
  • 2. GPU процессоры Процессоры G80 – 90nm (260/150W) G92 - 65nm (110/~60W) Регулярная вычислительная структура – мало памяти Тактирован NVClock (periphery logic) Hot Clock (SM cores) Mem Clock (DRAM access cirquits) Знание вычислительной архитектуры необходимо для успешного программирования
  • 3. Аппаратная архитектура GPU TPC TPC TPC Texture Processor Cluster TPC TPC TPC TPC Streaming Multiprocessor Instruction L1 SM TPC Data L1 Instruction Fetch/Dispatch Shared Memory TEX SP SM SP SP SP SFU SFU SP SP SP SP SPA - Streaming Processor Array (8x TPC) TPC - Texture Processor Cluster (2 Cl t (2x SM + TEX) SM - Streaming Multiprocessor (8x SP) Multi-threaded processor core Fundamental processing unit for CUDA thread block SP - Streaming Processor Scalar ALU for a single CUDA thread g
  • 4. Цели проекта GeForce 8800 Традиционно GPU были кристаллами для наиболее эффективного исполнения одной программы Разделение вычислений и операций с пмятью Запуск произвольных (менее предсказуемых программ) – CUDA Соотношение количества вычислений/переносов данных Очерёдность вычислений/переносов данных Совмещение аппаратного обесп. для обсчёта векторных и растровых изображений Скаляризация ALU Облегчение работы компилятора
  • 6.
  • 7.
  • 8. Что такое ВОРП (WARP)? Device делает 1 grid в любой момент Device Multiprocessor N SM обрабатывает 1 или более blocks Multiprocessor 2 Каждый Block разделён на SIMD группы, внутри которых одни и те же инструкции выполняются реально одновременно над различными данными (warps) warp size=16/32 Multiprocessor 1 Shared Memory Register s Register s Processor 1 Processor 2 Важно! Полуворп – первая или вторая половина ворпа Processor M Instructio n Unit Constant Cache Связывание в ворпы детерминировано в порядке нарастания threadID threadID=TIDX.x+TIDX.y*Dx+TIDX.z*Dx*Dy … Register s Texture Cache Device memory
  • 9. Texture Processor Cluster (TPC) TPC SM 0 Instruction Fetch T Instruction L e 1 Cache Instruction Decode x T t e u x I Shared Memory SP 0 R SP 1 R R SP 5 SP 2 R R SP 6 R R SP 7 F r t e u U L S D F Constant L r & SP 4 SP 3 S R e U L 1 Cache 2 SM 1 1 C Instruction Fetch Instruction L U 1 Cache a Instruction Decode I t ti D d C n a i c t h e c Shared Memory SP 0 S R R SP 1 R R SP 5 h SP 4 F U TEX – Т Текстурный блок – логика йб адресации текстурных массивов в 1D, 2D, 3D + L1 Кэш Текстур S F SP 2 R R SP 6 SP 3 R R SP 7 Constant L 1 Cache Load/Store U e L2 Кэш инструкций и данных для обоих SM x2 Потоковых Мультипроцессора (St ea (Streaming Multiprocessor) g u t p ocesso ) x8 потоковых процессоров (streaming processors) = 8 MAD/clock cycle Регистры для хранения промежуточных р р р у результатов у выполняемых тредов => больше тредов лучше скрыты операции чтения, но межет не хватить регистров
  • 10. Streaming Multiprocessor (SM) Streaming Multiprocessor ( SM ) Instruction Fetch Instruction L Thread 8 Streaming Processors (SP) 1 Cache L 1 Fill 2 Super Function Units (SFU) – сложные функции (sin cos, etc.) (sin, cos etc ) / Instruction Dispatch Work Shared Memory Control SP 0 S RF 0 RF 4 SP 4 SP 1 RF 1 RF 5 SP 5 Results S F U 1 - 512 потоков активны в кажд.момент SIMD инструкции для ворпов 16/32 тредов !!!! ВЕТВЛЕНИЯ F U Много-поточная доставка инструкций SP 2 RF 2 RF 6 SP 6 SP 3 RF 3 RF 7 SP 7 Load Texture Constant L Load from Memory 1 Cache L 1 Fill Store to Store to Memory Hot clock = 1.35 GHz 20+ GFLOPS для каждого SP Локальный регистровый файл (RFn) 16 KB разделяемой памяти
  • 11. Streaming Processors (SP) Скалярный FP MAD ALU Место исполнения инструкции в 1 треде в 1 момент времени Shared Memory SP 0 S RF 0 RF 4 SP 4 SP 1 RF 1 RF 5 SP 5 S F F U SFU разделены между SP U SP 2 RF 2 RF 6 SP 6 SP 3 RF 3 RF 7 SP 7 Размер RF – 32KB Е Р Если переполнен – отправляется в локальную память Для оптимальной загрузки MAD/SFU конвейера ~ 8 варпов
  • 12. Буфер инструкций SM Буфер инструкций выбирает варп и инструкцию, которые будут исполнены в следующий момент времени I$ L1 Multithreaded Instruction Buffer R F C$ L1 Shared Mem Operand Select MAD SFU Критерии выбора: Готовность данных Длительность исполнения ворпа (старые имеют приоритет) ) Активный ворп будет исполнять свои инструкции последовательно, пока не возникнет ситуация, мешающая Нет промежуточных результатов для новой Не прочитаны операнды из памяти Загрузка конвейера Программно 32/16 тредов на варп Аппаратно 8 SP в каждом SM
  • 13. Ветвления внутри ворпа Ветвления разрушают SIMD структуру исполнения Инструкции ложной ветви не исполняются для текущего треда Время теряется как если бы все треды ворпа прошли всеми возможными путями (последовательно) Компилятор может востанавливать точки ре-синхронизации, рассинхронизировавшихся тредов Программист может помогать используя __syncthreads();
  • 14. Регистровый файл SM I$ L1 Multithreaded Instruction Buffer R F C$ L1 Shared Mem Operand Select MAD В каждом SM регистровый ф д р р файл Размер = 32K Распределён неравномерно между SP SFU За один clock можно прочитать 4 операнда для каждого SP TEX и Load/Store могут читать и писать RF
  • 15. Память констант RO память констант находится в DRAM на плате I$ L1 Multithreaded Instruction Buffer R F C$ L1 Shared Mem Operand Select MAD SFU Каждый из SM имеет L1 кэш (RO) в операциях с памятью констант р Константы могут адресоваться без индекса Линейный индекс на основе threadID й й h d
  • 16. Разделяемая память В каждом SM – 16 k RW разделяемой й памяти I$ L1 16 банков 32-битных слов Multithreaded Instruction Buffer R F C$ L1 Последовательная адреса ячеек принадлежат последовательным банкам Shared Mem Обращения к разным банкам возможны одновременно Operand Select MAD Обращения с конфликтами реализуются как несколько полледовательных обращений SFU BANK0 BANK1 BANK2 … BANK15 word 0 word 1 word 2 word 15 word 16 word 17 word 18 word 31 word 32 d word 33 d word 34 d word 47 d word 4081 word 4082 word 4095 … word 4080 Каждое чтение исполняется от тредов полуворпа
  • 17. Конвейеры исполнения комманд Скалярный конвейер MAD (SP ) С й й (SPs) I$ L1 FMUL,FADD,FMAD Целочисленные операции, приведение типов 1 инструкция за 1 clock Multithreaded Instruction Buffer R F C$ L1 Shared Mem Operand Select O dS l t MAD SFU Скалярный конвейер SFU RCP,RSQ,LG2,EX2,SIN,COS , Q, , , , 1 инструкция за 4 clocks можно также реализовывать FMUL, MOV TEX конвейер (RO lдоступ к табулированным константам) LoaD / STore конвейер Перенос содержимого регистров в/из локальную память Доступ к локальной и глобальной памяти
  • 18. Parallel Thread eXecution Virtual Machine (PTX VM ) C/C++ Application Library Programmer C/C++ Compiler PTX Code PTX Code PTX to Target Translator C G80 … Target code GPU Parallel Th P ll l Thread eXecution (PTX) d X ti Virtual Machine, а также ISA Программная модель р р ISA – Instruction Set Architecture Variable declarations Instructions and operands Транслятор – оптимизирующий компилятор Трансляция PTX исполняемый р код Драйвер видеокарты реализует VM runtime
  • 19. PTX код (пример1) CUDA float4 me = gx[gtid]; me.x += me.y * me.z; PTX ld.global.v4.f32 {$f1,$f3,$f5,$f7}, [$r9+0]; # 174 me.x += me.y * me.z; mad.f32 $f1, $f5, $f3, $f1;
  • 20. PTX Код (пример 2) CUDA __device__ void interaction( float4 b0, float4 b1, float3 *accel) { r.x = b1.x - b0.x; r.y = b1.y - b0.y; r.z b1 z b0.z; r z = b1.z - b0 z; float distSqr = r.x * r.x + r.y * r.y + r.z * r.z; float s = 1.0f/sqrt(distSqr); accel->x += r.x * s; accel->y += r.y * s; accel->z += r.z * s; } PTX sub.f32 sub.f32 sub.f32 mul.f32 mul.f32 mul.f32 add.f32 add.f32 rsqrt.f32 mad.f32 mov.f32 mad.f32 d f32 mov.f32 mad.f32 mov.f32 f32 $f18, $f1, $f15; $ , $ , $f16; $f19, $f3, $ ; $f20, $f5, $f17; $f21, $f18, $f18; $f22, $f19, $f19; $f23, $f20, $f20; $f24, $f21, $f22; $f25, $f23, $f24; $f26, $f25; $f13, $f18, $f26, $f13; $f14, $f13; $f11 $f19 $f26 $f11 $f11, $f19, $f26, $f11; $f12, $f11; $f9, $f20, $f26, $f9; $f10 $f9 $f10, $f9;
  • 21. Итоги лекции В результате лекции студенты должны : Понимать преимущества объединённой архитектуры нового поколения графических процессоров Понимать принципиальные элементы архитектуры GPU процеccоров Иметь возможность применить практически знание архитектуры для оптимизации программ Достаточные знания для начала самостоятельной работы