I'm unsatisfied about Intels current support of OpenCL for 'older' hardware:
- I had to use the AMD drivers for my Intel Core2Duo P7450. Even it supports SSE4.1, which is said to be the requirement for the 3.0-2013-beta-SDK...
- The Core i5 2nd generation CPU (Sandy Bridge) with it's integrated GPU (Intel HD Graphics 3000) isn't that old. But unfortunately it's GPU isn't supported either. No, we don't need to talk about my other notebook having "just" a Core i3 2nd generation in it...
As I would like to develop OpenCL software, I need some reasonable hardware. But it's definitively not the time for me to replace my relatively new notebook. Thus, I -needless to say - wonder if my decision was a good one to buy Intel and not NVidia/AMD products... So the final question for me is: Should I give Intel some more time... or should I buy some hardware with AMD/NVidia GPU?
This is just some feedback about what I personally - and maybe others too - do feel like now.
It would be beneficial, if Intel could give a -clear- statement about current plans. Maybe support for those devices is already in development, but not finished yet... Or maybe, it's already on the to-do list and expected for let's say June 2013 or maybe end of this year?
Intel today supports OpenCL on wide range of CPUs, Graphics, and the Xeon Phi coprocessors. While we don't use this forum to announce new products before we ready, we are committed for OpenCL support on current and future platforms, operating systems, and devices by Intel.
As for your request, I do have some questions,
- can you elaborate more about where support on older machines is required?
- Is that an issue with your development environment or with the target customers machine that will use your product?
- Is what you try to achieve here is functional portability, or you also interest in performance? If OpenCL code on older machines runs slower than what you have today, will this still satisfied you?
sorry for my late reply... It's mostly about my developement environment, but also about support of target customer machines.
1. At least legacy CPU-support should be relatively easy to implement. Calculations on CPU could be handled separately in all applications, but that just makes the key idea of OpenCL useless, which means that the programmer doesn't have to care much about on what device the actual calculations are executed. So actually I'm using the AMD drivers for my Intel CPUs.
If I develope an usual application, I can't tell my customer to buy a new computer to do usual computation. So I either would need to tell my customer to install AMD drivers - or - I had to develope a non-OpenCL variation of my software to support older Intel CPUs. Intel CPUs shouldn't need AMD drivers, right? Explaining that to a customer is ... complicated. And developing a non-OpenCL variation is cost-intensive.
2. The missing GPU-support for HD3000-graphics slows down the process of acceptance of OpenCL as a standard. There are too many people out there, with that hardware. Yes, this will drive some people into buying even newer hardware. But also it will also make people angry and let them switch to better supported hardware (from AMD/ATI or NVidia). It will stop some of the developers from developing software using OpenCL at all (at least for some longer period of time), as they are not willing to invest in new hardware.
I think that the efficiency doesn't matter too much here. It's mostly compatibility. If Intel would just support that hardware, even it would use only 80% of the processing capabilities, the situation would be much better. It just needs to "work" on all hardware. Good performance is - to my opinion - only needed for newest hardware...
I agree with Stefan.
I've an Asus N53S and try to learn OpenCL programming with JavaCL on this machine. This machine has i7-2670QM CPU with OpenCL support provided by Intel, a GT630M with OpenCL support provided by NVIDIA, but alas it has no support for HD 3000 chip (ridiculous, Intel CPU is supported but GPU).
Another point that I cannot understand, the CPU has workgroup size 1024, and 8 processing units. Does it mean 8192 parallel threads on CPU? (Maybe it offers a capabilitiy of HD 3000 on the same die?) or it executes them as 8 parallel thread and do this 1024 times (and the HD 3000 is not supported and stay on the motherboard, not on the same die)?