Hardware-Software Co-design in Open CL
March 19, 2012, Interdisciplinary Engineering Design Education Conference, Santa Clara, CA—Manju Hegde from AMD described the need for a new hardware-software co-design paradigm in the latest microprocessors. This change is driven by the academic ecosystem that produces 600 thousand programmers a year to feed an industry that is growing from 25 to 30 million people.
The problem is that most programmers only program the CPU, even though they are developing many functions. The latest model for development tools is a freemium model where users get to try new tools for free and can buy the premium version after the trials. This system needs many vendors and easily available support as well as a full set of tools, libraries, training, and other reference materials. AMD is helping by funding some smaller companies through their internal VC funds, and is supporting more academic training and curriculum development.
The latest processors have combined the CPU and GPU into a single unit called an applications processing unit or APU. They are addressing the issue that PGU programming is hard, even thought the GPU is 6-8 times ore efficient than the CPU for most compute functions. Architectural changes in the combined devices have resulted in reduced programming time, increased performance, and lower functional power consumption.
Now all the major processor vendors are producing APUs and the software development tools are starting to appear. The language of choice or API for APU programming is OpenCL from the Khronos Group. This language provides a single programming model for any CPU-GPU mix and already has hundreds of apps and widgets. AMD support for OpenCL includes a debugger, analysis tools, profilers, and a task manager. The complete list of tools and functions is available at www.amd.com/tools/Pages/default.aspx
To feed innovation, the ecosystem needs investments, the ability to develop early stage prototypes, and support from the educational establishments. Heterogeneous processor programming is hard, but the APU provides a unified address space to eliminate the major context switching in software due to changes in processor types.
The APU makes new applications possible. The next release of the software tools will support C++, user-mode scheduling, and bidirectional power management functions. Next year, the chip will integrate the architectures for shared memories, and address space coherency. In '14, the OSs will be integrated to extend functions to the GPU.
The entire ecosystem is designed to take advantage of open standards. HSAIL is their virtual ISA and HSA provides the memory model and system specifications and is the equivalent to virtualization. The tools are changing the hardware to fit into the programmer's model, rather than the previous approach that forced the programmer to fit into the hardware model.
Changing the software stack in an APU reduces the graphics kernel, overhead, and latency. OpenCL and C++ AMP reduce the number of copies of data and uses function calls and shared pointers to reduce bus traffic. These changes enable new apps like nearest screen displays, biological recognition, augmented reality, and user-generated 3-D content.
The changes also enable natural user interfaces and gestures. All the new functions need the increased parallelism to achieve performance. Stickiness is the new tipping point in light of the law of the few. This statement says that a few people in strategic places can influence people far beyond their normal range of contacts. If a few sales people are advocates and evangelists they make others consider their choices. The same for mavens and university professors. Together with connectors—spokesperson, presenter, library developer—they can sway the larger population's perspectives.
In education, C++ and OpenCL are available tools for teaching on any platform. Universities can take the existing materials and hardware to make new training tools to train the trainers. These aspects are especially valuable in emerging economies where interest in high, but other resources are sparse. Developers are moving more towards open standards and crowd sourcing for new tools. AMD is hosting a Fusion developer summit from June 11-14 in Bellevue, WA see amd.com/afds for more information.