Productive high-performance software for OpenCL devices
John Melonakos, Pavan Yalamanchili, Chris McClanahan, Umar Arshad, Michael Landes, Shivapriya Jamboti, Abhijit Joshi, Shehzan Mohammed, Kyle L. Spafford, Vishwanath Venugopalakrishnan, James Malcolm · Proceedings of SPIE, the International Society for Optical Engineering/Proceedings of SPIE · 2013
Over the last three decades, CPUs have continued to produce large performance improvements from one generation to the next. However, CPUs have recently hit a performance wall and need parallel computing to move forward. Parallel computing over the next decade will become increasingly defined by heterogeneous computing, involving the use of accelerators in addition to CPUs to get computational tasks done. In order to use an accelerator, software changes must be made. Regular x86-based compilers cannot compile code to run on accelerators without these needed changes. The amount of software change required varies depending upon the availability of and reliance upon software tools that increase performance and productivity. Writing software that leverages the best parallel computing hardware, adapts well to the rapid pace of hardware updates, and minimizes developer muscle is the industry’s goal. OpenCL is the standard around which developers are able to achieve parallel performance. OpenCL itself is too difficult to program to receive general adoptions, but productive high-performing software libraries are becoming increasingly popular and capable in delivering lasting value to user applications.