Cuda中的cuda Malloc函式

2021-09-10 14:39:53 字數 850 閱讀 1454

很多人不理解為什麼cuda_malloc的第乙個引數是兩個星星,

其實直接用&dev_c也是可以的但是函式原型必須得是void**型的指標(請看我的指標遊戲系列部落格

之所以是void**,這是因為我們不需要考慮傳入的指標型別,我們只需要這個指標的位址就夠了(怎麼解釋指標時你的事,我只管分配記憶體給你)。

如圖,假設dev_c的位址是0x05430,假設變數var的位址是0x07990

所謂解引用(即指標變數前加乙個*),指代該位址裡面存放的內容

&dev_c就是dev_c的位址,即0x05430,而 (void *)(&dev_c),是整體轉換為了乙個指標,指向var的位址(即(void*)0x05430)

以此類推,而 (void **)(&dev_c)就是指向指標的指標。

因為在cuda上,gpu提前沒有分配位址,所以說只能靠 (void **)(&dev_c)的方式來定位到要分配記憶體的地方。

簡單說,(void**)(位址)以後,就是乙個指向指標型別的指標。這有這樣,才能讓指標在子函式中獲得目標位址,不然改的就是形參的指向,沒有意義。

如果還不懂(我估計如果一開始不懂,看了這個部落格也不會懂),去看看我的指標遊戲系列,一共兩個部落格,幾個簡短的例子,肯定就能懂啦!

cuda中變數的屬性

在 device 亞程式中宣告的變數可以有以下幾種屬性 device,managed,constant,shared 和pinned device 資料儲存在 device 全域性儲存器中,可以通過以下方式宣告 real a 10 attributes device a 或 real device ...

CUDA中的計時函式

一 clock函式計時 在c和c 中有clock計時函式,由於cuda是包含c的,所以在cuda中我們也同樣可以使用這個函式。clock函式的定義 clock函式測的是在程式中從程式開始到呼叫clock函式之間在cpu上所經過的時鐘數 clocks clock函式的介紹 在c與c 的標頭檔案time...

CUDA中的數學函式

cuda中的數學函式,普通的和標準c中一樣,如果是對int操作,直接使用本名,如果操作long型別對數,在本名前加l,如果操作雙精度浮點數,在本名前加f,如果操作單精度,在本名前後都加上f。int max int,int 對int型別操作 long lmax long long 對long型別操作 ...