Experience of parallelizing cryo-EM 3D reconstruction on a CPU-GPU heterogeneous system

  • Authors:
  • Linchuan Li;Xingjian Li;Guangming Tan;Mingyu Chen;Peiheng Zhang

  • Affiliations:
  • Institute of Computing Technology, Chinese Academy of Science, Beijing, China;Institute of Computing Technology, Chinese Academy of Science, Beijing, China;Institute of Computing Technology, Chinese Academy of Science, Beijing, China;Institute of Computing Technology, Chinese Academy of Science, Beijing, China;Institute of Computing Technology, Chinese Academy of Science, Beijing, China

  • Venue:
  • Proceedings of the 20th international symposium on High performance distributed computing
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Heterogeneous architecture is becoming an important way to build a massive parallel computer system, i.e. the CPU-GPU heterogeneous systems ranked in Top500 list. However, it is a challenge to efficiently utilize massive parallelism of both applications and architectures on such heterogeneous systems. In this paper we present a practice on how to exploit and orchestrate parallelism at algorithm level to take advantage of underlying parallelism at architecture level. A potential Petaflops application -- cryo-EM 3D reconstruction is selected as an example. We exploit all possible parallelism in cryo-EM 3D reconstruction, and leverage a self-adaptive dynamic scheduling algorithm to create a proper parallelism mapping between the application and architecture. The parallelized programs are evaluated on a subsystem of Dawning Nebulae supercomputer, whose node is composed of two Intel six-core Xeon CPUs and one Nvidia Fermi GPU. The experiment confirms that hierarchical parallelism is an efficient pattern of parallel programming to utilize capabilities of both CPU and GPU in a heterogeneous system. The CUDA kernels run more than 3 times faster than the OpenMP parallelized ones using 12 cores (threads). Based on the GPU-only version, the hybrid CPU-GPU program further improves the whole application's performance by 30% on the average.