2012-11-06 11 views
9
__global__ void add(int a, int b, int *c) { 
    *c = a + b; 
} 
int main(void) { 
int c; 
int *dev_c; 
HANDLE_ERROR(cudaMalloc((void**)&dev_c, sizeof(int))); 
add<<<1,1>>>(2, 7, dev_c); 
HANDLE_ERROR(cudaMemcpy(&c, dev_c, sizeof(int), cudaMemcpyDeviceToHost)); 
printf("2 + 7 = %d\n", c); 
cudaFree(dev_c); 
} 

Questo è il codice. HANDLE_ERROR errore non trovato viene generato. non so come risolverlo Ho provato ad afferrare alcuni file di intestazione ma non riesco a capirlo ...HANDLE_ERROR errore non trovato in Cuda

Qualsiasi aiuto per favore !!!

risposta

36

Se dovessi tirare a indovinare, direi che si sta utilizzando il libro CUDA con l'esempio, che definisce la macro HANDLE_ERROR come segue:

static void HandleError(cudaError_t err, 
         const char *file, 
         int line) { 
    if (err != cudaSuccess) { 
     printf("%s in %s at line %d\n", cudaGetErrorString(err), 
       file, line); 
     exit(EXIT_FAILURE); 
    } 
} 
#define HANDLE_ERROR(err) (HandleError(err, __FILE__, __LINE__)) 

Assicurarsi che questo codice compare qualche parte nella tua fonte, o da qualche parte nell'intestazione, #include.

+1

Sto leggendo lo stesso libro. L'autore ha specificato dove cercare il codice della libreria? – frankliuao

-1

È possibile scaricare il codice sorgente per il libro here.

Il codice sorgente contiene anche i file header (nella cartella comune), in cui sono definite le macro mancanti e che le quotazioni del libro nei codici sorgente come (ad esempio)

#include "../common/book.h" 

Se i collegamenti diventare non disponibile, cercare il titolo dei libri sul sito Nvidia Developer o sul sito del CUDA, troverai il link diretto alla pagina del libro, dove è possibile trovare il codice sorgente.