Содержание
- 2. Проблематика Где нужна вычислительная мощность: - Ускорение вычислений - Переход в реальное время - Разгрузка CPU
- 3. Чего ожидать от параллелизма Закон Амдала (ускорение от параллелизма): Sp = 1 / (a + (1
- 4. - Параллелизм данных, DPL: MMX, SSE, и т. д. - Параллелизм кода, IPL: спекулятивные вычисления и
- 5. Предыстория к GPGPU 1990 1995 2000 2005 2010 Сопроцессор Видео- ускоритель Шейдеры GPU
- 6. Рост производительности GigaFLOPS годы 500 1000 1500 2002 2004 2006 2008 2010 GPU CPU
- 7. Терминология - host - CPU - device - GPU - ядро — код запускаемого на GPU
- 8. Программная модель памяти
- 9. Программная модель потоков B (0:0) B (0:1) B (0:2) B (0:3) B (1:0) B (1:1) B
- 10. Особенности программирования - функция ядро возвращает только void - память — узкое место в вычисленях и
- 11. Программный стек CUDA Device Host CUDA Driver CUDA Driver API CUDA Runtime API Libraries Application
- 12. Последняя версия CUDA Toolkit 4.0 RC2 - https://nvdeveloper.nvidia.com Состав: - Драйвер для разработчиков - GPU Computing
- 13. Самый важный параметр: --help (-help) — печатает справку Основные выходные форматы (и ключи компиляции): --cubin (-cubin)
- 14. Типы функций - по умолчанию все функции __host__ - __host__ и __device__ совместимы, компилятор создаст две
- 15. Hello World! Сложение массивов. #define N 1024 // GPU __global__ void sum(float *c, float *a, float
- 16. Hello World! CPU инициализация int main(int argc, char **argv) { float *a, *b, *c; float *A,
- 17. Hello World! CPU вызов ядра cudaMemcpy(A, a, N * sizeof(float), cudaMemcpyHostToDevice); cudaMemcpy(B, b, N * sizeof(float),
- 18. Hello World! CPU вызов ядра cudaMemcpy(A, a, N * sizeof(float), cudaMemcpyHostToDevice); cudaMemcpy(B, b, N * sizeof(float),
- 19. Hello World! CPU вызов ядра cudaMemcpy(A, a, N * sizeof(float), cudaMemcpyHostToDevice); cudaMemcpy(B, b, N * sizeof(float),
- 20. Hello World! CPU вызов ядра cudaMemcpy(A, a, N * sizeof(float), cudaMemcpyHostToDevice); cudaMemcpy(B, b, N * sizeof(float),
- 21. GPGPU прочее DirectCompute — библиотека от Microsoft. Часть DirectX; OpenCL — кроссплатформенная библиотека; Готовые библиотеки с
- 22. OpenCV #include #include "opencv2/opencv.hpp" #include "opencv2/gpu/gpu.hpp" int main (int argc, char* argv[]) { cv::gpu::GpuMat dst, src
- 24. Скачать презентацию