Re: [問題] 使用CUDA Share memory執行"點乘"比glo …

看板C_and_CPP (C/C++)作者時間16年前 (2010/03/18 02:38), 編輯推噓6(6010)
留言16則, 3人參與, 最新討論串2/3 (看更多)
主要是你寫的 Matrix_Point_Multiplication_SM 有問題 你用for loop的功能是為了什麼? 能夠只執行一次的動作應該不需要重複執行好幾次吧 我把 Matrix_Point_Multiplication_SM 改成如下 呼叫的時候用 Matrix_Point_Multiplication_SM<<<blocks, threads, BLOCK_SIZE*BLOCK_SIZE*2*sizeof(float)>>>( d_input1, d_input2, d_output_s ); // ------------------- 用 share memory ------------------- // __global__ void Matrix_Point_Multiplication_SM( float *Ma, float *Nb, float *Pc ) { __shared__ float Msm[ BLOCK_SIZE ][ BLOCK_SIZE ]; __shared__ float Nsm[ BLOCK_SIZE ][ BLOCK_SIZE ]; int ty = threadIdx.y; int tx = threadIdx.x; int row = blockIdx.y * BLOCK_SIZE ; int col = blockIdx.x * BLOCK_SIZE ; if( (row+ty < NNy) && (col+tx < NNx) ) { // 矩陣搬移Share memory Msm[ ty ][ tx ] = Ma[ (row+ty)*NNx + (col+tx) ]; Nsm[ ty ][ tx ] = Nb[ (row+ty)*NNx + (col+tx) ]; // 矩陣運算Share memory Pc[ (row+ty)*NNx + (col+tx) ] = Msm[ ty ][ tx ] * Nsm[ ty ][ tx ]; } } -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.120.44.12

03/18 03:02, , 1F
我是從矩陣乘法改過來的, 少考慮了會重複的問題
03/18 03:02, 1F

03/18 03:09, , 2F
為什麼block_size*block_size之後要乘2呢
03/18 03:09, 2F

03/18 03:12, , 3F
因為有Msm和Nsm啊
03/18 03:12, 3F

03/18 03:14, , 4F
和在excution configuration指定s.m.大小應該無關
03/18 03:14, 4F

03/18 03:18, , 5F
我記得使用到s.m.但呼叫kernel時沒有加入size參數的話
03/18 03:18, 5F

03/18 03:19, , 6F
可能會有無法預期的錯誤
03/18 03:19, 6F

03/18 03:21, , 7F
可以說一下是哪裡說的嗎? programming guide 有講指定
03/18 03:21, 7F

03/18 03:22, , 8F
第三個參數的時機吧? 好像是你沒定大小的時候?
03/18 03:22, 8F

03/18 03:24, , 9F
學長之前做實驗碰到的Bug 我翻過programming guide是沒有
03/18 03:24, 9F

03/18 03:25, , 10F
提到使用s.m.但是沒加參數會怎麼樣
03/18 03:25, 10F

03/18 03:30, , 11F
如果有指定大小,正常應該是不是加才對
03/18 03:30, 11F

03/18 03:35, , 12F
找好久 終於找到了 Appendix.B.12 沒有寫的話預設的
03/18 03:35, 12F

03/18 03:35, , 13F
shared memory size是0
03/18 03:35, 13F

03/18 03:38, , 14F
嗯,是dynamic allocate時用的,所以是runtime指定大小
03/18 03:38, 14F

03/18 03:39, , 15F
原來的code已經在compile time指定大小了,所有有兩份?
03/18 03:39, 15F

03/18 03:40, , 16F
好像也沒有,因為沒有宣告? (extern __shared__ xxx)
03/18 03:40, 16F
文章代碼(AID): #1BeI6l4a (C_and_CPP)
文章代碼(AID): #1BeI6l4a (C_and_CPP)