Hi guys,
When compiling the following code:
#include <cublas.h>
...
cublasStatus status;
status = cublasInit();
I get
Undefined reference to `cublasInit’…
Any ideas why?
Thanks
Hi guys,
When compiling the following code:
#include <cublas.h>
...
cublasStatus status;
status = cublasInit();
I get
Undefined reference to `cublasInit’…
Any ideas why?
Thanks
you need to link with cublas.lib which loates in C:\CUDA\lib64 or libcublas.so in /usr/local/cuda/lib
brilliant!
Thanks. If someone else has the same problem, what I did was to add to the Makefile:
# Additional libraries needed by the project
USECUBLAS := 1
and now it compiles ok
Hi there! Got the same problem. Which makefile did you edit? My CUDA-Program does not have a makefile, but I think i set the LD_LIBRARY_PATH correctly in my .bashrc:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib
The .so files are all there :)
My program is not that big (just starting to make myself comfortable with cuBLAS):
#include <vector>
#include <cublas.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
vector<int> cVector;
int main(int argc, const char* argv[]) {
cublasStatus status;
status = cublasInit();
if (status != CUBLAS_STATUS_SUCCESS) {
fprintf (stderr, "!!!! CUBLAS initialization error\n");
return EXIT_FAILURE;
}
}
;
and i get the following error:
/tmp/tmpxft_00000d92_00000000-1_01_vector.o: In function `main':
01_vector.cc:(.text+0x10): undefined reference to `cublasInit'
collect2: ld returned 1 exit status
Does anybody have a solution? I’m using CUDA 2.3.
LD_LIBRARY_PATH doesn’t effect compilation behaviour. You need to explicitly specify you want to link CUBLAS, something like this:
cc -o mycode mycode.c -lcublas -lcudart
and you should be in business,…
Great! Thanks!
nvcc mycode.cc -lcublas
did the job!
Hello all.
I have the same problem when I compile the simpleCuda example under Linux CentOS 5.2 Cuda 3.0 version.
I use this commands to compile the example:
nvcc ./simpleCUBLAS.c -o simpleCUBLAS -I/usr/local/cuda/include -L/usr/local/cuda/lib64 -lcudartemu -lcublasemu -deviceemu
and
nvcc ./simpleCUBLAS.c -o simpleCUBLAS -I/usr/local/cuda/include -L/usr/local/cuda/lib64 -lcudartemu -lcublasemu
All dependenses are correct
libcudartemu.so.3 => /usr/local/cuda/lib64/libcudartemu.so.3 (0x00002ab850e86000)
libcublasemu.so.3 => /usr/local/cuda/lib64/libcublasemu.so.3 (0x00002ab8510c1000)
But still it gives
simpleCUBLAS test running..
!!!! CUBLAS initialization error
No you don’t.
You are not compiling for device emulation, but are linking with the device emulation libraries. That will not work.
Thanks for reply.
I`ve tried to compile the example with cublasemu library.
I use such command:
nvcc ./simpleCUBLAS.c -o simpleCUBLAS -I/usr/local/cuda/include -L/usr/local/cuda/lib64 -lcudart -lcublasemu -lcuda
But the program says:
“Segmentation fault”
Let me try again. If you are trying to use device emulation, the you need to tell nvcc using the -deviceemu flag, otherwise it won’t work. If you are trying to compile for a device, don’t use the device emulation libraries. Do one or the other, but don’t mix the two because, as you have found out, it doesn’t work.
I pretty understand what emulation mode does. When I tried to compile it for a device with the help of this command:
nvcc ./simpleCUBLAS.c -o simpleCUBLAS -I/usr/local/cuda/include -L/usr/local/cuda/lib64 -lcudart -lcublas
it still says:
simpleCUBLAS test running..
!!!! CUBLAS initialization error
And you have a working, cuda compatible video card?
Thanks for reply. There is something strang with my video card.
What card, driver and CUDA version are you using?
I use NVIDIA Geforce GTX 280, Cuda version 2.3, driver version is 190.18.
I`ve reinstalled all software and it started working in emulation mode, but when I try to run it as for device it says, that there is no device found. Probably I must install the latest software and configure nvidia card correctly. Because I have to cards connected to one PC(nVidia and AMD).
P.S. I`ve noticed another problem. When I start the my program compiled for cuda in emulation mode on my laptop(Acer 5632 WLMI) the function cudaGetDeviceCount returns 0. But when I start the same example on PC in emulation mode all is working ok. :(