Communicating sequential processes
Communicating sequential processes
Algorithmic skeletons: structured management of parallel computation
Algorithmic skeletons: structured management of parallel computation
A comparative study of five parallel programming languages
Future Generation Computer Systems - Special triple issue: parallel and distributed workstation systems
Cilk: an efficient multithreaded runtime system
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
Models and languages for parallel computation
ACM Computing Surveys (CSUR)
Parallel Programmer Productivity: A Case Study of Novice Parallel Programmers
SC '05 Proceedings of the 2005 ACM/IEEE conference on Supercomputing
Parallel Programmability and the Chapel Language
International Journal of High Performance Computing Applications
Intel threading building blocks
Intel threading building blocks
Is transactional programming actually easier?
Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
Design of an Empirical Study for Comparing the Usability of Concurrent Programming Languages
ESEM '11 Proceedings of the 2011 International Symposium on Empirical Software Engineering and Measurement
How do developers use parallel libraries?
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Hi-index | 0.00 |
Parallel programming is often regarded as one of the hardest programming disciplines. On the one hand, parallel programs are notoriously prone to concurrency errors; and, while trying to avoid such errors, achieving program performance becomes a significant challenge. As a result of the multicore revolution, parallel programming has however ceased to be a task for domain experts only. And for this reason, a large variety of languages and libraries have been proposed that promise to ease this task. This paper presents a study to investigate whether such approaches succeed in closing the gap between domain experts and mainstream developers. Four approaches are studied: Chapel, Cilk, Go, and Threading Building Blocks (TBB). Each approach is used to implement a suite of benchmark programs, which are then reviewed by notable experts in the language. By comparing original and revised versions with respect to source code size, coding time, execution time, and speedup, we gain insights into the importance of expert knowledge when using modern parallel programming approaches.