我希望获得有关已编译的OpenCL内核的以下信息 - 类型列表,params顺序(如果可能的话 - 使用内存和访问分类器)。在app的运行时间内,内核是从源代码构建的。
实际上,在OpenCL 1.2中已存在适用于此类查询的函数 - clGetKernelArgInfo
,但由于项目限制,我必须找到使用纯OpenCL 1.0实现此类功能的方法,而不需要任何扩展。
目前,我正在考虑三种方法:
我的问题:有没有其他方法可以获取有关已编译内核的信息?
我想通过在小包装器中封装对clCreateBuffer
,clEnqueueWrite
/ Read,clSetKernelArg
的调用来使用此信息来减少客户端代码中OpenCL例程的数量,这应该检查提供的参数,分配设备端ptrs,从/向主机复制数据等。
答案 0 :(得分:1)
Khronos WebCL Validator为您提供clGetKernelArgInfo的等价物,包括所有限定词。
必要的缺点是它是一个基于Clang / LLVM的完整解析器。与典型的OpenCL编译器运行所需的时间大致相同(不是巧合),并且可执行文件大小增加了大约10兆字节。