C_and_CPP 板


LINE

開發平台(Platform): (Ex: Win10, Linux, ...) Linux GPGPU-sim 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) nvcc 問題(Question): 正在練習簡單的vectorAdd 原本是在main()中呼叫function來launch kernel 這樣沒問題 不過想試著把launch kernel放到main()中 但卻沒有出現如預期的結果 目前找不到是什麼問題 預期的正確結果(Expected Output): dataD = 1.000000 dataD = 1.000000 dataD = 1.000000 dataD = 1.000000 dataD = 1.000000 dataD = 1.000000 dataD = 1.000000 dataD = 1.000000 dataD = 1.000000 dataD = 1.000000 錯誤結果(Wrong Output): dataD = 1.000000 dataD = 1.000000 dataD = 0.000000 dataD = 0.000000 dataD = 0.000000 dataD = 0.000000 dataD = 0.000000 dataD = 0.000000 dataD = 0.000000 dataD = 0.000000 程式碼(Code):(請善用置底文網頁, 記得排版) __global__ void VectorAdd( float* arrayA, float* arrayB, float* output ) { int idx = threadIdx.x; output[idx] = arrayA[idx] + arrayB[idx] + 1; } void add_vector_gpu( float* a, float* b, float *c, int size ); int main( int argc, char** argv){ int data_size = 10; float *dataA = new float[data_size], *dataB = new float[data_size], *dataC = new float[data_size], *dataD = new float[data_size], *dataE = new float[data_size]; for( int i = 0; i < data_size; ++ i ) { dataA[i] = i; dataB[i] = -1 * i; } add_vector_cpu( dataA, dataB, dataC, data_size ); float data_size2 = data_size * sizeof(float); float *dev_A, *dev_B, *dev_C, *dev_D; cudaMalloc( (void**)&dev_A, data_size2 ); cudaMalloc( (void**)&dev_B, data_size2 ); cudaMalloc( (void**)&dev_C, data_size2 ); cudaMalloc( (void**)&dev_D, data_size2 ); cudaMemcpy( dev_A, dataA, data_size, cudaMemcpyHostToDevice ); cudaMemcpy( dev_B, dataB, data_size, cudaMemcpyHostToDevice ); VectorAdd<<< 1, 10 >>>( dev_A, dev_B, dev_C ); cudaMemcpy( dataD, dev_C, data_size, cudaMemcpyDeviceToHost ); for( int i = 0; i < data_size; ++ i ) { printf( "dataD = %f\n", dataD[i] ); } } 補充說明(Supplement): 另外想請問 如果想在kernel中printf一些資料該怎麼做 有看到說要 #include "cuPrintf.cu" 才可以使用 cuPrintf ("Thread_number %d\n", threadIdx.x); 但還是沒有print 是不是方法用錯? --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.118.155.204
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1494208139.A.3C4.html
1F:推 mike0227: 你memcpy的大小是data_size不是data_size2 05/08 11:26
2F:→ mike0227: 然後應該要用size_t不是float 05/08 11:27
3F:→ mike0227: printf in kernel只要不是超老的卡應該都有支援了 05/08 11:27
4F:→ mike0227: 就直接printf("Hello world!\n") nvcc會幫你搞定 05/08 11:28
恩恩 原來是我眼拙把memcpy的大小設錯 謝謝前輩 不過請問您指的float是哪個部分? 這與size_t的差別是什麼? ※ 編輯: v00623 (140.118.155.204), 05/08/2017 12:44:03
5F:推 LPH66: float data_size2 ← 這個要是 size_t 05/08 14:00
好的~ 謝謝 ※ 編輯: v00623 (140.118.155.204), 05/08/2017 16:48:14







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP