[問題] 不好意思請教有研究CUDA的大大

看板C_and_CPP (C/C++)作者 (小JJ)時間16年前 (2009/08/24 10:44), 編輯推噓7(7027)
留言34則, 7人參與, 最新討論串1/1
各位有研究CUDA的大大 我是剛開始學CUDA的新手 最近碰到一個問題 我在看CUDA程式的時候 偵錯過後,他出現的錯誤是沒有支援函數指針. 不知道哪位大大可以告訴我:他所指的函數指針代表的是指標的意思嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 192.192.198.66

08/24 10:59, , 1F
是的,指針是對岸的用語。
08/24 10:59, 1F

08/24 11:11, , 2F
英文是 point, address
08/24 11:11, 2F

08/24 11:21, , 3F
如果可以可以請大大附註一下C++的指標和CUDA上哪些算是不
08/24 11:21, 3F

08/24 11:22, , 4F
支援的用法嗎?就是錯誤的範例之類的~
08/24 11:22, 4F

08/24 11:24, , 5F
函數指針 聽起來好像是 function pointer 耶?
08/24 11:24, 5F

08/24 11:34, , 6F
別懷疑, 指針 就是 pointer, 所以是 function pointer
08/24 11:34, 6F

08/24 11:34, , 7F
沒錯:)
08/24 11:34, 7F

08/24 11:43, , 8F
所以說如果我要避免遇到函數指針的問題,就是必須改寫所有
08/24 11:43, 8F

08/24 11:43, , 9F
的程式碼,對嗎?
08/24 11:43, 9F

08/24 12:03, , 10F
mm, 把有function pointer的code都改掉試試....@_@"
08/24 12:03, 10F

08/24 12:04, , 11F
PS. 去顯示卡板search CUDA, 然後找到a大與jk大, 應該
08/24 12:04, 11F

08/24 12:04, , 12F
可以向他們請教很多東西:)
08/24 12:04, 12F

08/24 12:11, , 13F
謝謝v大的幫忙~
08/24 12:11, 13F

08/24 13:02, , 14F
囧了, 小弟不是說直接在顯卡板發問啊, 而是可以直接請
08/24 13:02, 14F

08/24 13:03, , 15F
教那幾位大大啊....Orz
08/24 13:03, 15F

08/24 13:59, , 16F
阿阿~不好意思~~
08/24 13:59, 16F

08/24 18:38, , 17F
函式指標只支援global function
08/24 18:38, 17F

08/25 05:25, , 18F
不太懂S大的意思..如果cuda不支援指標..是否可以舉例
08/25 05:25, 18F

08/26 00:44, , 19F
你直接去看cuda programming guide,再c language extend
08/26 00:44, 19F

08/26 00:44, , 20F
有清楚的說明
08/26 00:44, 20F

08/26 00:45, , 21F
你無法對device function取得address
08/26 00:45, 21F

08/26 00:45, , 22F
但global function不在此限
08/26 00:45, 22F

08/26 11:34, , 23F
請問S大 在C裡取address的程式碼 若在丟入golbal裡 需變更
08/26 11:34, 23F

08/26 11:35, , 24F
原本的程式碼嗎
08/26 11:35, 24F

08/26 13:57, , 25F
我不懂你的疑問
08/26 13:57, 25F

08/26 13:58, , 26F
如果是說傳遞參數 記憶體位址必須是cudaMalloc取得的
08/26 13:58, 26F

08/26 13:58, , 27F
因為在global function中 屬於device執行的部份
08/26 13:58, 27F

08/26 14:29, , 28F
for (... ){ address=y*IMAGE_LENGTH+x-shift; ... }
08/26 14:29, 28F

08/26 14:35, , 29F
S大 此for loop裡的指標 需要更改嗎 或者能原封不動的
08/26 14:35, 29F

08/26 14:35, , 30F
丟給global執行呢
08/26 14:35, 30F

08/27 00:25, , 31F
指標要以cuMemcpyHtoD塞到device可以存取的記憶體
08/27 00:25, 31F

08/27 00:26, , 32F
該記憶體的起始位置必須是用cudaMalloc取得
08/27 00:26, 32F

08/27 00:27, , 33F
如果是在全域變數宣告的__device__指標 無法存取
08/27 00:27, 33F

08/27 00:28, , 34F
只要確定記憶體放的位置外 就可以原封不動的放上去
08/27 00:28, 34F
文章代碼(AID): #1AaVwfHj (C_and_CPP)
文章代碼(AID): #1AaVwfHj (C_and_CPP)