如果我们只有全局大小和本地ID,那么获取全局ID?

时间:2014-04-09 06:48:40

标签: c opencl gpu

如果我们有一个2D索引空间,其工作组大小为(14,30),那么全局ID是多少。如果工作组(2,3)中的内核的特定执行具有

get_local_id(0) = 5 and get_local_id(1) = 7

get_global_id(0)和get_global_id(1)会是什么?我实际上没有当地的大小!

我们如何计算?

它是否等于

get_global_id(0) = 5*2 = 10

get_global_id(1) = 3*7 = 21

1 个答案:

答案 0 :(得分:1)

您需要知道当地的大小。谢天谢地,你可以通过调用get_local_size来获得它。它将始终返回有效值。

假设没有偏差,它就是这样:

get_global_id(0) = get_local_id(0)+get_local_size(0)*get_group_id(0)

请记住,即使您使用NULL作为本地大小调用内核,实现也会生成一些内容,以便始终获得有效值。