CheCUDA: A Checkpoint/Restart Tool for CUDA Applications
Graduate School of Information Sciences, Tohoku University, 6-3 Aramaki-aza-aoba, Sendai, 980-8578 Japan
International Conference on Parallel and Distributed Computing, Applications and Technologies, 2009, p.408-413
@conference{takizawa2010checuda,
title={CheCUDA: A Checkpoint/Restart Tool for CUDA Applications},
author={Takizawa, H. and Sato, K. and Komatsu, K. and Kobayashi, H.},
booktitle={Parallel and Distributed Computing, Applications and Technologies, 2009 International Conference on},
pages={408–413},
year={2010},
organization={IEEE}
}
In this paper, a tool named CheCUDA is designed to checkpoint CUDA applications that use GPUs as accelerators. As existing checkpoint/restart implementations do not support checkpointing the GPU status, CheCUDA hooks a part of basic CUDA driver API calls in order to record the status changes on the main memory. At checkpointing, CheCUDA stores the status changes in a file after copying all necessary data in the video memory to the main memory and then disabling the CUDA runtime. At restarting, CheCUDA reads the file, re-initializes the CUDA runtime, and recovers the resources on GPUs so as to restart from the stored status. This paper demonstrates that a prototype implementation of CheCUDA can correctly checkpoint and restart a CUDA application written with basic APIs. This also indicates that CheCUDA can migrate a process from one PC to another even if the process uses a GPU. Accordingly, CheCUDA is useful not only to enhance the dependability of CUDA applications but also to enable dynamic task scheduling of CUDA applications required especially on heterogeneous GPU cluster systems. This paper also shows the timing overhead for checkpointing.
January 17, 2011 by hgpu