Чтобы проверить нарушения доступа к памяти на CPU, есть Valgrind/memcheck; для кода CUDA на графическом процессоре есть CUDA memcheck. Есть ли эквивалент этих инструментов для OpenCL?эквивалент Valgrind для OpenCL
3
A
ответ
5
В настоящее время существует симулятор устройств OpenCL под названием Oclgrind, который работает аналогично Valgrind для обеспечения функции «memcheck» (между прочим).
Это с открытым исходным кодом, и есть бинарные сборки для различной доступной платформы. Как Valgrind это не быстро, но использовать его очень просто:
$ oclgrind ./myapp
Invalid write of size 4 at global memory address 0x3000000000010
Kernel: write_out_of_bounds
Entity: Global(4,0,0) Local(4,0,0) Group(0,0,0)
store i32 %tmp15, i32 addrspace(1)* %tmp19, align 4, !dbg !24
At line 4 of input.cl:
c[i] = a[i] + b[i]
3
Вы посмотрели http://github.com/KhronosGroup/webcl-validator? Он берет ваш источник ядра OpenCL и использует его с кодом проверки границ. Чтение/запись OOB в настоящее время отбрасывается, но вы можете изменить инструментальное ядро (или сам инструмент), чтобы он сообщал о нарушении доступа.
Смежные вопросы
- 1. Эквивалент curand для OpenCL
- 2. OpenCL эквивалент нахождения последовательных индексов в CUDA
- 3. Что такое openCL эквивалент для этого кода cudaMallocPitch?
- 4. VALGRIND: Как использовать valgrind для библиотеки «.so»?
- 5. Строительство Valgrind для Android
- 6. Инструмент Valgrind для GDB
- 7. OpenCL для Python
- 8. OpenCL для поиска набора?
- 9. GUI для программы OpenCL
- 10. Упорядочение памяти для OpenCL
- 11. Отладчик для OpenCL
- 12. Идеальное хеширование для OpenCL
- 13. Valgrind крест компиляции для ARMv5tel
- 14. Поведение Valgrind для структур + союзов
- 15. отчеты, valgrind утечки для mysql_real_connect
- 16. Кросс-компиляция Valgrind для ARM
- 17. Intel OpenCL Vs. Khronos OpenCL
- 18. OpenCL CPU быстрее, чем OpenCL GPU для наивного умножения матрицы
- 19. Valgrind отчет
- 20. running valgrind
- 21. Вложенные функции ядра для opencl
- 22. Обертка cuda для выполнения openCL
- 23. Перехват функции Linux для OpenCL
- 24. OpenCL - метод для выполнения СОКРАЩЕНИЯ
- 25. OpenCL - выполнение динамических для циклов
- 26. ошибка клинка для opencl amd
- 27. OpenCV для Android - поддержка OpenCL
- 28. Ядро OpenCL для конкатенации строк
- 29. OpenCL: число запросов для обработки
- 30. Выход Valgrind
Вероятно, нет, Valgrind эмулирует Linux, и CUDA MemCheck вероятно, подражает, или работает на уровне драйвера. Если кто-то не написал пользовательский драйвер OpenCL, я не вижу, как это будет возможно. Какую память вы делаете? –
Ничего особенного, я просто хочу исключить нарушения доступа к памяти GPU. Я получаю нарушение доступа к памяти в коде ЦП при вызове 'clFinish()'. –
Вы пробовали использовать тот же код на CPU, а затем использовать valgrind? Я не совсем уверен, что это поможет, но если есть какие-либо нарушения доступа в коде OpenCL, это должно произойти и на процессоре, и его следует поймать valgrind. –