Heterogeneous Computing Is Here, Now
Interoperability? Sure, but how closely do you want those systems coupled?
Put another way: what kind of arch-system do you want? a network -- or a single new computer?
If your ultimate desideratum is an effectively single computer -- a single computing agent -- then you'll need to unify your systems at a deeper level, with a lower-level architecture (than, say, EAI). The parts won't be computers, from the point of view of the arch-machine, but rather computational units.
The 'system-of-systems computer' dream usually takes two forms: reductive, which requires atomization and reassembly; and non-reductive, which accepts existing structures (like any matter-agnostic integration), but integrates these structures fully (like mitochondria in cells, eventually). The reductive form, composed of identical units, is as old as Pythagoras (and probably won't climax until the thing/information distinction falls apart, quantum computing notwithstanding); the non-reductive, comprising heterogeneous units, is far more thermodynamically plausible -- but, in non-organic systems, still struggles to penetrate deeper than the level of 'networking'.
But heterogeneous computing's bigger promise has no technical blinders. And the requisite technologies, abstraction layers, and manufacturing techniques are coming together right now.
Witness the birth of a new standard: Earlier this year, AMD re-branded their Fusion System Architecture as 'Heterogenous Systems Architecture (HSA)' -- an open platform standard whose goal is to enable developers to write for heterogeneous computing systems, without having to worry about each of the units' internals. In other words: there is now a developing standard for legitimately low-level architecture that weds many computers as (non-reductively) one. (Next to HSA, says AMD CTO Joe Macri, straight-up OpenCL still looks like a network, not an arch-computer.) The full, open specification should be available in the second half of 2012.
Witness, further, the conference circuit. Until very recently, concentrated work on heterogeneous computing had been presented mainly at conferences on high-performance computing -- fascinating for the computer scientist and computer engineer, but still a little head-in-the-circuits for practical-minded software developers.
Enter AMD. Last year, AMD hosted the first 'Fusion' developer conference, named after their highly successful CPU-GPU coupling. Another Fusion conference is coming this year -- AMD is calling it 'the epicenter of heterogenous computing' -- and the session catalog, which just went online, offers an excellent snapshot of heterogeneous computing's state-of-the-art, from the software developer's craft-style point of view.
Here are just a few session titles:
- Hadoop and GPU Compute
- Aparapi: OpenCL GPU and Multi-Core CPU Heterogeneous Computing for Java
- Interaction Continuum : Touch Through Gesture
- Global Illumination Using Ray-Bundle Tracing
- GPGPU Algorithms: How Heterogenous Systems Architecture Can Be Leveraged to Optimize Such Algorithms in Video Games
- Efficient Clustering for Amorphous "Big Data" Streams
- On Heterogeneous Parallel Computations: GPU vs APU
- Harnessing GPU Compute with C++ AMP
- GPU Acceleration in Chrome
- Fabric Engine: High-Performance Computing for Dynamic Languages
The full session catalog is available here (including abstracts!). (Note that a substantial ($200) early registration discount is still available until May 20.) Updates are pushed through the AMD Developer Central newsletter.
The Fusion conference presentations don't presuppose any deep familiarity with the concept of heterogenous computing, from either engineering of development perspectives. But here are a few resources to get you up to speed:
- Heterogeneous Computing: (1) the upcoming AMD Fusion Developer Summit 2012 (June 11-14) website (many resources, including a detailed session catalog, with abstracts); (2) a slightly outdated but still excellent conceptual (but still somewhat technical) overview from 2009; (3) an old (1994) but finely detailed, fairly technical, and historically-aware chapter from the Handbook of Parallel and Distributed Computing.
- Heterogeneous Systems Architecture: (1) an EETimes story and interview with AMD CTO Joe Macri, including (2) lucid infographic summaries.
- OpenCL: (1) AMD's substantial content area, with many tools and resources (more applied than theoretical); (2) a technical overview article from 2010 (more theoretical than applied).
Exciting times, to understate the point again. Consider attending the conference to keep up to speed, and then maybe follow the Heterogeneous Systems Architecture open standard, especially when the spec is released later this year.