2010 · 83 citations · 20 references
ComputingComputer EngineeringComputer ScienceCompilersComputer ArchitectureParallel ComputingData ParallelismMulticore Processor DesignParallel Computer ArchitectureParallel Computing SystemsParallel Performance AnalysisThread ProgrammingCuda ProgrammingMany-core ProcessorsManycore ArchitecturesMulticore ArchitecturesMulticore SystemsOpencl ProgrammingThread ParallelismThread-level Parallelism
In this paper we describe techniques for compiling fine-grained SPMD-threaded programs, expressed in programming models such as OpenCL or CUDA, to multicore execution platforms. Programs developed for manycore processors typically express finer thread-level parallelism than is appropriate for multicore platforms. We describe options for implementing fine-grained threading in software, and find that reasonable restrictions on the synchronization model enable significant optimizations and performance improvements over a baseline approach. We evaluate these techniques in a production-level compiler and runtime for the CUDA programming model targeting modern CPUs. Applications tested with our tool often showed performance parity with the compiled C version of the application for single-thread performance. With modest coarse-grained multithreading typical of today's CPU architectures, an average of 3.4x speedup on 4 processors was observed across the test applications.
20
A bridging model for parallel computation
Leslie G. Valiant · Communications of the ACM · 1990 · 3.7K citations · Full text
Scalable parallel programming with CUDA
John Nickolls, Ian Buck, Michael Garland et al. · 2008 · 1.6K citations
Scalable Parallel Programming with CUDA
John Nickolls, Ian Buck, Michael Garland et al. · Queue · 2008 · 1.6K citations · Full text