我正在尝试理解银行冲突是如何发生的。
我在全局内存中有一个大小为256的数组,并且我有一个单一块中的256个线程,我想将该数组复制到共享内存。因此,每个线程都复制一个元素。
shared_a[threadIdx.x]=global_a[threadIdx.x]
这个简单的操作会导致银行冲突吗?
假设现在数组的大小大于线程数,因此我现在使用这个来将全局内存复制到共享内存:
tid = threadIdx.x;
for(int i=0;tid+i<N;i+=blockDim.x)
shared_a[tid+i]=global_a[tid+i];
上述代码会导致银行冲突吗?
for (int i = tid ; i < N ; i += blockDim.x) shared_a[i] = global_a[i];
。 - Tom