OpenCL : Shifting Tides
While going through my reading list, I came across a news article from Dr. Dobb's Journal about the release of the OpenCL 1.0 specifications.
From the Khronos Group article:
OpenCL supports a wide range of applications, from embedded and consumer software to HPC solutions, through a low-level, high-performance, portable abstraction. By creating an efficient, close-to-the-metal programming interface, OpenCL will form the foundation layer of a parallel computing ecosystem of platform-independent tools, middleware and applications.
What we can look forward to given this release is the boom of parallel-aware compilers which are not only able to do auto-vectorization to leverage the Streaming SIMD extensions available in both (modern) Intel and AMD processors. We also may be able to see better performance from TR2-slated libraries for parallel counterparts to the STL algorithms.
This release of OpenCL is very significant since most of the major hardware and software vendors are part of the group that developed the specifications. This means one day (in the not so distant future) hardware vendors that support OpenCL on their devices will be able to run applications that depend on the OpenCL spec -- imagine your 4-core-8-thread-capable application will be able to seamlessly scale to 32-core-128-thread machines. We'll also start seeing compilers which will be able to leverage the OpenCL specifications to create binaries that take advantage of OpenCL aware architectures.
It has been noted that Apple is a driver in this space. I just wonder though how the LLVM development happening in Apple has anything to do with their wanting to develop an open standard for leveraging parallel computing systems. At any rate, with a slowly-but-surely maturing Clang frontend to an LLVM compiler, a growing set of literature and implementations on automatic vectorization of code in C++ compilers, it's just evidence that we should really start paying attention to the parallel computing space if we want to remain relevant.
Update: Adding links to SSE extensions definition and Intel (R) /AMD (R).



2 comments:
Well, at least your code will *run* on 16 or 32 cores. Whether it scales is another question.
Still, it's an exciting time for developers!
I really don't think there's much question about it. OpenCL *is* scalability in open-platform developmentment. That's great.
Post a Comment