首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查询OpenCL内核参数的大小?

如何查询OpenCL内核参数的大小?
EN

Stack Overflow用户
提问于 2020-10-29 03:13:55
回答 1查看 167关注 0票数 1

我希望查询OpenCL内核参数的大小,以确保向它发送一个大小正确的变量。我可以使用clGetKernelArgInfo查询每个内核参数的许多其他属性,如下所示:

clGetKernelArgInfo(k,argc,CL_KERNEL_ARG_TYPE_NAME,sizeof(argType),&argType,&retSize);

例如,这将告诉我类型的字符串名称。但是这还不够好,特别是在复杂的情况下,它是一个结构,在主机和设备上字符串名称是相同的,但是封装是不同的,所以大小不同。根据https://man.opencl.org/clGetKernelArgInfo.html的说法,我可以查询的内容是:

代码语言:javascript
复制
CL_KERNEL_ARG_ADDRESS_QUALIFIER
CL_KERNEL_ARG_ACCESS_QUALIFIER 
CL_KERNEL_ARG_TYPE_NAME        
CL_KERNEL_ARG_TYPE_QUALIFIER   
CL_KERNEL_ARG_NAME          

有什么想法吗?

FYI,这不是Get OpenCL Kernel-argument information的重复,因为这是询问如何使用参数查询函数,而不是询问如何查询参数大小。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-29 03:38:28

据我所知,在设置参数之前没有标准的检查方法,但如果大小不匹配,clSetKernelArg调用将返回CL_​INVALID_​ARG_​SIZE,因此应该允许您相应地检测和处理错误:

CL_INVALID_ARG_SIZE如果arg_size不匹配非内存对象的参数的数据类型的大小,或者如果参数是内存对象和arg_size != sizeof(cl_mem),或者如果arg_size为0,且参数是用__local限定符声明的,或者如果该参数是一个取样器和arg_size != size of (Cl_sampler)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64584454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档