BOINC 7.10.2 - Windows 7 - OpenCL GPU Detection

Message boards : GPUs : BOINC 7.10.2 - Windows 7 - OpenCL GPU Detection
Message board moderation

To post messages, you must log in.

AuthorMessage
Wedge009
Avatar

Send message
Joined: 9 Jun 18
Posts: 13
Australia
Message 86503 - Posted: 9 Jun 2018, 6:48:03 UTC
Last modified: 9 Jun 2018, 6:54:19 UTC

I have been running BOINC for years, am currently in the middle of trying to upgrade a dual GPU system. Quick summary:

Have two GPUs - GPU1 and GPU2. GPU1 and GPU2 are detected on their own just fine. GPU1 is detected fine together with any other GPU. GPU2, however, isn't detected in combination with GPU1 (have swapped physical PCIe slots with the same result).

coproc_debug doesn't give much info. I pulled the OpenCL detection routines (gpu_opencl.cpp) from BOINC into a stand-alone application for debugging purposes (I didn't have the time to compile and debug the entire BOINC application). The crazy thing is that even with the hardware set-up that BOINC doesn't detect correctly, my stand-alone application does.

Running current releases of NV and AMD drivers respectively. Another curiosity is that clinfo doesn't appear to detect GPU2, but an older version of clinfo does. Both GPUs concerned here are current generation, current architectures.

I have to rush off now but I'll provide more details later - just wondering if anyone has any ideas/thoughts on this because I'm starting to run out of them.

Edit: I'll add that stand-alone OpenCL applications work just fine as well. BOINC just isn't detecting the GPU for some reason.
ID: 86503 · Report as offensive
robsmith
Volunteer tester
Help desk expert

Send message
Joined: 25 May 09
Posts: 1283
United Kingdom
Message 86506 - Posted: 9 Jun 2018, 7:25:41 UTC

It would help if you said what the two GPUs are as some GPU are "rather fussy" about the particular version of driver deployed.
ID: 86506 · Report as offensive
Richard Haselgrove
Volunteer tester
Help desk expert

Send message
Joined: 5 Oct 06
Posts: 5077
United Kingdom
Message 86508 - Posted: 9 Jun 2018, 7:52:53 UTC

There is a pre-compiled clinfo.zip available for download.

There was no specific change in the GPU detection routines in v7.10.2
ID: 86508 · Report as offensive
Wedge009
Avatar

Send message
Joined: 9 Jun 18
Posts: 13
Australia
Message 86512 - Posted: 9 Jun 2018, 17:07:36 UTC
Last modified: 9 Jun 2018, 17:10:57 UTC

Thanks for the quick responses - I didn't have time to go into too much detail earlier.

I don't recall ever having an issue with GPU detection in Windows, only in Linux and that was years ago - I think the driver situation has improved much since then.

Under BOINC I've run NV Pascal, Maxwell, Kepler, and Fermi of all sizes without issue in Windows (OpenCL as well as CUDA), and AMD Fiji, Hawaii, Bonaire, Tahiti, Pitcairn, and even pre-GCN Cayman, Barts, RV730 and RV630. I don't remember BOINC having issues detecting any of those under Windows. In my current case, GPU1 is NV Pascal and GPU2 is AMD Vega. Vega has been around for nearly a year now, so I'd be surprised if there's something wrong with the driver side - as I said I can run OpenCL applications off-line apart from BOINC just fine, plus my cobbled-together stand-alone BOINC GPU detection could read both the Pascal and the Vega.

That pre-compiled clinfo reproduced the curious scenario I described earlier - the May 2018 clinfo that was put into my Windows/System32 directory (I think that's from the AMD installation) only picks up the NV Pascal and the CPU. The 2011 copy you linked to picks up those two as well as the AMD Vega.

I also did a quick test under Linux with AMD Fiji and AMD Vega together. Only the Fiji was detected by BOINC so I doubt mixed-vendor set-up is a relevant concern. Really puzzled why BOINC is having difficulty with Vega when there is more than one GPU involved.
ID: 86512 · Report as offensive
Wedge009
Avatar

Send message
Joined: 9 Jun 18
Posts: 13
Australia
Message 86520 - Posted: 10 Jun 2018, 11:05:39 UTC
Last modified: 10 Jun 2018, 11:06:13 UTC

So I managed to compile the boinc client from branch client_release/7/7.10.2 (commit f6033b09) and it's detecting the Vega while the BOINC 7.10.2 binary release does not. I'm getting quite confused by now. Does anyone have any information on who does the compilation for the releases on boinc.berkeley.edu?
ID: 86520 · Report as offensive
Wedge009
Avatar

Send message
Joined: 9 Jun 18
Posts: 13
Australia
Message 86521 - Posted: 10 Jun 2018, 11:13:36 UTC

Okay, totally bizarre but I've found why my compilation didn't match the BOINC release - my compilations were 32-bit only while the BOINC release I was using was the 64-bit version. I just tried a 32-bit release and the GPUs are being detected okay.

Might anyone know why 64-bit BOINC can't detect Vega properly (apparently)?
ID: 86521 · Report as offensive
Wedge009
Avatar

Send message
Joined: 9 Jun 18
Posts: 13
Australia
Message 86522 - Posted: 10 Jun 2018, 11:52:47 UTC

For future reference: for whatever reason, in my particular dual-GPU set-up, a 64-bit compilation fails in COPROCS::get_opencl(), gpu_opencl.cpp:343. After finding two OpenCL GPU platform IDs, it fails when attempting to find the AMD GPU Device ID:

        ciErrNum = (*p_clGetDeviceIDs)(
            platforms[platform_index],
            (CL_DEVICE_TYPE_GPU | CL_DEVICE_TYPE_ACCELERATOR),
            MAX_COPROC_INSTANCES, devices, &num_devices
        );

        if (ciErrNum == CL_DEVICE_NOT_FOUND) continue;  // No devices

It doesn't seem like it should be necessary, but I'll stick with 32-bit compilation as a work-around.
ID: 86522 · Report as offensive

Message boards : GPUs : BOINC 7.10.2 - Windows 7 - OpenCL GPU Detection

Copyright © 2024 University of California.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.