Abstract :
GPUs offer drastically different performance characteristics compared to traditional multicore architectures. To explore the tradeoffs exposed by this difference, we refactor MUMmer, a widely-used, highly-engineered bioinformatics application which has both CPU- and GPU-based implementations. We synthesize our experience as three high-level guidelines to design efficient GPU-based applications. First, minimizing the communication overheads is as important as optimizing the computation. Second, trading-off higher computational complexity for a more compact in-memory representation is a valuable technique to increase overall performance (by enabling higher parallelism levels and reducing transfer overheads). Finally, ensuring that the chosen solution entails low pre- and post-processing overheads is essential to maximize the overall performance gains. Based on these insights, MUMmerGPU++, our GPU-based design of the MUMmer sequence alignment tool, achieves, on realistic workloads, up to 4× speedup compared to a previous, highly optimized GPU port.
Keywords :
computational complexity; computer graphic equipment; coprocessors; GPGPU applications performance; MUMmer sequence alignment tool; MUMmerGPU++; communication overhead minimization; computational complexity; in-memory representation; multicore architectures; Arrays; Bioinformatics; Complexity theory; Genomics; Graphics processing unit; Memory management;
Conference_Titel :
High Performance Computing, Networking, Storage and Analysis (SC), 2010 International Conference for