No, I just don't see the utility of an SDK that does OpenCL in software on the CPU. I mean sure, it might have
some use if you have a headless build farm that auto-builds your code and you test it using a GPU-accelerated implementation, but... okay, maybe that's the use case that they're aiming for. Large corps with a Perforce server, where individual developers don't do a build, they just commit, wait 45 minutes for the build farm, then test it locally or in some kind of VM. It's not like stubbing out a fake libOpenCL for the build server would be that hard, and the headers have always been available...
It just seems that the majority of the effort that went into the development of this SDK was in producing a 100% compliant implementation against the CPU. That's nice and all, but even with SSE 4.1 and 6 cores with HT, you're not gonna come close to what a current-gen Tesla card could do in terms of parallel compute power. That's why Nvidia isn't out of business right now.
To make the OpenGL comparison: Does anyone still develop games using a software renderer to test? I highly doubt it -- they need to test against a real implementation for two big reasons. One, to make sure that the performance of their engine is within reasonable tolerances. And two, real implementations have bugs, and more often than not the app developer has to work around implementation bugs, rather than hoping that the driver will be patched. I'd be skeptical if you told me that all hardware implementations of OpenCL are released bug-free. Sure, you may be able to produce a valid binary linked against libOpenCL using this SDK, but runtime behavior (performance, correctness) is what makes or breaks a product.
I wasn't confused about what this SDK is providing, I just don't think that Michael really understood what this was. Notice in the subtitle of the headline he says "Finally"? As if the wait for OpenCL on Linux were over? Maybe it is, for lazy developers who don't know how to create a stub library, and who enjoy developing and testing code in a completely unrealistic environment. If I were working with OpenCL on Linux right now, I'd want to test against Catalyst and Nvidia's implementations of OpenCL (since the Gallium state tracker isn't complete, it isn't a contender yet). Even if your code doesn't require real-time performance like 3d rendering, it's still possible to write unacceptably inefficient code -- but if
all the code you write runs slow because you're using the CPU, it's hard to compare "fast" vs "slow". If you're working with OpenCL, you
probably care quite a bit about empirical profiling.
Never trust statements beginning with "in theory..." in software. Murphy's Law strikes ruthlessly in our field. Develop and test against actual implementations that your customers will use (i.e., GPGPU-accelerated). In that vein, this SDK misses the mark.
Oh, but I guess they get credit for using Clang -- another LLVM user means (hopefully) some patches will start coming in on the LLVM / Clang projects from Intel. That's not a bad thing. Or maybe the patches have already been coming in, partly as a result of the development effort on this project? Either way, I hope Intel didn't keep all their enhancements to themselves, as they'd be perfectly entitled to do under Clang's license.
