2011-06-16 14 views
7

FSPB_main.cppत्रुटि

int main(int args, char* argv[]){  
    ....... 

    float *d_a; 
    cudaMalloc((void**)&d_a, 5*sizeof(float)); 

} 

$ nvcc -L/usr/local/cuda/lib -lcutil -lcudpp -lcuda -lcudart -c -o FSPB_main.o FSPB_main.cpp

FSPB_main.cpp: In function ‘int main(int, char**)’: FSPB_main.cpp:167:45: error: ‘cudaMalloc’ was not declared in this scope

इस त्रुटि क्या मतलब है? यह सिर्फ एक cudaMalloc है और यह संकलक सही के लिए समर्थित होने का मानना ​​है?

cudaMalloc जैसे कार्यों को .cpp फ़ाइल में उपयोग किया जा सकता है? क्या मुझे सीयूडीए से जो कुछ भी आता है उसके लिए मुझे एक .cu फ़ाइल बनाने की ज़रूरत है?

उत्तर

15

आप हेडर फाइल जहां CUDA कार्यों की घोषणा की जाती शामिल करने की जरूरत:

#include <cuda_runtime_api.h> 
#include <cuda.h> 

और उसके बाद cmd लाइन आप भी पथ (विकल्प -I) जहां उन शामिल स्थित हैं जोड़ने की जरूरत पर।

मेरे सिस्टम पर, CUDA के संस्करण 2.1 ने /usr/local/cuda पर हेडर फ़ाइलों को स्थापित किया। संकलन के लिए, मैं की तरह कुछ करना होगा:

nvcc -I/usr/local/cuda/include -L/usr/local/cuda/lib -lcutil -lcudpp -lcuda -lcudart -c -o FSPB_main.o FSPB_main.cpp 

कि आदेश को -I. जोड़ने के लिए है, तो अपने कोड आप ने लिखा कस्टम हेडर कि स्रोत कोड का एक ही निर्देशिका में स्थित हैं पर निर्भर मत भूलना।

+1

भगवान आपको आशीर्वाद देते हैं! – Manolete