2012-11-06 21 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); 
} 

Đây là mã. Lỗi HANDLE_ERROR không tìm thấy đang được tạo. tôi không biết làm thế nào để giải quyết nó. Đã cố gắng lấy một số tệp tiêu đề nhưng không thể tìm ra được ...HANDLE_ERROR trong Cuda

Bất kỳ trợ giúp nào !!!

Trả lời

36

Nếu tôi phải đoán, tôi muốn nói rằng bạn đang sử dụng cuốn sách CUDA By Ví dụ, trong đó xác định HANDLE_ERROR vĩ mô như sau:

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__)) 

Hãy chắc chắn rằng mã này xuất hiện ở đâu đó trong nguồn của bạn, hoặc ở đâu đó trong tiêu đề bạn #include.

+1

Tôi đang đọc cùng một cuốn sách. Tác giả có chỉ định nơi tìm mã thư viện không? – frankliuao

-1

Bạn có thể tải xuống mã nguồn cho sách here.

Mã Nguồn tin cũng chứa các tập tin tiêu đề (trong thư mục phổ biến), nơi các macro mất tích được xác định, và trong đó có dấu ngoặc kép cuốn sách trong các mã nguồn như (ví dụ)

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

Nếu các liên kết trở thành không có sẵn, tìm kiếm tiêu đề sách trên trang web của Nhà phát triển Nvidia hoặc trang web của CUDA, bạn sẽ tìm thấy liên kết trực tiếp đến trang của sách, nơi có thể tìm thấy mã nguồn.