假设我们的硬件有32个4字节宽度的存储区。我们有一个大小为32的1D内核,以及一个本地1D内核数组。
然后,确保每个连续线程访问阵列中的连续内存位置应避免存在冲突。
但是,假设我们有一个8 x 4 2D内核和相同的1D阵列。我怎样才能确保没有银行冲突?我们如何为2D数组定义“连续线程”?
答案 0 :(得分:1)
您可以使用此代码获得在2D案例中使用get_global_id(0)
的1D案例中获得的相同全局工作项ID:
get_global_id(1) * get_global_size(0) + get_global_id(0);
如果您想在工作组中获取本地工作项ID,只需将全局变更为本地人。