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. This paper describes a new technique called relative debugging that
addresses this problem by automating the process of comparing a modified code
against a correct reference code. The paper examines 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. The
experience confirms the effectiveness of the approach. Using Guard, it was
possible 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.