3.69M

Lecture_6_2024_v1

1.

NVIDIA CUDA И OPENACC
ЛЕКЦИЯ 6
Перепёлкин Евгений

2.

СОДЕРЖАНИЕ
Лекция 6
Оптимизация работы с разделяемой памятью
Пример. Перемножение матриц
Пример. Параллельная редукция
2

3.

Оптимизация работы с разделяемой памятью
3

4.

РАЗДЕЛЯЕМАЯ ПАМЯТЬ. БАНКИ
Compute Capability 3.x
32 банка, ширина 8 Байт
пропускная способность 8 Байт за такт на SMX
варп (32 потока) считывает 256 Байт за такт на SMX
Два режима доступа
4-Байтовый cudaSharedMemBankSizeFourByte ( по умолчанию )
8-Байтовый cudaSharedMemBankSizeEightByte
задается функцией cudaDeviceSetSharedMemConfig ()
4

5.

РАЗДЕЛЯЕМАЯ ПАМЯТЬ. БАНКИ
8-Байтовый режим доступа
Банк 0
A[0]
A[1]
Банк 1
A[2]
A[3]
Банк 2
A[4]
A[5]
Банк 3
A[6]
A[7]
...
Банк 30
Банк 31
A[60] A[61]
A[62] A[63]
...
...
...
A[64] A[65]
...
...
...
...
4 Байта = 32 бита
...
...
...
...
...
...
...
__shared__ float A [ N ];
float x = A [ threadIdx.x ];
5

6.

РАЗДЕЛЯЕМАЯ ПАМЯТЬ. БАНКИ
4-Байтовый режим доступа
Банк 0
Банк 1
A[32]
A[1]
A[64] A[128]
A[65]
...
...
A[0]
...
A[33]
Банк 2
A[2]
A[34]
Банк 3
A[3]
...
A[35]
Банк 30
Банк 31
A[30] A[62]
A[31] A[63]
...
...
...
...
4 Байта = 32 бита
...
...
...
...
...
...
...
__shared__ float A [ N ];
float x = A [ threadIdx.x ];
6

7.

РАЗДЕЛЯЕМАЯ ПАМЯТЬ. БАНК КОНФЛИКТЫ
Compute Capability 3.x
Банк конфликты возникают, когда:
две или более нитей одного варпа обращаются к разным 8-Байтовым
словам, лежащим в одном банке
банк-конфликт имеет порядок N когда конфликтуют N нитей одного варпа
Банк конфликтов нет, когда:
разные нити варпа обращаются к одному слову
разные нити варпа обращаются к различным байтам одного и того же
слова
7

8.

РАЗДЕЛЯЕМАЯ ПАМЯТЬ. ПРИМЕР ДОСТУПА
Compute Capability 3.x
Нет банк конфликтов
0
В каждый банк по одному обращению
30
2
3
...
1
31
32 нити варпа
...
...
...
Банк 0
...
...
Банк 1
...
...
Банк 2
...
...
...
...
Банк 3
...
Банк 30
...
...
...
Банк 318

9.

РАЗДЕЛЯЕМАЯ ПАМЯТЬ. ПРИМЕР ДОСТУПА
Compute Capability 3.x
Нет банк конфликтов
0
В каждый банк по одному обращению
30
2
3
...
1
31
32 нити варпа
...
...
...
Банк 0
...
...
Банк 1
...
...
Банк 2
...
...
...
...
Банк 3
...
Банк 30
...
...
...
Банк 319

10.

РАЗДЕЛЯЕМАЯ ПАМЯТЬ. ПРИМЕР ДОСТУПА
Compute Capability 3.x
Нет банк конфликтов
Несколько обращение в один банк, но к одному и тому же слову
1
30
31
2
3
...
0
32 нити варпа
...
...
...
Банк 0
...
...
Банк 1
...
...
Банк 2
...
...
...
...
Банк 3
...
Банк 30
...
...
...
Банк 3110

11.

РАЗДЕЛЯЕМАЯ ПАМЯТЬ. ПРИМЕР ДОСТУПА
Compute Capability 3.x
Банк конфликт 2-го порядка
Обращение к двум разным словам, лежащим в одном банке
1
30
31
2
3
...
32 нити варпа
0
...
...
...
Банк 0
...
...
Банк 1
...
...
Банк 2
...
...
...
...
Банк 3
...
Банк 30
...
...
...
Банк 3111

12.

РАЗДЕЛЯЕМАЯ ПАМЯТЬ. ПРИМЕР ДОСТУПА
Compute Capability 3.x
Банк конфликт 3-го порядка
Обращение к трем разным словам, лежащим в одном банке
1
30
31
2
3
...
32 нити варпа
0
...
...
...
Банк 0
...
...
Банк 1
...
...
Банк 2
...
...
...
...
Банк 3
...
Банк 30
...
...
...
Банк 3112

13.

Пример. Перемножение матриц
13

14.

English     Русский Правила