Message boards :
Number crunching :
BOINC GPU Detection in Linux
Message board moderation
Author | Message |
---|---|
Wedge009 Send message Joined: 3 Apr 99 Posts: 451 Credit: 431,396,357 RAC: 553 |
This might be something better suited for the BOINC forums, but more people probably read these threads, so I thought I'll try here first. I've read through a lot of other queries about this, but haven't found anything that will resolve this for me. I have run BOINC GPUs on Linux in the past, but back then all that was necessary was to install BOINC and the appropriate proprietary drivers. Now it looks like other packages are necessary to ensure libcuda.so, libOpenCL.so and libaticalrt.so are available. Even after doing that (or at least trying to), I still can't get BOINC to pick up the GPUs. For the record I'm using Ubuntu x64 and I'm getting this problem on two desktops. This is what I'm getting from the coproc debug output for the AMD machine: No NVIDIA library found calInit() returned 1 OpenCL library present but no OpenCL-capable GPUs found No usable GPUs found ...and for NV: NVIDIA drivers present but no GPUs found No ATI library found No OpenCL library found No usable GPUs found I've poked around the BOINC source code for the required shared objects and as mentioned I've tried to ensure they're available in /usr/lib/. Nothing seems to be detected on BOINC restart. Seems as though this is a somewhat recent problem as CUDA/OpenCL/CAL libraries got moved out of the driver packages. Does anyone have any suggestions, please? Soli Deo Gloria |
TBar Send message Joined: 22 May 99 Posts: 5204 Credit: 840,779,836 RAC: 2,768 |
I had a problem with the ATI OpenCL libraries with the proprietary driver. Look at this thread for the fix; BOINC doesn't like the OpenCL in the AMD Proprietary Drivers for Ubuntu? I opened Nautilus with gksu, went to usr/lib and made a link to libOpenCL.so.1. Once BOINC sees OpenCL, maybe it will see the cards? Everything else will see OpenCL with the standard proprietary driver install... |
Wedge009 Send message Joined: 3 Apr 99 Posts: 451 Credit: 431,396,357 RAC: 553 |
Yes, I tried linking to the libraries, but I'm not really sure where BOINC is looking for them. I'm pretty sure that's the problem - I just need to find out where BOINC is actually looking. Edit: I had also installed ocl-icd-libopencl1, which includes /usr/lib/x86_64-linux-gnu/libOpenCL.so already. Doesn't seem to help. Soli Deo Gloria |
TBar Send message Joined: 22 May 99 Posts: 5204 Credit: 840,779,836 RAC: 2,768 |
It appears you are using the New Ubuntu. I spent weeks trying to get 14.4 working on my older Mac. I finally went back to 12.4 and it finally worked, except it only sees half of the video ram. I think I will stay with 12.4 for a while. Good Luck. |
Wedge009 Send message Joined: 3 Apr 99 Posts: 451 Credit: 431,396,357 RAC: 553 |
Oh, so all this started with 14.04? Well, that's a bummer but at least it gives me a starting point. I know for certain that I had it working on older releases, so I'll give it a try. Edit: Taking a look at the package file lists it looks like the libraries were moved out of the main driver package with 14.04. I'll see how it goes with 13.10. Soli Deo Gloria |
Wedge009 Send message Joined: 3 Apr 99 Posts: 451 Credit: 431,396,357 RAC: 553 |
Made a clean installation of Kubuntu 13.10 and nvidia-319 + BOINC 7.2.7 (most recent versions on the default repositories) on top of that, and were GPUs detected without any extra packages. Hopefully the AMD machine will have it just as easy. Disappointing that the driver packages seem to have had CAL/CUDA/OpenCL stripped from them in 14.04. I presume most programs that rely on those libraries will work fine with the subsidiary packages installed, but looks like BOINC's GPU detection is broken, in part at least, due to this change. Soli Deo Gloria |
TBar Send message Joined: 22 May 99 Posts: 5204 Credit: 840,779,836 RAC: 2,768 |
The main problem I had with Ubuntu 14.04 was having the OS use both GPUs and the Mac EFI. The EFI install always ended with Grub rescue with none of the 'suggestions' working. The BIOS install ended with only 1 GPU being used. I never got to BOINC. In the process of trying to get it to work, I edited the partition map with g-part. Then I went to Ubuntu 13.10. I was able to use both GPUS however BOINC was causing a large number of system interrupts driving the CPUs to 100%, and I was getting disk errors. I ended up copying everything off the drive and reformatting in OSX. After that, I just installed Ubuntu 12.04 and gave up on it for now. I still had to make the link to the OpenCL library with Catalyst 13.12 and Ubuntu 12.04. I'm having the same 'Half Video Ram' problem on a different machine using different GPU cards, so, I'm guessing it's BOINC related since the rest of the OS sees all 1024mb on the cards. Other than that, 12.04 seems to work perfectly fine for me. |
Wedge009 Send message Joined: 3 Apr 99 Posts: 451 Credit: 431,396,357 RAC: 553 |
That's quite the drama. In my case I got it working with 13.10. I wonder if xorg-edgers dropped CUDA/OpenCL support as well because when I tried nvidia-331 I lost GPU detection in BOINC again. But everything is working okay with nvidia-319 so I'm leaving it at that for now. Soli Deo Gloria |
Wedge009 Send message Joined: 3 Apr 99 Posts: 451 Credit: 431,396,357 RAC: 553 |
Unfortunately, things haven't gone so well with trying 13.10 on the AMD machine. I know I've run BOINC GPU in Linux on my C-50 netbook previously, so it looks like library detection might not be the specific problem here. Considering also that fglrx in 14.04 has libOpenCL and libaticalrt. clinfo can read the GPUs just fine. I'm still trying to work out the significance of 'calInit() returned 1'. I can't pick up anything obvious from the source code... Soli Deo Gloria |
Wedge009 Send message Joined: 3 Apr 99 Posts: 451 Credit: 431,396,357 RAC: 553 |
The mystery continues. Running the stand-alone BOINC downloaded from Berkeley detects the GPUs. I'm so confused... Soli Deo Gloria |
Wedge009 Send message Joined: 3 Apr 99 Posts: 451 Credit: 431,396,357 RAC: 553 |
So calInit() is returning 0 (CAL_RESULT_OK) on success and 1 on some sort of error (CAL_RESULT_ERROR). Problem is that I don't know what that error is and I can't find much in the way of clues in the source code. I think I may have to resort to using Berkeley's stand-alone BOINC build even if that's not my preferred installation. If I can get at least something working I'll have to be content with that. Soli Deo Gloria |
Wedge009 Send message Joined: 3 Apr 99 Posts: 451 Credit: 431,396,357 RAC: 553 |
I can't believe I forgot about this: for some reason the xhost denies BOINC access to the GPUs even though this is set-up in the initialisation script. So I worked around it by disabling access control (okay since I don't have concerns about collisions on my LAN) with 'xhost +'. Then BOINC can see the GPUs. Hope this might help others struggling with BOINC on Linux. Or at least Ubuntu. Soli Deo Gloria |
ML1 Send message Joined: 25 Nov 01 Posts: 20283 Credit: 7,508,002 RAC: 20 |
I can't believe I forgot about this: for some reason the xhost denies BOINC access to the GPUs even though this is set-up in the initialisation script. So I worked around it by disabling access control (okay since I don't have concerns about collisions on my LAN) with 'xhost +'. Then BOINC can see the GPUs. Odd... That's a real old one to trip over! In the dim distant past, I've used: xhost +si:localuser:boinc_user where "boinc_user" is whatever username is used by the boinc processes. Often, that is just the username "boinc". That also restricts to only the boinc processes on your machine rather than the "allow everything" carefree workaround. Another occasional 'gotcha' is to check that the boinc process is added to the video group to be able to access the GPU hardware. That should be handled automatically if you use the normal installer for your distribution of Linux. Anyhow, good sleuthing there! (I'd have not guessed the xhost restriction!!) Happy fast crunchin', Martin See new freedom: Mageia Linux Take a look for yourself: Linux Format The Future is what We all make IT (GPLv3) |
Wedge009 Send message Joined: 3 Apr 99 Posts: 451 Credit: 431,396,357 RAC: 553 |
Thanks for the tip. I remember trying to specify boinc user for access in the past, but probably just gave up and was happy to have anything running and so made do with a blanket disabling of access control. Next time I reboot I'll give that command a try. I don't recall having issue with the user groups before - I find the package installation handles that, but still good to know. Soli Deo Gloria |
jay_e Send message Joined: 6 Apr 03 Posts: 62 Credit: 1,072,112 RAC: 0 |
Greetings, I went through compiling Catalyst for an AMD 7750 about a year ago. Then I found the fglrx-updates package worked right out of the box- except I have to restart the boinc-client for the GPU to be seen Recently ( 2 or 3 months?) there has been another release of CAL libraries that improved performance. I'm using Ubuntu 14.04 and the fglrx-updates with only one problem- I have to do an /etc/init.d/boinc-client restart (as root) after every boot. I looked at the code until ...... Never figured it out. Just do the restart. Did you try these drivers? Did they work for you? Hope this helps, Jay |
Richard Haselgrove Send message Joined: 4 Jul 99 Posts: 14650 Credit: 200,643,578 RAC: 874 |
I have to do an /etc/init.d/boinc-client restart (as root) after every boot. The usual explanation for this (I have no idea to what extent it's really true) is that the initial BOINC client daemon start occurs too early in the boot sequence, before catalyst and the X-server are fully ready. By re-starting once the boot sequence is complete, you're allowing the graphics components to complete their initialisation, and BOINC can see the components it needs for GPU detection. |
Wedge009 Send message Joined: 3 Apr 99 Posts: 451 Credit: 431,396,357 RAC: 553 |
From what I've observed, I believe this to be a satisfactory explanation. I remember having to do this on an older (Athlon XP based system) with NV GPUs many years ago. My current NV system that's on Linux does not require this. The X access is a separate issue - restarting BOINC will not resolve this. The GPUs are set-up, X just doesn't allow access from BOINC. Only by allowing X access and then restarting BOINC allows BOINC to 'see' the GPUs. Soli Deo Gloria |
©2024 University of California
SETI@home and Astropulse are funded by grants from the National Science Foundation, NASA, and donations from SETI@home volunteers. AstroPulse is funded in part by the NSF through grant AST-0307956.