C 如果只有全局大小和本地id,是否获取全局id?

C 如果只有全局大小和本地id,是否获取全局id?,c,opencl,gpu,C,Opencl,Gpu,如果我们有一个2D索引空间,工作组大小为(14,30),那么全局id是多少。如果工作组(2,3)中内核的特定执行 获取全局id(0)和获取全局id(1)的条件是什么?我实际上没有本地尺码 我们如何计算 它等于吗 get_global_id(0) = 5*2 = 10 get_global_id(1) = 3*7 = 21 你需要知道当地的大小。谢天谢地,您可以通过呼叫get_local_size来获得它。它将始终返回一个有效值 假设没有偏移量,情况是这样的: get_global_id(0)

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

获取全局id(0)和获取全局id(1)的条件是什么?我实际上没有本地尺码

我们如何计算

它等于吗

get_global_id(0) = 5*2 = 10

get_global_id(1) = 3*7 = 21

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

假设没有偏移量,情况是这样的:

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

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

+1作为您的答案。。如果我们在没有任何编码的情况下计算呢?。。从上面给出的信息中,get_local_size值是多少?“工作组的大小为(14,30)”。我假设这就是get_local_size将返回的值,而workgroup(2,3)指的是group_id。这意味着全局_id(0)将为5+14*2=33。我知道您已经知道如何使用内核调用来实现这一点,不是吗?因此,您只要求手动方法。由于所有参数都可以直接查询到OpenCLAPI、大小、id、维度、组id,因此无需手动执行。
get_global_id(0) = get_local_id(0)+get_local_size(0)*get_group_id(0)