Javascript must be enabled to continue!
An Analysis of Programmer Productivity versus Performance for High Level Data Parallel Programming
View through CrossRef
Data parallel programming provides an accessible model for exploiting the power of parallel computing elements without resorting to the explicit use of low level programming techniques based on locks, threads and monitors. The emergence of Graphics Processing Units (GPUs) with hundreds or thousands of processing cores has made data parallel computing available to a wider class of programmers. GPUs can be used not only for accelerating the processing of computer graphics but also for general purpose data-parallel programming. Low level data-parallel programming languages based on the Compute Unified Device Architecture (CUDA) provide an approach for developing programs for GPUs but these languages require explicit creation and coordination of threads and careful data layout and movement. This has created a demand for higher level programming languages and libraries which raise the abstraction level of data-parallel programming and increase programmer productivity. The Accelerator system was developed by Microsoft for writing data parallel code in a high level manner which can execute on GPUs, multicore processors using SSE3 vector instructions and FPGA chips. This paper compares the performance and development effort of the high level Accelerator system against lower level systems which are more difficult to use but may yield better results. Specifically, we compare against the NVIDIA CUDA compiler and sequential C++ code considering both the level of abstraction in the implementation code and the execution models. We compare the performance of these systems using several case studies. For some classes of problems, Accelerator has a performance comparable to CUDA, but for others its performance is significantly reduced; however in all cases it provides a model which is easier to use and enables greater programmer productivity.
Title: An Analysis of Programmer Productivity versus Performance for High Level Data Parallel Programming
Description:
Data parallel programming provides an accessible model for exploiting the power of parallel computing elements without resorting to the explicit use of low level programming techniques based on locks, threads and monitors.
The emergence of Graphics Processing Units (GPUs) with hundreds or thousands of processing cores has made data parallel computing available to a wider class of programmers.
GPUs can be used not only for accelerating the processing of computer graphics but also for general purpose data-parallel programming.
Low level data-parallel programming languages based on the Compute Unified Device Architecture (CUDA) provide an approach for developing programs for GPUs but these languages require explicit creation and coordination of threads and careful data layout and movement.
This has created a demand for higher level programming languages and libraries which raise the abstraction level of data-parallel programming and increase programmer productivity.
The Accelerator system was developed by Microsoft for writing data parallel code in a high level manner which can execute on GPUs, multicore processors using SSE3 vector instructions and FPGA chips.
This paper compares the performance and development effort of the high level Accelerator system against lower level systems which are more difficult to use but may yield better results.
Specifically, we compare against the NVIDIA CUDA compiler and sequential C++ code considering both the level of abstraction in the implementation code and the execution models.
We compare the performance of these systems using several case studies.
For some classes of problems, Accelerator has a performance comparable to CUDA, but for others its performance is significantly reduced; however in all cases it provides a model which is easier to use and enables greater programmer productivity.
Related Results
Programming model abstractions for optimizing I/O intensive applications
Programming model abstractions for optimizing I/O intensive applications
This thesis contributes from the perspective of task-based programming models to the efforts of optimizing I/O intensive applications. Throughout this thesis, we propose programmin...
Toward a theory on programmer’s block inspired by writer’s block
Toward a theory on programmer’s block inspired by writer’s block
Abstract
Context
Programmer’s block, akin to writer’s block, is a phenomenon where capable programmers struggle to create code. Despite anecdotal...
Algorithmic Skeletons and Parallel Design Patterns in Mainstream Parallel Programming
Algorithmic Skeletons and Parallel Design Patterns in Mainstream Parallel Programming
AbstractThis paper discusses the impact of structured parallel programming methodologies in state-of-the-art industrial and research parallel programming frameworks. We first recap...
Parallel programming: Driving the computational surge in AI
Parallel programming: Driving the computational surge in AI
With the meteoric ascent and ongoing advancements in the realm of Artificial Intelligence (AI), there's an escalating demand for potent computational capabilities. Meeting the exac...
Application of innovative factors to increase labor productivity
Application of innovative factors to increase labor productivity
The relevance of the research topic lies in the fact that increasing labor productivity is an urgent task for all levels of the economy. Labor productivity is the basis of long-te...
Incorporating programming into mathematics education : How using programming shapes upper-secondary students’ mathematical understanding
Incorporating programming into mathematics education : How using programming shapes upper-secondary students’ mathematical understanding
This thesis comprises two studies investigating upper-secondary students’ use of programming as a mathematical tool. It aims to examine both the intertwined relationship between st...
International Breast Cancer Study Group (IBCSG)
International Breast Cancer Study Group (IBCSG)
This section provides current contact details and a summary of recent or ongoing clinical trials being coordinated by International Breast Cancer Study Group (IBCSG). Clinical tria...
Virtual machine design for parallel dynamic programming languages
Virtual machine design for parallel dynamic programming languages
To leverage the benefits of modern hardware, dynamic languages must support parallelism, and parallelism requires a virtual machine (VM) capable of parallel execution — a parallel ...

