[問題] CUDA 程式

看板C_and_CPP作者 (--)時間11月前 (2023/05/18 23:38), 編輯推噓7(7014)
留言21則, 7人參與, 11月前最新討論串1/2 (看更多)
不知道有沒有高手可以解答以下問題? 資料形式: 600列800行的隨機數 目的: 把每一行的數據加起來 初始化: sum[600]={0.0} data[600x800]= 上述資料 CUDA程式1: 成功 // dim3 gridsize(1, 1, 1); // dim3 blocksize(600, 1, 1); for (int j = 0; j < 800; j+= 1){ sum[(blockDim.x*bdx + tdx)] = sum[(blockDim.x*bdx + tdx)] + data[600*j + (blockDim.x*bdx +tdx)]; } CUDA程式2: 失敗 // dim3 gridsize(40, 1, 1); // dim3 blocksize(600, 1, 1); for (int j = 0; j < 800; j+= 40){ sum[0*(j + bdx) +tdx] = sum[0*(j + bdx) +tdx] + data[600*(j + bdx) +tdx]; } 請問程式2失敗的原因是?可以怎麼寫呢? 我自己猜測是: 例如, sum[1]無法同時處理40筆資料 請教大家, 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.113.11 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1684424338.A.607.html

05/18 23:41, 11月前 , 1F
抱歉, 資料形式: 800列600行的隨機數
05/18 23:41, 1F

05/18 23:44, 11月前 , 2F
目的: 把每一列的數據加起來
05/18 23:44, 2F

05/18 23:48, 11月前 , 3F
int bdx = blockIdx.x; int tdx = threadIdx.x;
05/18 23:48, 3F

05/19 00:07, 11月前 , 4F
每一行600個數據,對嗎?
05/19 00:07, 4F

05/19 00:10, 11月前 , 5F
然後600個數據相加?
05/19 00:10, 5F

05/19 00:14, 11月前 , 6F
喔,我懂了,是800個數據相加XD
05/19 00:14, 6F

05/19 00:21, 11月前 , 7F
data[600*(j + bdx) +tdx] access資料會超出邊界吧?
05/19 00:21, 7F

05/19 00:22, 11月前 , 8F
blockidx最大不是可以到39?
05/19 00:22, 8F

05/19 00:43, 11月前 , 9F
要不要考慮用cuda blas可能比較快
05/19 00:43, 9F

05/19 00:46, 11月前 , 10F
cublasSgemv
05/19 00:46, 10F

05/19 00:46, 11月前 , 11F
具體例子可以問chatGPT
05/19 00:46, 11F

05/19 02:33, 11月前 , 12F
為什麼不用reduction
05/19 02:33, 12F

05/19 19:13, 11月前 , 13F
atomic add
05/19 19:13, 13F

05/23 22:05, 11月前 , 14F
實驗結果: main func中用cublasSdot作很慢(時間需100倍)
05/23 22:05, 14F

05/23 22:07, 11月前 , 15F
在__global__ 中用cublasSdot難編譯 (makefile需修正)
05/23 22:07, 15F

05/23 22:09, 11月前 , 16F
在我用的.cu程式(ubuntu環境)好像沒辦法用std::函式
05/23 22:09, 16F

05/25 04:58, 11月前 , 17F
錯誤的原因應該是 race condition,有敘述在論壇內
05/25 04:58, 17F

05/25 04:58, 11月前 , 18F
05/25 04:58, 18F

05/25 04:59, 11月前 , 19F
歡迎大家多多利用來交流
05/25 04:59, 19F

05/25 13:38, 11月前 , 20F
threads從600改成15
05/25 13:38, 20F

05/26 23:10, 11月前 , 21F
thanks!!
05/26 23:10, 21F
文章代碼(AID): #1aPaQIO7 (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 2 篇):
問題
7
21
文章代碼(AID): #1aPaQIO7 (C_and_CPP)