High Level Programming for Heterogeneous Architectures

Using GPUs to accelerate computation has been shown to be more power efficient then using CPUs alone. Recent research is suggesting that using FPGAs as accelerators can further increase power efficiency for certain types of data- centric applications .

One main drawback to using FPGAs is the difficulty in programming them. The traditional way to program FPGAs has been through the use of hardware description languages (HDLs) such as Verilog and VHDL; Languages which require technical abilities and know-how not found in the average computer programme.

The emerging open programming standard for heterogeneous computing is OpenCL. OpenCL offers a unified C programming model for any device that adheres to its standards. Recently Altera Corp released an OpenCL SDK for FPGAs allowing FPGAs to be treated as OpenCL based accelerators. The OpenCL programming framework, although a major step in the effort to ease FPGA programming, still presents challenges to programmers since it requires both proficiency in C and in-depth understanding of the inner workings of the OpenCL programming model.

In addition to that, recent surveys show that a significant portion of software programmers use programming languages such as Java, C# and Python which offer rapid prototyping and easier software maintenance.

Such programmers can not benefit from the computing power and energy efficiency that OpenCL, FPGAs and heterogeneous computing have to offer. In recent years several initiatives have been launched in an effort to bring heterogeneous computing to the masses. One such effort is a framework called APARAPI which was originally developed by AMD to target AMD GPU/APU architectures.

APARAPI is a Java based programming framework that aims to lower the heterogeneous programming bar. APARAPI offers programmers the ability to run heterogeneous computing applications using a familiar Java interface while hiding many of the intricate details that are associated with OpenCL programming.

The main drawback of the APARAPI framework is that it was designed to specifically support AMD devices which make it unusable on other architectures. In this work our aim was to remove APARAPI’s dependency on the AMD architecture essentially enabling it to run on any other heterogeneous architecture that is OpenCL compatible.

Extend APARAPI to support FPGA based devices and investigate the use of APARAPI on real world parallel algorithms in the data center. In addition we explore the possibility of incorporating APARAPI-FPGA into the Hadoop framework, an industry standard Java software framework used in massively parallel distributed processing of Big Data for collaborative filtering, clustering, and classification.

We ran several real world algorithms to assess the performance of the framework on both a low end and a high end system. On the low end and high end systems respectively we observed up to 78-80 percent power reduction and 4.8X-5.3X speed increase running NBody simulation, as well as up to 65-80 percent power reduction and 6.2X-7X speed increase for a KMeans, MapReduce algorithm running on top of the Hadoop framework and APARAPI.

To read more of this external content, download the complete paper in PDF form  from the open freely accessible online repository at Arxiv.org.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.