2011-01-18 11 views
8

Ho una funzione riutilizzabile in alcuni codici CUDA che devono essere richiamati dal dispositivo e dall'host. C'è un qualificatore appropriato per questo?Funzione CUDA in grado di chiamare dal dispositivo o dall'host

ad es. qual è la definizione corretta per func1 in questo caso:

int func1 (int a, int b) { 
    return a+b; 
} 

__global__ devicecode (float *A) { 
    int i = blockDim.x * blockIdx.x + threadIdx.x; 
    A[i] = func1(i,i); 
} 

void main() { 
    // Normal cuda memory set-up 

    // Call func1 from inside main: 
    int j = func1(2,4) 

    // Normal cuda memory copy/program run/retrieve data 
} 

Finora posso solo farlo funzionare avendo la funzione di due volte: una volta in modo esplicito per il dispositivo e una volta per l'host. C'è un modo migliore?

risposta

16

Dalla Guida CUDA programmazione:

I __device__ e __host__ qualificatori possono essere utilizzati insieme tuttavia, in qual caso la funzione è compilato per l'host e il dispositivo.

Problemi correlati