近來閱讀了版上a大關於cuda的文章
因此想把自己的程式改寫成可利用GPU執行
但bank conflict卻始終困擾著我
舉例來說
int k=threadIdx.x
num1=data1[k]
num2=data2[k]
sum[k]=num1+num2;
若把num1 num2的記憶體配置在shared memory時
會因為不同執行緒存取到同一塊記憶體產生bank conflict的問題
但因為計算複雜 所需記憶體大的關係 也無法配置到暫存器上
想請教cuda有類似openMp中 for private()的指令嗎
還是就只能完全利用陣列運算 如把num1改變成陣列num1[k]等
--
因此想把自己的程式改寫成可利用GPU執行
但bank conflict卻始終困擾著我
舉例來說
int k=threadIdx.x
num1=data1[k]
num2=data2[k]
sum[k]=num1+num2;
若把num1 num2的記憶體配置在shared memory時
會因為不同執行緒存取到同一塊記憶體產生bank conflict的問題
但因為計算複雜 所需記憶體大的關係 也無法配置到暫存器上
想請教cuda有類似openMp中 for private()的指令嗎
還是就只能完全利用陣列運算 如把num1改變成陣列num1[k]等
--
All Comments