International Journal of Computer Applications
Foundation of Computer Science (FCS), NY, USA
|
Volume 100 - Issue 6 |
Published: August 2014 |
Authors: Alexandru Voicu |
![]() |
Alexandru Voicu . Accelerated Combinatorial Optimization using Graphics Processing Units and C++ AMP. International Journal of Computer Applications. 100, 6 (August 2014), 21-30. DOI=10.5120/17529-8100
@article{ 10.5120/17529-8100, author = { Alexandru Voicu }, title = { Accelerated Combinatorial Optimization using Graphics Processing Units and C++ AMP }, journal = { International Journal of Computer Applications }, year = { 2014 }, volume = { 100 }, number = { 6 }, pages = { 21-30 }, doi = { 10.5120/17529-8100 }, publisher = { Foundation of Computer Science (FCS), NY, USA } }
%0 Journal Article %D 2014 %A Alexandru Voicu %T Accelerated Combinatorial Optimization using Graphics Processing Units and C++ AMP%T %J International Journal of Computer Applications %V 100 %N 6 %P 21-30 %R 10.5120/17529-8100 %I Foundation of Computer Science (FCS), NY, USA
In the course of less than a decade, Graphics Processing Units (GPUs) have evolved from narrowly scoped application specific accelerators to general-purpose parallel machines capable of accommodating an ever-growing set of algorithms. At the same time, programming GPUs appears to have become trapped around an attractor characterised by ad-hoc practices, non-portable implementations and inexact, uninformative performance reporting. The purpose of this paper is two-fold, on one hand pursuing an in-depth look at GPU hardware and its characteristics, and on the other demonstrating that portable, generic, mathematically grounded programming of these machines is possible and desirable. An agent-based meta-heuristic, the Max-Min Ant System (MMAS), provides the context. The major contributions brought about by this article are the following: (1) an optimal, portable, generic-algorithm based MMAS implementation is derived; (2) an in-depth analysis of AMD's Graphics Core Next (GCN) GPU and the C++ AMP programming model is supplied; (3) a more robust approach to performance reporting is presented; (4) novel techniques for raising the abstraction level without sacrificing performance are employed. This represents the first implementation of an algorithm from the Ant Colony Optimisation (ACO) family using C++ AMP, whilst at the same time being one of the first uses of the latter programming environment.