2D内核中的银行冲突

时间:2014-10-22 17:41:05

标签: opencl bank-conflict

假设我们的硬件有32个4字节宽度的存储区。我们有一个大小为32的1D内核,以及一个本地1D内核数组。

然后,确保每个连续线程访问阵列中的连续内存位置应避免存在冲突。

但是,假设我们有一个8 x 4 2D内核和相同的1D阵列。我怎样才能确保没有银行冲突?我们如何为2D数组定义“连续线程”?

1 个答案:

答案 0 :(得分:1)

您可以使用此代码获得在2D案例中使用get_global_id(0)的1D案例中获得的相同全局工作项ID:

get_global_id(1) * get_global_size(0) + get_global_id(0);

如果您想在工作组中获取本地工作项ID,只需将全局变更为本地人。