by dar » Thu Jan 03, 2013 10:49 am
What JAR is referring to is that the standard is very much designed around GPU architectures ca. 2009. Yes, you can program other compute devices with OpenCL, but they were not the driving architectures in the design. This can be seen most notably in the memory model and the lack of strong signaling support. If you were to design a programming model around multi-core devices that are not massively multi-threaded, with fully divergent cores, strong inter-core communication, and more general memory architectures, it would not look like OpenCL, but it would have some things in common with it. Everything evolves for a reason and GPGPU was the reason for OpenCL. This is clear in the design. That is not a criticism. I have invested considerable time in OpenCL, it can be leveraged for other "compute devices", and we are determined to leverage OpenCL to provide a productive parallel programming API for Parallella. OpenCL is a great foundation, but it must be adapted to support non-GPU architectures.