Commit Graph

37 Commits

Author SHA1 Message Date
David Anderson ae9c58e03d client: fix compile warnings 2014-07-23 12:41:41 -07:00
Charlie Fenton 512e8e2cfe client: continue adding support for OpenCL devices (GPUs and accelerators) other than AMD/ATI, NVIDIA or Intel GPUs.
For now, handle AMD/ATI, NVIDIA or Intel GPUs as before.  But for other, "new" vendors, we treat each device as a separate resource, creating an entry for each instance in the COPROCS::coprocs[] array and copying the device name COPROC::opencl_prop.name into the COPROC::type field (instead of the vendor name.)
For devices from "new" vendors, set <gpu_type> field in init_data.xml file to the vendor string supplied by OpenCL.  This should allow boinc_get_opencl_ids() to work correctly with these "new" devices without modification.
2014-07-23 05:18:51 -07:00
Charlie Fenton 98f4c461d0 client: group new (non-NVIDIA, non-AMD, non-INTEL) OpenCL device types by vendor name string rather than by CL_DEVICE_VENDOR_ID. This assumes that OpenCL reports identical vendor name strings for all devices from the same vendor on a given host. I incorrectly thought CL_DEVICE_VENDOR_ID was a numeric ID of the vendor which would be the same for each device from that vendor, but it is actually a unique numeric ID assigned by a given vendor to each device on a particular host. 2014-07-18 04:25:45 -07:00
Charlie Fenton 64d76198ea client: keep array subscripts in bounds. 2014-07-16 06:05:01 -07:00
Charlie Fenton b37cf4cd9a client: begin adding support for OpenCL devices other than AMD/ATI, NVIDIA or Intel 2014-07-16 04:33:26 -07:00
David Anderson ac9e2b088d client emulator: make it work again 2014-05-21 10:41:55 -07:00
Charlie Fenton 9895066353 client: fix to commit 6b1a073 (don't try to run OpenCL jobs on non-OpenCL GPUs)
For unknown reasons, testing opencl_device_ids[[i] works only for debug builds, so add a new array bool have_opencls[] to COPROC struct in which we record which devices are openCL-capable before we clear the ati_opencls and nvidia_opencls vectors.
2014-05-14 03:40:58 -07:00
Charlie Fenton becaf33656 client: Remove redundant code in OpenCL CPU detection which was added in commit 8888ba6 2013-11-04 02:19:19 -08:00
Rom Walton 8888ba6aa8 client: Detect OpenCL CPUs with the latest Intel drivers.
client: Display an OpenCL CPU event log item for every OpenCL CPU detected.
2013-10-10 14:23:30 -04:00
Charlie Fenton 53eceeb71e client: better error handling for OpenCL CPUs 2013-08-22 07:25:36 -07:00
Charlie Fenton 8a2d5d8c50 client: better error handling for OpenCL CPUs 2013-08-22 07:02:59 -07:00
Charlie Fenton c5724ca325 client: For compatibility with boinc_get_opencl_ids(), don't include CPU when enumerating opencl_dev_index 2013-08-22 06:16:36 -07:00
Charlie Fenton eb15b04d4a client: implement support for OpenCL detection of CPUs
Notes:
- The same CPU can have a different cpu_opencl_prop for each of multiple OpenCL platforms.  We send them all to the project server because:
   - Different OpenCL platforms report different values for the same CPU.
   - Some OpenCL CPU apps may work better with certain OpenCL platforms.
- OpenCL has only 64 bits for global_mem_size, so it can report a max of only 4GB; get the CPU RAM size from gstate.hostinfo.m_nbytes.
2013-08-22 05:06:54 -07:00
Rom Walton 07017027d5 client: Clearing the devnums_pci_slot_sort vector after the first Nvidia OpenCL device is detected causes a SIGSEGV for any subsequent Nvidia OpenCL device detections. 2013-07-11 00:52:43 -04:00
Charlie Fenton e8d09695a5 client: minor housekeeping cleanup when correlating CUDA GPU reporting order with apple's OpenCL. 2013-06-30 03:02:45 -07:00
Charlie Fenton a6e276b93e client: apparently CUDA does not always report GPUs in order of ascending PCI slot number, but Apple's OpenCL does. We must take this into account win correlating NVIDIA OpenCL GPUs with CUDA GPUs.
Since NVIDIA provides drivers for both OpenCL and CUDA on Windows and Linux, I am assuming (until shown otherwise) that they will report GPUs in the same order.
2013-06-28 02:37:57 -07:00
Charlie Fenton 737ab61bce client: tweaks to code for detecting GPUs via a child process and change sprintf calls to safer snprintf. 2013-06-26 02:24:36 -07:00
Charlie Fenton 5d8ee12063 client: fix bug in commit c8e1b51: matching of ATI/AMD CAL and OpenCL GPU enumeration for (most) cases where CAL supports some older GPUs but OpenCL does not. 2013-06-25 20:49:50 -07:00
Charlie Fenton e2b2370e9d client: optionally detect GPUs via a child process, for dual_GPU laptops.
Some dual-GPU laptops (e.g., Macbook Pro) don't power down the more powerful GPU until  all applications which used them exit.  To save battery life, the client launches a second instance of the client as a child process to detect and get info about the GPUs.
The child process writes the info to a temp file which our main client then reads.
This option is enabled at compile time by defining USE_CHILD_PROCESS_TO_DETECT_GPUS as non-zero in gpu_detect.cpp
2013-06-25 04:31:34 -07:00
David Anderson 846b8c7757 all components: change strcpy() to strlcpy() when possible.
This commit should cover the client and manager code.
2013-06-03 20:24:48 -07:00
David Anderson 3610a334aa - client: minor code cleanup 2013-04-17 11:33:53 -07:00
David Anderson 35390ef974 - client: add support for CPU OpenCL apps.
Add OPENCL_DEVICE_PROP cpu_opencl_prop to HOST_INFO;
    this store info about the host's ability to run CPU OpenCL apps.
    Detect this, and report it in scheduler requests.
2013-04-16 22:42:29 -07:00
Charlie Fenton c8e1b51e40 client: fix matching of ATI/AMD CAL and OpenCL GPU enumeration for (most) cases where CAL supports some older GPUs but OpenCL does not. 2013-04-15 03:01:31 -07:00
Charlie Fenton 4f5fd8899c OpenCL: Eliminate spurious error message when an OpenCL platform exists but the computer has no corresponding devices 2013-03-04 17:19:39 +01:00
Charlie Fenton 407d16a7d9 client: clean up redundant and confusing GPU description 2013-03-04 17:01:36 +01:00
Charlie Fenton 462be89f01 Restore changes lost due to GIT confusion 2013-03-04 17:01:36 +01:00
Oliver Bock 508b9b572b Merge branch 'master' of ssh://boinc.berkeley.edu/boinc
Conflicts:
	checkin_notes
	client/acct_mgr.cpp
	client/cs_statefile.cpp
	client/gpu_opencl.cpp
	lib/coproc.cpp

Additional changes:
	client/Makefile.am

Dropped changes:
	client/cs_scheduler.cpp (516eff6)
	sched/sched_send.cpp (2dd8288)
2013-03-04 16:35:08 +01:00
Rom Walton 516eff60b0 - client: Hook up the XML portion of the Intel GPU detection code so
the server scheduler knows about it.
    - client: Print out the peak flops for the Intel GPU, the regular
        OpenCL descriptions do not show peak flops.
2013-03-04 15:30:03 +01:00
David Anderson 1174b00aba - client/manager: tweaks to Intel GPU code 2013-03-04 15:27:25 +01:00
Charlie Fenton f3c11f5831 client: strcasestr does exist on Windows in lib/str_replace.cpp, but I just needed to #include "str_replace.h". This is preferable because it handles INTEL as well as Intel and intel 2013-03-04 15:23:39 +01:00
Rom Walton 2f67ee08ce - client: strcasestr doesn't exist on Windows. 2013-03-04 15:23:39 +01:00
Charlie Fenton ce87ec9848 OpenCL: First pass at adding support for Intel Ivy Bridge GPUs 2013-03-04 15:23:39 +01:00
Charlie Fenton aff3b7675c client: Don't support CUDA on dual-GPU MacBooks with automatic GPU switching to save battery power
svn path=/trunk/boinc/; revision=26088
2012-09-12 10:05:41 +00:00
Charlie Fenton a02ceae225 client: work around a nasty bug which crashes OSX (!) on some dual-gpu MacBooks with CUDA
svn path=/trunk/boinc/; revision=26082
2012-09-08 13:04:37 +00:00
Charlie Fenton eb40422c34 client: If OpenCL detection gets an error for a platform or device, finish detection of the remaining platforms and / or devices
svn path=/trunk/boinc/; revision=26047
2012-08-20 10:04:19 +00:00
David Anderson b050deecf7 - client: compile fixes
svn path=/trunk/boinc/; revision=25773
2012-06-18 20:41:37 +00:00
David Anderson 5e61c29cc3 - client: split GPU detection code into separate files
svn path=/trunk/boinc/; revision=25771
2012-06-18 20:12:30 +00:00