共有メモリにデータをロードするためにグローバル メモリにアクセスしていますが、バンクの競合があるかどうかを知りたいです。セットアップは次のとおりです。
グローバル メモリ内: g_array
. サイズ (256, 64) の 2D 行列
これは、配列データをグローバル メモリから共有メモリにロードする方法です。gridDim (4, 1) と blockDim (16, 16) でカーネルを呼び出しました。
d_j = (blockIdx%x-1) * blockDim%x + threadIdx%x-1
d_l = (blockIdx%y-1) * blockDim%y + threadIdx%y-1
tIdx = threadIdx%x -1
tIdy = threadIdx%y -1
real, shared :: s_array(0:15,0:15)
s_array(tIdx,tIdy) = g_array(d_j,d_l)
doSomthingwithMySharedMemoryData()
.....