2011-07-08 48 views
4

CUDA專家介紹,如果我在主機代碼已經定義了一個新的類型:CUDA __device__

struct float_3{ 
float x; 
float y; 
float z; 
}; 

,我已經轉移這種類型的設備的一些數據,我可以創造的那個__device__電話新型號,即:

__device__ float_3 foo(float_3 r,float b,int a){ 
} 

我們可以創建任何類型的__device__嗎?或者只是int,float, dlouble, void等... 是否有可能返回__device__上的指針?即 __device__ float_3* foo(){}

回答

7

是的,你可以創建任何類型的__device__。它只是一個限定符,使得該函數能夠在設備上運行並可從設備中調用。

順便說一句,CUDA有float3類型。我從來沒有使用它,但如果我記得正確它提供了float_3相同的功能,並且還帶有一個構造函數。

+5

CUDA float3類型也具有正確的對齊聲明,另一個優點。 – harrism

2

我們可以創建任何類型的 __device__嗎?

簡短回答是。長的回答是,如果它是用戶定義類型float_3,則可以定義__device__變量指針並使用cudaMalloc分配設備中的內存。

是否可以返回指針 設備?

是的,你可以做到。

相關問題