我的输入字符数组是1024,我指定了任何本地项目大小= 32。我的每个工作项目都在使用16个字符,我指定了全局项目大小= 64。在我的内核中,我计算了data_tid如下。
int offset=16;
int gr_id=get_group_id(0);
int id = get_global_id(0);
int data_tid=(gr_id*32+id)*offset;
我使用的是NVIDIA Geforce 9800GT。 我的代码抛出了浮点异常。我已经看到这是由global_size引起的,不能被本地大小整除,但在我看来它是可以整除的。
有人可以告诉我问题在哪里吗?
答案 0 :(得分:0)
您想使用get_local_id
代替get_global_id
。本地标识是每个组中工作项的索引。全局id是整个范围内工作项的索引。
您也可以直接使用int data_tid = get_global_id(0) * offset;