libcuda.so and libamdcalcl.so missing

I am installing 64 bit cuda pgroup’s c/c+ workstation on my 64 bit CentOS System.

I downloaded a driver for my GTX 275 card and stated to install. I had to stop and do a few things:

init 3

install NVIDIA software

init 5.

I placed a question about it on the CentOS forum and was told to abandon this old aproach and use the
elrepo.org software that is more robust and flexible. I entered:

rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org

then I entered:

rpm -Uvh http://elrepo.org/elrepo-release-6-4.e16repo.noarch.rpm

and I finally entered

yum install kmod-nvidia

and rebooted.

I did all of the above as root.

There is a command called pgaccelinfo in PGROUP

workstation software. It tells you all about you card.

It said even after all of this that no accelerator was detected. I
then entered

pgaccelinfo -v

the software said that

libcuda.so

libamdcalcl.so

not found. no accelearators were found.

Check that you have installed the CUDA or CAL libraries properly.
Check that your LD_LIBARY_PATH environment variable points to the CUDA or CAL runtime installation directory.

Now i ran the comand

find / -name libcuda.so

for both libcuda.so and libamdcacl.so were not on my system.

So how do I install them? Please understand that I am running on a 64 bit Centos 6.2 system. I
am mainly interested in the compute capabilities of the GPU not its graphic capabilities.

Any help appreciated. Thanks in advance.

Newport_j

Hi,

libcuda.so comes with the NVIDIA driver. Nomrally, when you install the drivers, the installer compiles the kernel module and installs both libcuda.so and libOpenCL.so in your /usr/lib and /usr/lib32. So is the NVIDIA driver actually installed?

Please check it by typing as root

$ modprobe nvidia

$ cat /proc/driver/nvidia/version

If the driver is installed, it should give you something like this (with the details changing depending on the version of driver and OS):

NVRM version: NVIDIA UNIX x86_64 Kernel Module  295.53  Fri May 11 23:28:10 PDT 2012

GCC version:  gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)

NB: depending on the installer, the actual name of the driver might differ. For example, on my ow system, the nvidia driver is re-named ‘nvidia-current’ so my modprobe command line becomes ‘modprobe nvidia-current’. I encourage you to start typing ‘modprobe nvid’ and then to hit the TAB key which will propose the available completion.

If no nvidia module is installed, then you need to re-install one, which will presumably come with the corresponding libcuda.so.

If you have one installed, then either the libcuda.so is buried somewhere you didn’t check (mine is actually locate in /usr/lib/nvidia-current/) or actually missing. In this case, I guess it comes within a separated package you are supposed to install from your distribution’s package manager.

Good luck.

And BTW, I strongly suspect that libamdcacl.so is the pendent of libcuda.so for AMD cards. If you don’t have such a card on your machine, it seems very reasonable not to have this library installed. The point is that since the PGI compiler can generate code for both targets, it checks for any of the two to be available on the machine at install time.

I tried your first command and then the second:

as root

modprobe nvidia

cat /proc/driver/nvidia/version

I got the same output as you show in the post. My compiler is different because of the fact I am using CentOS 6.2 64 bit.

I then ran pgaccelinfo

and got the same output as before as if nothing has changed. I then had the LD_LIBRARY_PATH file point to libcuda.so

which is in

/etc/lib64.

After that was changed I still got no accelerators detected. It could not find

libcuda.so

libamdcacl.so

It was as if nothing has changed. I do not know what to do now. The CentOS is now using the NVIDIA driver, see attached file for proof.

I am compiling 32 bit on a 64 bit CentOS OS.

Whta else canI do.

Any help appreciated. thanks in advance.

Newport_j




I beg you pardon it is in

libcuda.so

is in

/usr/lib64/nvidia

I noticed that the file can only be read by root so I changed the file permissions so it ca be read by all. I am superuser also.

Still nothing has changed. The pgaccelinfo command still give no accelerators found; and pgaccelinfo -v

says that

libcuda.so is not read

libamdcacl.so is not read

Make sure the LD_LIBRARY_PATH file points to the directory conatining libcuda.so - it is.

This are the only things that have changed since I last posted.

Thanks in advance. Any help appreciated.

Newport_j

Hi,

You said you want to compile for 32 bit target, so you need the 32 bit version of the cuda library. Check whether it is installed (most probably in /usr/lib32/nvidia) and make your LD_LIBRARY_PATH to point to it. For being sure you have the 32 bit version, check it with the command file. For example, I have both versions installed on my own system:

$ file /usr/lib32/nvidia-current/libcuda.so.295.53 

/usr/lib32/nvidia-current/libcuda.so.295.53: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped

$ file /usr/lib64/nvidia-current/libcuda.so.295.53 

/usr/lib64/nvidia-current/libcuda.so.295.53: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped

If the 32 bit version is not installed, then you’ll have to install it using your prefered package manager.

I believe that the LD_LIBRARY_PATH file can only point to *.so files. It cannot point to any other. Can I use $PATH to point to the correct libcuda.so file? Must I only use LD_LIBRARY_PATH?

Also. you said and I agree that libamdcacl.so is for the AMD libraries and hence not needed in this instance. But when pgaccelinfo fails it does point out thst that file is not read. So it seesm I must put it in or reinstall the software and leave all AMD files out when it asks for them.

I am just guessing as to what to do about libamdcacl.so was not read when pgaccelinfo is executed. I do not think that doing nothing is the answer; I must do something.

Any help appreciated. Thanks in advance.

Newport_j

I’m not sure I get you here. Well, let’s imagine your libcuda.so are located in /usr/lib64/nvidia for the 64 bit version and /usr/lib32/nvidia for the 32 bit version, then to be able to compile / run either 32 bit or 64 bit codes, you can do like this:

$ export LD_LIBRARY_PATH=/usr/lib64/nvidia:/usr/lib32/nvidia:$LD_LIBRARY_PATH

This way, the installer will have the opportunity to search for both 32 bit and 64 bit version of the libraries, and select the one it needs.

And BTW, I ran my “file” tool on libcuda.so.295.53 rather than libcuda.so, because the later is a symbolic link to the former, and file would have simply reported so.

Honestly, I don’t see why this would be necessary. the thing is that since the PGI installer can produce code for both NVIDIA and AMD cards, it checks at install time which hardware is available. It it finds any of of them, it probably adjust its paths accordingly. I’m pretty sure it is enough to have one of the two available for preventing the installer to complain. And in any case, even if you install the AMD software stack, that won’t help you much when time will come to run the code, since you don’t have AMD hardware.

I think I see your point please understand that we are talking at cross purposes here. I think we are talking about the same thing. I have a 32-bit compiler from a software company, Portland Group Inc. It only can compile 32-bit apps. That is all i want to do. I am using it on a 64 bit CentOS operating system. I need to use 64 bit drivers to compile 32-bit applications. That much I know.

However, once it is compiled I need to link with 32 bit cuda libraries, since it is a 32 bit application. I am unsure if the are 32 bit Cuda toolkit libraries for Centos 6.2. Do you know if there are. As I said I have no problem compling the program as 32 bit.

The problem I have is when I try to run it; then I need 32-bit libraries for Centos 6.2. Does NVIDIA still make these; ie 32 bit Toolkit for CentOS 6.4? I know they have 32 bit libraries for CentOS 5.5. If there a no 32 bit libraries for CentoS 6.2 will 32 bit libraries for Centos 5.5 work?

Any help appreciated. Thanks in advance.

Newport_j

Did you just try what I proposed you?
Did it work?
If not, what did you get?