Содержание
- 2. Сравнение архитектур CPU и GPU Параллельная обработка данных распределяет элементы данных на параллельно обрабатываемых потоках. GPU
- 3. Вычислительная модель GPU Двумерная блочная структура
- 4. Структура блоков Трехмерная структура блоков
- 5. Подключаемые библиотеки #include "cuda_runtime.h" #include "device_launch_parameters.h" #include #include
- 6. Оценка затраченного на вычисления времени cudaEvent_t start, stop; float gpuTime; cudaEventCreate( &start ); cudaEventCreate( &stop );
- 7. О компоновке нитей и блоков #define DGX 8 #define DGY 32 #define DBX 8 #define DBY
- 8. Отладка программ Функции из CUDA runtime API могут возвращать различные коды ошибок. Можно использовать следующий макрос
- 9. Типы памяти
- 10. Типы памяти Регистры. Локальная память. Глобальная память. Разделяемая память. Константная память. Текстурная память
- 11. Организация памяти устройства
- 12. Регистровая память (register) Является самой быстрой из всех видов. Определить количество регистров доступных GPU можно с
- 13. Расчет количества регистров, доступных одной нити GPU При вызове функций ядра myKernelFunc >>(float* param1,float * param2),
- 14. Локальная память Локальная память (local memory) может быть использована компилятором при большом количестве локальных переменных в
- 15. Глобальная память Глобальная память (global memory) – самый медленный тип памяти, из доступных GPU. Глобальные переменные
- 16. Разделяемая память Разделяемая память (shared memory) относиться к быстрому типу памяти. Разделяемую память рекомендуется использовать для
- 17. Константная память Константная память (constant memory) является достаточно быстрой из доступных GPU. Отличительной особенностью константной памяти
- 18. Текстурная память Предназначена главным образом для работы с текстурами. Она оптимизирована под выборку 2D данных и
- 19. Пример использования различных типов памяти При операции транспонирования матрицы
- 20. Транспонирование матрицы на CPU // inputMatrix - указатель на исходную матрицу // outputMatrix - указатель на
- 21. Использование только глобальной памяти. __global__ void transposeMatrixSlow(float* inputMatrix, float* outputMatrix, int width, int height) { int
- 22. Использование константной памяти. #define N 100 __constant__ float devInputMatrix[N]; __global__ void transposeMatrixSlow(float* inputMatrix, float* outputMatrix, int
- 23. Использование разделяемой памяти #define BLOCK_DIM 16 __global__ void transposeMatrixFast(float* inputMatrix, float* outputMatrix, int width, int height)
- 24. Результаты вычислений матрица размерностью 2048 * 1536 = 3145728 элементов и 20 итераций в нагрузочных циклах
- 26. Скачать презентацию