3

要检查 CPU 上的内存访问冲突,有 Valgrind/memcheck;对于 GPU 上的 CUDA 代码,有CUDA memcheck。是否有与这些 OpenCL 工具等效的工具?

4

2 回答 2

5

现在有一个名为Oclgrind的 OpenCL 设备模拟器,它以与 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]
于 2015-01-14T16:20:14.753 回答
3

你看过http://github.com/KhronosGroup/webcl-validator吗?它获取您的 OpenCL 内核源代码并使用边界检查代码对其进行检测。OOB 读取/写入当前已被丢弃,但您可以修改检测内核(或工具本身)以使其报告访问冲突。

于 2013-08-29T14:51:07.003 回答