Abstract
Because large scientific codes are rarely static objects, developers
are often faced with the tedious task of accounting for discrepancies
between new and old versions. In this paper, we describe a new
technique called {\em relative debugging} that addresses this problem
by automating the process of comparing a modified code against a
correct reference code. We examine the utility of the relative
debugging technique by applying a relative debugger called Guard to a
range of debugging problems in a large atmospheric circulation model.
Our experience confirms the effectiveness of the approach. Using
Guard, we are able to validate a new sequential version of the
atmospheric model, and to identify the source of a significant
discrepancy in a parallel version in a short period of time.