C++ Class Library Data Management for Scientific Visualization

A. Globus, Technical Report RNR-93-006

Abstract

Scientific visualization strives to convert large data sets into comprehensible pictures. Data sets generated by modern instruments and supercomputers are so large that visualization is often crucial to comprehension. Visualization involves a great deal of numerical programming: vector arithmetic, inverting matrices, solving ODE's, etc. Commercial C++ class libraries implement most of what's needed, but have a fatal memory management performance flaw: data to be operated on is always copied from memory or disk into newly allocated space. On large data sets, these copies kill performance. A small class hierarchy has been implemented to address this problem. The base class implements reference count memory management and contains a virtual destructor, but does no allocation or deallocation. Derived classes are added to implement different ways of allocating memory and importing data into the system. This solution has been tested in our own C++ numerical class library -- the library we wish we didn't have to write.

After publication of this report, Rogue Wave Software, Inc. implemented this technique in their products. Rogue Wave may be reached at USA phone number (503) 754-3010 or sales@roguewave.com.

Postscript version