[OpenCL]关于CL_KERNEL_GLOBAL_WORK_SIZE

OpenCL-2.1文档相关描述

CL_KERNEL_GLOBAL_WORK_SIZE

在这里插入图片描述
这段文字表明使用 cl_kernel_work_group_info 函数并将查询项目设置为 CL_KERNEL_GLOBAL_WORK_
SIZE
可以获得在此设备执行该kernel时最大的global size(也就是clEnqueueNDRangeKernel的global_work_size参数)。
这段文字表明最大可用 global_work_size不仅和device相关,还和kernel相关,下面实验证实下:

	size_t * globalSize = (size_t*)alloca(sizeof(size_t) * 3);
	//Get Kernel Info
	error = clGetKernelWorkGroupInfo(vector_add_k, device, CL_KERNEL_GLOBAL_WORK_SIZE, sizeof(size_t) *3, globalSize, NULL);
	if (error != CL_SUCCESS)
	{
		cout << "clGetKernelWorkGroupInfo:" << error << endl;
	}
	cout << "global size 0:" << globalSize[0] << "global size 1:" << globalSize[1] << "global size 2 :" << globalSize[2] << endl;

打印信息:

clGetKernelWorkGroupInfo:-30
global size 0:14757395258967641292global size 1:14757395258967641292global size 2 :14757395258967641292

结果返回值是-30, 查阅报错:
CL_INVALID_VALUE if param_name is CL_KERNEL_GLOBAL_WORK_SIZE and
device is not a custom device and kernel is not a built-in kernel.
因此CL_KERNEL_GLOBAL_WORK_SIZE 这一项只和 custom device 和 built-in kernel 有关。
custom device 是针对特定的设备(如DSP), built-in kernel也是只针对特定设备。因此CL_KERNEL_GLOBAL_WORK_SIZE 在常规编码中基本不会用到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值