Редукция и сканирование на видеокарте
Перед вам программа, реализующая редукцию и сканирование на процессоре. Вам нужно сделать реализацию редукции и сканирования на OpenCL.
Задания
- Реализуйте редукцию, соблюдя условия ниже.
- Реализуйте сканирование, соблюдя условия ниже.
Условия
- Верификация проходит успешно.
- Используется вариант завершения редукции/сканирования без использования процессора (см. презентацию).
- Время работы OpenCL (колонка "OpenCL total") сравнимо со временем работы на OpenMP (колонка "OpenMP").
- Ядро использует локальную память для ускорения.
- Исходный код написан на C/C++.
- Код собирается с максимальной оптимизацией (флаги компилятора
-O3 -march=native
).
Исходный код
module load gpc-2021
git clone https://courses.igankevich.com/gpu-programming/reduce-scan.git
cd reduce-scan
make
./build/reduce-scan
Пример вывода
Platform name: Clover Device name: AMD Radeon (TM) R7 300 Series (BONAIRE, DRM 3.37.0, 5.7.15, LLVM 10.0.0) function OpenMP OpenCL total OpenCL copy-in OpenCL kernel OpenCL copy-out OpenMP bandwidth OpenCL bandwidth reduce 0us 0us 0us 0us 0us 0GB/s 0GB/s scan-inclusive 8222us 0us 0us 0us 0us 0GB/s 0GB/s