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.