Lawrence Livermore National Laboratory

August 25, 2008

Obtain source code here:

Obtain documentation here:

Organization of information in this announcement.

  1. New features in this release
  2. Other general information
  3. Bugs fixed in this release
  4. Items specific to LLNL installations

A. New features in this release

  • A Silo website has been created (Thanks to Chelle Clements):
  • 'silofile' magic file format identification tool. This is just like 'file' command on most Linux systems. In fact, it piggy-backs off of the 'file' command to do its job. It will report whether a given silo file is an HDF5 format or PDB format file. It does so using magic numbers. In fact, 'silofile' can be applied to any file and if the file is not determined to be a Silo file, it will return the same result as the 'file' command.
  • New DBCpDir() method to copy whole directory hierarchies from one Silo file to another -- works only on HDF5 driver.
  • Integration of Peter Lindtrom's quad/hex mesh compression, hzip, and [1,2,3]D array compression, fpzip. There are several caveats, so be sure to read documentation on DBSetCompression in Silo user's manual. The compression is integrated using HDF5 filters. We have seen lossLESS compression ratios with hzip as high as 20x for Silo test data!. Your mileage may vary.
  • DBSetCompression now also provides controls to specify compression error behavior (fallback to uncompressed or fail completely) as well as a minimum target compression ratio.
  • Silo has a basic python module, This was actually written by Jeremy Meredith in 2005 but was not generally advertised or compiled by default and until recently was a bit buggy. To use it in your own installation, you need to use both the --enable-pythonmodule and --enable-shared configuration options to Silo. Also, be aware that if you generate data using the HDF5 driver, none of your data will be visible to the python module if you do not also call DBSetFriendlyHDF5Names(1) when creating your file(s).
  • Note that there is also another python interface for silo called Pylo developed by Andreas Kl�cknr and you can find it from the Silo we pages.
  • Improved testing including inter-format testing, valgrind testing, testing of the pythonmodule, and of browser.
  • Improved error messages passed to user-defined error handlers.

B. Other general information

  • Silo 4.6.2 is link-time compatible with 4.6.1 and 4.6
  • To use HDF5-1.8.1 with Silo 4.6.2 (or any previous version of Silo for that matter), DO NOT configure HDF5 with the --disable-deprecated-symbols configuration flag or the --with-default-api-version=v16 flag.
  • To the best of our ability, we have confirmed that the files produced by Silo operating on HDF5-1.6.6 and HDF5-1.8.1 are both backwards and forwards format compatible. That is, applications linked with HDF5-1.6.6 can read files generated by Silo on HDF-1.8.1 and applications linked with HDF5-1.8.1 can read files generated by Silo on HDF5-1.6.6.
  • The silo library is now a combination of C and C++ code. The C++ code was added to support new compression features. Rest assured, they can be disabled and the result is the C-only library as you have always known it. However, with these new compression features turned on, be aware that you may need to use a C++ linker to link your application with the Silo library. Alternatively, you may enable shared library builds and avoid having to change your linker.
  • You may obtain source code here:
  • You may obtain user's manual here:

C. Bugs fixed in this release.

  • Ensure browser's output on stdout is line buffered and not unbuffered. When using browser to detect differences in files as in regression testing for example, in unbuffered mode with I/O re-direction of the form 1>foo 2>&1, browser's output was potentially un-predictable. Setting stdout to line buffering should fix this.
  • Use browser's $truncate variable to control truncation of string-valued variables simple variables. Previously, browser would summarily truncate any string valued variable to 256 characters.
  • Prevent DBClose from throwing a SEGV when closing a file to which a single ucdvar has been written.
  • Detect and warn of an attempt to operate on a Silo file that has either been closed or was never opened. Previously, behavior was undetermined and most likely catastrophic with no indication as to cause.
  • Detect and warn of attempt to open same file multiple times and not all being read-only mode. Previously, behavior was undetermined and most likely catastrophic with no indication as to cause.
  • Python module would core with invalid mem writes after obtaining/printing table of contents (GetToc) or closing a file.
  • Diffing of DBcurve objects could result in extraneous output due to opaque driver-specific data being exposed in the object.
  • Various memory errors detected by valgrind in PDB-lite.
  • Fixed problems compiling python module on several platforms.
  • Fixed problems where python module would return strings with embedded trailing null character.
  • Test suite now compiles and runs on windows (Thanks to Kathleen Bonnell).
  • Various typos and missing information from documentation.
  • Fortran compilation on Mac.

D. Items specific to LLNL installations

  • Silo 4.6.2 is installed on OCF/SCF at /usr/gapps/silo/4.6.2/$SYS_TYPE
  • $SYS_TYPE used to identify installations with caveat that where nondefault compilers have been used, $SYS_TYPE has appended to it the C compiler's name. For example, on yana, chaos_4_x86_64_icc. gcc is the default compiler on all systems except on Aix where it is xlc and BG/L where it is blrts_xlc. Remember, if you need more details regarding a particular installation of silo, read the libsilo.settings file 'next to' libsilo.a or
  • Note that a new 'libso' directory exists for keeping and separate from libsiloh5.a. So, to get to the pythonmodule shared libs, you will need the 'libso' directory instead of 'lib'
  • In addition to the libsilo.a and libsiloh5.a that are typically installed, there is a new libsiloxx.a. Note that libsilo.a and libsiloh5.a DO NOT contain any of the new compression features. Only libsiloxx.a does. libsiloxx.a is a 'maximally feature rich' installation which in addition to new compression features, also includes HDF5 driver. To link with libsiloxx.a, you will most likely need to use a C++ linker.
  • All LLNL installations have been made with HDF-1.8.1
  • Silo's simple python module, Silo, is now installed on most systems.
  • Source tarball is available on LC platforms at: /usr/gapps/silo/4.6.2/silo-4.6.2.tar.gz or
  • User's manual is available on LC platforms at: /usr/gapps/silo/4.6.2/ or

June 1, 2008

Silo announces the deployment of its new website.