2013 · 36 citations · 15 references
ComputingComputer ScienceHigh-performance ComputingParallel AlgorithmsParallel ComputingProgramming LanguagesConcurrent ProgrammingData ParallelismParallel ArchitecturesParallel Performance AnalysisParallel Programming ModelsThread ProgrammingExecution Time AnalysisExpert ReviewParallel Computing PerformanceParallel ProgrammingParallelism ConstructsParallelizationPerformance BenchmarkingUsability Benchmarking
Developers face a wide choice of programming languages and libraries supporting multicore computing. Ever more diverse paradigms for expressing parallelism and synchronization become available while their influence on usability and performance remains largely unclear. This paper describes an experiment comparing four markedly different approaches to parallel programming: Chapel, Cilk, Go, and Threading Building Blocks (TBB). Each language is used to implement sequential and parallel versions of six benchmark programs. The implementations are then reviewed by notable experts in the language, thereby obtaining reference versions for each language and benchmark. The resulting pool of 96 implementations is used to compare the languages with respect to source code size, coding time, execution time, and speedup. The experiment uncovers strengths and weaknesses in all approaches, facilitating an informed selection of a language under a particular set of requirements. The expert review step furthermore highlights the importance of expert knowledge when using modern parallel programming approaches.
15
Communicating sequential processes
Microprocessors and Microsystems · 1986 · 2.2K citations
A view of the parallel computing landscape
Krste Asanović, Rastislav Bodík, James Demmel et al. · Communications of the ACM · 2009 · 627 citations · Full text