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