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
What does this error mean? It's just a cudaMalloc and it suppose to be supported for the compiler right?
Can functions like cudaMalloc be used in a .cpp file? Do I need to create a .cu file just for anything what comes from CUDA?
You need to include the header files where the CUDA functions are declared:
#include <cuda_runtime_api.h>
#include <cuda.h>
and then on the cmd line you also need to add the PATH (option -I
) where those includes are located.
On my system, version 2.1 of CUDA installed the header files on /usr/local/cuda
. To compile, I would do something like:
nvcc -I/usr/local/cuda/include -L/usr/local/cuda/lib -lcutil -lcudpp -lcuda -lcudart -c -o FSPB_main.o FSPB_main.cpp
Don't forget to add -I.
to that command if your code depend on custom headers you wrote that are located in the same directory of the source code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With