Abstract

Checkpoint/restart has been an effective mechanism to achieve fault tolerance for many long-running scientific applications. The common approach is to save computation states in memory and secondary storage for execution resumption. However, as the GPU plays a much bigger role in high performance computing, there is no effective checkpoint/restart scheme yet due to the difficulty of the GPU computation state handling. This paper proposes an application-level checkpoint/restart scheme to save and restore GPU computation states in annotated user programs. A pre-compiler and run-time support module are developed to construct and save states in CPU system memory dynamically, whereas secondary storage can be utilized for scalability and long-term fault tolerance. CUDA programs with complicated computation states are supported. State-related variables dissipated in various memory units are collected. Both stack and heap are duplicated at application level for state construction. Experimental results have demonstrated the effectiveness of the proposed scheme.

Highlights

  • High Performance Computing (HPC) systems are usually used to solve more complex problems and many long-running HPC applications are more likely to encounter failures than regular applications

  • All Graphics Processing Unit (GPU) checkpoint/restart experiments are conducted based on NVIDIA Fermi GPU, Tesla C2050

  • In order to reduce the overhead of CheCUDA, Supada Laosookasathit proposed a lightweight checkpoint/restart using CUDA streams based on Virtual Cluster Checkpointing Protocol (VCCP) 29

Read more

Summary

Introduction

High Performance Computing (HPC) systems are usually used to solve more complex problems and many long-running HPC applications are more likely to encounter failures than regular applications. The NVIDIA GPU product families such as Tesla, Fermi and Kepler were designed from the ground up for parallel computing/programming and offer exclusive high performance computing features[4]. Checkpoint/restart for traditional CPU computations can be accomplished at three levels: kernel, library and application levels where computation states are acquired or constructed[6]. Without operating system and system call/library support, we can only adopt application-level checkpoint/restart approach for GPUs. This paper intends to propose a checkpoint/restart scheme that consists of a precompiler and a run-time support module. A new infrastructure is developed so that the precompiler transforms both CPU and GPU source code and inserts library calls for the run-time support module to construct computation states dynamically.

CUDA Programming
GPU Memory Hierarchy
Host-side Code Transformation
Device-side Code Transformation
Run-time Support Module
Buffer Allocation
State Registration
State Saving
State Restoration
File Management
Data Structure Deletion
Experimental Results
Related Work
Conclusions and Future Work

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.