aboutsummaryrefslogtreecommitdiff
path: root/doc/html/why.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/html/why.html')
-rw-r--r--doc/html/why.html115
1 files changed, 115 insertions, 0 deletions
diff --git a/doc/html/why.html b/doc/html/why.html
new file mode 100644
index 0000000..bccad6d
--- /dev/null
+++ b/doc/html/why.html
@@ -0,0 +1,115 @@
+<html>
+ <head>
+ <title>Why IEEEIO</title>
+ </head>
+ <body bgcolor="#F0F0F0">
+ <!-- <img src="Images/ieeeiotitle.gif">-->
+ <h1>Why use IEEEIO?</h1>
+ <DL>
+ <DT><b>Its compact</b>
+ <DD>On the SGI Origin 2000, the entire library is 206k.
+ It contains only a little over 2,500 lines of code for
+ the C++, C, and F77 versions combined.<p>
+
+ <DT><b>Its fast</b>
+ <DD>Most simulation applications end up writing a lot more
+ data than they read, the I/O interface is optimized for
+ maximum writing speed. No seeking is required during writing
+ and the low-level raw unix I/O interface
+ is used to maximize performance.
+ Preliminary <a href="Performance.html">performance tests</a>
+ show that it is
+ comparable with f77 unformatted IO for writing
+ speed.
+
+ Data is translated to the
+ machines native representation <i>(ie. byte-swapping)</i>
+ only during reading.
+ If speed is required for reading as well, then there is a
+ <a href="Utilities.html#convert2native">'convert2native'</a>
+ utility which will optimize the file
+ for the type of machine that is reading it.<p>
+
+ <DT><b>It interoperates with HDF</b>
+ <DD>If you use HDF-SDS, you should have no problem using IEEEIO
+ because they share the same programming interface. You
+ indicate the type of file you want to use when you open
+ the file. From there on, the same subroutines are used
+ for reading or writing data to the file, whether it be HDF
+ or IEEEIO. In addition there is an
+ <a href="Utilities.html#ioconvert">'ioconvert'</a>
+ utility that can translate
+ either direction between IEEEIO and HDF files and preserve
+ all of the HDF annotations and NetCDF attributes.<p>
+ IEEEIO doesn't supercede HDF. It is designed
+ to be a lightweight IO system which you would use when
+ the broader functionality of HDF is not required.<p>
+
+ <DT><b>It is crash-safe</b>
+ <DD>Since no seeking is required to maintain file integrity
+ during writes, you will not lose data if the
+ simulation program exits without having properly
+ closed the file.<p>
+
+ <DT><b>Most machines use IEEE standard floating point number
+ formats</b>
+ <DD>When HDF and XDR were first created, almost every machine
+ architecture had its own native floating point representation.
+ There were VAX floats, Cray floats, and Convex floating point
+ representations... all mutually incompatible. Now, virtually
+ every major supercomputer architecture supports IEEE standard
+ floating number representations. The primary differences
+ between number formats now it the byte-order which is trival
+ to convert.
+ As a result, the XDR and HDF support for platform neutral
+ floating point formats is more work than is necessary for
+ most machines. By depending on
+ IEEE standard number formats, the data storage can be made
+ much simpler and more efficient.
+ If
+ the machine you use doesn't support IEEE floating point
+ numbers, then you should continue to use HDF. Since IEEEIO
+ interoperates with HDF, this does not require significant
+ modifications to your code to switch back and forth between
+ the two. Currently IEEEIO has been ported to SGI IRIX {5.x,6.x},
+ IRIX64 6.x, HP-UX 9.01, ConvexOS {on SPP-1200 and SPP-2000},
+ DEC Alpha OSF/1, and the Cray T3E. The only machine that is
+ not supported is the Cray C90.<p>
+
+ <DT><b>Why not use XDR?</b>
+ <DD>
+ So if the aim is to create a lightweight portable binary file
+ format, this leads to the question of why not use XDR for the
+ encoding? Well the answer is that in early testing it was
+ discovered that HDF is significantly faster and more efficient than
+ XDR. So if you really need XDR then you should be asking
+ yourself <i>why not use HDF</i>?<p>
+
+ Again, this file format is
+ primarily designed to take advantage of the fact that most of
+ the operations that XDR and HDF do to make the data platform
+ neutral are not always necessary given current binary formats
+ for floating point numbers. It also leads to a very simple-to-parse
+ file structure which brings us to the next point...
+ <p>
+
+ <DT><b>Simple file structure</b>
+ <DD>Its extremely simple file structure makes it
+ easy to build readers in a variety of languages.
+ This is important for interpreted data processing
+ languages like IDL because the reader can be implemented
+ in native IDL instead of writing native methods.
+ The same is true of Java. Instead of creating native
+ methods that directly call the libieeeio interfaces,
+ the format is simple enough that it can be implemented
+ using java itself.<p>
+ </DL>
+
+ <hr>
+ <address><a href="mailto:jshalf@suttung.aei-potsdam.mpg.de">John Shalf</a></address>
+ <!-- Created: Mon Apr 7 12:52:52 MDT 1997 -->
+ <!-- hhmts start -->
+Last modified: Tue May 27 18:14:25 CDT 1997
+<!-- hhmts end -->
+ </body>
+</html>