Message boards : GPUs : OpenCL has no affect.
Message board moderation
Author | Message |
---|---|
Send message Joined: 26 Mar 13 Posts: 7 |
Hello everyone! I've sandy bridge with Intel OpenCL SDK installed. I've the OpenCL library there -- /usr/lib64/libOpenCL.so Which works with John the ripper, where the binary is linked against this very library. For trial purposes I downloaded boinc 7.0.58 which does support OpenCL, but after trying out various projects which support ATI chips (i.e. using OpenCL), I didn't find a single binary linked against libOpenCL.so; as a consequence, I didn't see any 'special' rise in temperatures also which's apparent when OpenCL is in use. And before anyone claims Sandy bridge isn't supported (which appears to be a common myth among Windows users/admins), please show sources for hardware specific OpenCL implementations. |
Send message Joined: 23 Apr 07 Posts: 1112 |
Please post a link to your Host at one of your projects, and post the Boinc startup messages from the Event log, the first 20 to 30 lines will do. As far as i know there are no projects with Stock Intel OpenCL GPU apps yet, the only one that i know of has to be installed by anonymous platform. Both the following links only show Intel OpenCL GPU support on 3rd Generation Chips, and only on Windows, Sandybridge is Generation 2: IntelĀ® SDK for OpenCL Applications 2012 - Frequently Asked Questions IntelĀ® SDK for OpenCL* Applications 2012 Release Notes Claggy |
Send message Joined: 29 Aug 05 Posts: 15565 |
To be able to use OpenCL on the Intel GPU built into the Sandy Bridge CPU, projects need to have a science application available for that hardware source. I know of the Lunatics people who are testing out an application at Seti@Home, but as far as I know, they've only got one available for Windows. So just having BOINC detect OpenCL isn't enough. BOINC is just a managing program, it doesn't do any of the science by itself, that's where the projects come in. And it's those projects their science applications that do all the work. Also, OpenCL runs on specific hardware sources, such as the ATI/AMD GPUs, the Nvidia GPUs and the Intel GPU built into the Sandy Bridge CPUs. This does not mean that the application for the AMD GPU can run on the Intel GPU. It needs its own specific application, built for the capabilities of the GPU in question. So you don't have to trawl past the projects that support OpenCL on the AMD GPU, because the AMD OpenCL app doesn't run on Nvidia or Intel GPUs. |
Send message Joined: 29 Aug 05 Posts: 15565 |
I've sandy bridge with Intel OpenCL SDK installed. Apropos, the Intel HD Graphics 2000 and 3000 models in the Sandy Bridge CPUs are not OpenCL capable. You require an Ivy Bridge CPU with Intel HD Graphics 2500 and 4000 for that. The Intel CPU itself is OpenCL capable, but none of the projects have an OpenCL application available for the CPU. |
Send message Joined: 26 Mar 13 Posts: 7 |
I'm afraid I responded to 'support' problem in the first post itself. And before anyone claims Sandy bridge isn't supported (which appears to be a common myth among Windows users/admins), please show sources for hardware specific OpenCL implementations. OpenCL implementation is not hardware specific, otherwise there's no point of OpenCL; there was cuda, Intel would've made something else and AMD something else. OpenCL is an abstraction layer over any hardware (+driver) which uses the OpenCL API (1.1) for GPU/CPU computation. It doesn't matter if OpenCL is provided by the CPU, GPU, hard disk, monitor, motherbord, keyboard, mouse, touchpad or UPS; cause it's an abstraction layer, and that's the point of the abstraction layer. For boinc output -- 28-Mar-2013 12:38:46 [---] No config file found - using defaults 28-Mar-2013 12:38:46 [---] Starting BOINC client version 7.0.29 for x86_64-pc-linux-gnu 28-Mar-2013 12:38:46 [---] log flags: file_xfer, sched_ops, task 28-Mar-2013 12:38:46 [---] Libraries: libcurl/7.29.0 OpenSSL/1.0.1c zlib/1.2.7 28-Mar-2013 12:38:46 [---] Data directory: /home/de/media_writeit!/temp(others)/boinc sh: /usr/lib/virtualbox/VBoxManage: Permission denied 28-Mar-2013 12:38:46 [---] Processor: 4 GenuineIntel Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz [Family 6 Model 42 Stepping 7] 28-Mar-2013 12:38:46 [---] Processor: 3.00 MB cache 28-Mar-2013 12:38:46 [---] Processor features: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer xsave avx lahf_lm arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid 28-Mar-2013 12:38:46 [---] OS: Linux: 3.4.2-gentoo-r1 28-Mar-2013 12:38:46 [---] Memory: 7.76 GB physical, 1.00 GB virtual 28-Mar-2013 12:38:46 [---] Disk: 33.90 GB total, 6.77 GB free 28-Mar-2013 12:38:46 [---] Local time is UTC +0 hours 28-Mar-2013 12:38:46 [---] No usable GPUs found 28-Mar-2013 12:38:46 [World Community Grid] URL http://www.worldcommunitygrid.org/; Computer ID 2320875; resource share 100 28-Mar-2013 12:38:46 [World Community Grid] General prefs: from World Community Grid (last modified 01-Jan-1970 05:30:01) 28-Mar-2013 12:38:46 [World Community Grid] Host location: none 28-Mar-2013 12:38:46 [World Community Grid] General prefs: using your defaults 28-Mar-2013 12:38:46 [---] Reading preferences override file 28-Mar-2013 12:38:46 [---] Preferences: 28-Mar-2013 12:38:46 [---] max memory usage when active: 6750.14MB 28-Mar-2013 12:38:46 [---] max memory usage when idle: 6750.14MB 28-Mar-2013 12:38:46 [---] max disk usage: 1.00GB 28-Mar-2013 12:38:46 [---] (to change preferences, visit the web site of an attached project, or select Preferences in the Manager) 28-Mar-2013 12:38:46 [---] Not using a proxy Initialization completed 28-Mar-2013 12:38:46 [World Community Grid] Restarting task faah38727_ZINC12784687_xPR_wC6_11_1ref9_02_0 using faah version 715 in slot 2 28-Mar-2013 12:38:46 [World Community Grid] Restarting task faah38738_ZINC13141069_xPR_wC6_11_1ref9_04_1 using faah version 715 in slot 3 28-Mar-2013 12:38:46 [World Community Grid] Restarting task faah38754_ZINC58004074_xPR_wC6_11_1ref9_03_1 using faah version 715 in slot 1 28-Mar-2013 12:38:46 [World Community Grid] Restarting task faah38775_ZINC03257119_xPR_wC6_11_1ref9_04_0 using faah version 715 in slot 0 Instead of looking forward specifically for GPUs (which makes not sense), boinc should check for libOpenCL.so and after that see if the API is working. |
Send message Joined: 26 Mar 13 Posts: 7 |
For e.g John and Imagemagick are not designed for Intel or in that case Nvidia/ATI GPUs; neither they talk about a specific GPU nor have been tried with OpenCL provided by Intel; all they want is libOpenCL.so 1.1 library to link against and it works in my case. |
Send message Joined: 29 Aug 05 Posts: 15565 |
And before anyone claims Sandy bridge isn't supported (which appears to be a common myth among Windows users/admins), please show sources for hardware specific OpenCL implementations. The Sandy Bridge CPU is supported. Just the built in HD Graphics GPU that isn't. OpenCL implementation is not hardware specific, otherwise there's no point of OpenCL; there was cuda, Intel would've made something else and AMD something else. AMD has made something else, it was called Close to Metal, which later became ATI CAL. All of these ran on GPGPUs specifically. It doesn't matter if OpenCL is provided by the CPU, GPU, hard disk, monitor, motherbord, keyboard, mouse, touchpad or UPS; cause it's an abstraction layer, and that's the point of the abstraction layer. For BOINC to be able to recognize if the GPGPU is capable, it'll need to see drivers for this GPGPU. BOINC won't detect if a CPU is OpenCL capable, but it will detect the CPU itself. However, you can't just run one OpenCL program on any piece of hardware, you will need to specify what kind of hardware it is, even specify which OpenCL revision it can use. This is because the hardware it runs on will be completely different when it's an Intel_GPU, an Nvidia GPU or an AMD GPU, or another coprocessor. The hardware needs to have a decision making processor of kinds, so your motherboard, keyboard, monitor, mouse, hard disk, all fall off. It'll be CPU, GPGPU, coprocessor, possible Network Card, and all need their own drivers, which show OpenCL capability. Instead of looking forward specifically for GPUs (which makes not sense), boinc should check for libOpenCL.so and after that see if the API is working. BOINC doesn't look for GPUs, it looks for GPGPUs. As you may have noticed, BOINC does detect your CPU as well. It sends this information to the project, in case the project has some special need for it, like homogeneous redundancy (run tasks on groups of specific hardware and software only, e.g. only Linux vs Linux, or only Intel vs Intel). Then it's up to the science project's scheduler to decide if your CPU is capable (checking against a list of known CPUs that are capable), before they send you either an OpenCL multithreading application or a normal application. The project uses that same information which contains what the detected GPGPU was, to send you an application specifically for that GPGPU, be it an app that can run on CUDA, OpenCL, Brook+ even for some. But here's the thing, while most of the applications can be translated into something that can run on all processing cores of a GPGPU, not all of the project applications lend themselves to use all CPU cores on one task at the same time. There have been tests with normal multithreading, a similar form of usage, but only one or two projects are capable of using that technology and then only for a specific application. So it's not just cut and dried that there needs to be only one OpenCL detection and then by magic all capable hardware in the computer will be able to be used. That's a dream for the future, but really, we're nowhere near that yet. Just stating that when it doesn't do it the way you think it must go, that it's then a BOINC bug, is wrong. What you will probably want to do first is look at what BOINC actually does, how it does things, and how something like OpenCL is supposed to work. |
Send message Joined: 26 Mar 13 Posts: 7 |
The Sandy Bridge CPU is supported. Just the built in HD Graphics GPU that isn't. I absolutely agree with that. AMD has made something else, it was called Close to Metal, which later became ATI CAL. All of these ran on GPGPUs specifically. Ok, I see. Hummmm.... And like all other AMD stuff, this'll also lack Linux support, and it already does. For BOINC to be able to recognize if the GPGPU is capable, it'll need to see drivers for this GPGPU. BOINC won't detect if a CPU is OpenCL capable, but it will detect the CPU itself. No, that's not true. http://www.darktable.org/usermanual/ch07s02s02.html.php http://codedivine.org/2012/10/07/opencl-spir/ OpenCL Bytecode is included in a binary linked against libopencl.so; before execution of the binary, the OpenCL implementation compiles it to make it hardware specific. So it's like Java/.NET/mono with JIT. Now I understand what was that 'Kernel Execution Speed' in john. Otherwise there's no advantage of OpenCL. Why not use steam or CUDA instead? BOINC doesn't look for GPUs, it looks for GPGPUs. As you may have noticed, BOINC does detect your CPU as well. It sends this information to the project, in case the project has some special need for it, like homogeneous redundancy (run tasks on groups of specific hardware and software only, e.g. only Linux vs Linux, or only Intel vs Intel). Then it's up to the science project's scheduler to decide if your CPU is capable (checking against a list of known CPUs that are capable), before they send you either an OpenCL multithreading application or a normal application. Ok, so what can happen here, is that after reporting the CPU and determining if there's a functional OpenCL implementation based on the CPU; it's going to send this information to the project servers, which's then going to return tasks only using OpenCL (cause it's implemented by the processors). Question is -- does Boinc send this information to the server (if CPU is openCL capable)? The project uses that same information which contains what the detected GPGPU was, to send you an application specifically for that GPGPU, be it an app that can run on CUDA, OpenCL, Brook+ even for some. But when a project talks about ATI, it means OpenCL right? But here's the thing, while most of the applications can be translated into something that can run on all processing cores of a GPGPU, not all of the project applications lend themselves to use all CPU cores on one task at the same time. There have been tests with normal multithreading, a similar form of usage, but only one or two projects are capable of using that technology and then only for a specific application. I guess we don't need that if memory usage is under control (1 application per processors). Tasks focusing on GPUs can be massively parallelized (that's the advantage of GPUs combined with a subset of instruction types); projects in boinc can also be massively parallelized, that's why we have distributed computing in the first places; but each thread requires memory, and with the huge no. of cores a GPGPU has, each task per processor will take too much time and memory (combined); so GPU should be given tasks which can be parallelized with less memory requirements and under a single or 2 or 3 applications. E.g. Video encoding. So it's not just cut and dried that there needs to be only one OpenCL detection and then by magic all capable hardware in the computer will be able to be used. That's a dream for the future, but really, we're nowhere near that yet. The hardware should be able to do that computation, and there should exist drivers providing the hardware abstraction. But if your box has openCL capable hardware and has the corresponding drivers (like in my case), all OpenCL application (using the same API version) will work. In the future, we'll see hardware designed for the OpenCL API, like in the case with OpenGL and DirectX. |
Send message Joined: 29 Aug 05 Posts: 15565 |
If you want to tell the BOINC developers that they're doing it wrong, register to the BOINC development email list and post it there. But before you do so, and state there as well that each and every application can be used for parallelization, you'd probably do best and pass by on the BOINC Papers, to see how BOINC does things. Since that won't give you enough information, perhaps that http://boinc.berkeley.edu/trac/wiki/SoftwareDevelopment does. You may also want to pass by on http://boinc.berkeley.edu/trac/wiki/ProjectMain to see what is actually supported under BOINC, and that when you see something like FORTRAN, that you know, oh oops, never going to work under GPGPU. :-) There's nothing more for me to say. |
Send message Joined: 26 Mar 13 Posts: 7 |
If you want to tell the BOINC developers that they're doing it wrong, register to the BOINC development email list and post it there. But before you do so, and state there as well that each and every application can be used for parallelization, you'd probably do best and pass by on the BOINC Papers, to see how BOINC does things. Thank you, I'll surely see to it. As of Fortran/Pascal etc... if that was the case, that project would've said it doesn't support Cuda or OpenCL. I'm doing worldcommunitygrid here. |
Send message Joined: 6 Jul 10 Posts: 585 |
Right, WCG, I'm with Ageless on that. (There's one candidate, CEP2, which has a good reason why parallelization - on CPU - aka multithreading would be of interest, but they won't tell you if it's worked on. Try asking cleanenergy, the official project rep on the WCG forums, but search forums first before you do... the idea of bringing it to GPU has been multiple times rejected... they'd be done coding and testing by the time the project is finished... and the engine is commercial, so you'd really have to tell the Q-Chem guys) Coelum Non Animum Mutant, Qui Trans Mare Currunt |
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.