我想获得有关已编译的OpenCL内核的以下信息-类型列表、params顺序(如果可能的话),以及内存和访问分类器。内核是在应用程序运行时从源代码构建的。
实际上,在OpenCL 1.2中,已经存在适合这种查询的函数-- clGetKernelArgInfo,但是由于项目限制,我必须找到方法来使用纯OpenCL 1.0来实现这种功能,而不需要任何扩展。
目前,我正考虑三种方法:
我的问题是:还有其他方法来获取编译内核的信息吗?
我想用这个信息来减少客户端代码中的OpenCL例程,方法是在小包装器中封装对clCreateBuffer、clEnqueueWrite/Read、clSetKernelArg的调用,这些调用应该检查提供的params,分配设备端ptrs,从主机复制数据等等。
发布于 2013-12-05 09:15:28
Khronos WebCL校验器提供了相当于clGetKernelArgInfo的内容,包括所有的限定符。
必要的缺点是它是一个完整的解析器,基于Clang/LLVM。作为一个典型的OpenCL编译器运行所需的时间大致相同(这不是巧合),并且在可执行文件的大小上增加了大约10兆字节。
https://stackoverflow.com/questions/19956798
复制相似问题