SLIRP is a vectorizing code generator, aimed primarily at simplifying the process of creating modules for the S-Lang scripting language. It can dramatically reduce the time and effort required to make C, C++, and Fortran code callable directly from the S-Lang interpreter, automatically vectorize functions to take advantage of the powerful numerical and array capabilities native to S-Lang, and even generate Makefiles to automate the build process. Another distinguishing feature, of special interest in the face of emerging multiprocessor and multicore desktops, is that SLIRP can generate parallelizable wrappers for OpenMP-aware compilers. Here is a plot showing the speedup of selected S-Lang intrinsic functions on a dual 1.8Ghz Athlon GNU/Linux desktop, and a similar plot using 4 CPUs (750Mhz sparcv9) on an 8-node Solaris 5.9 server. These and other results are discussed in more detail in this paper. SLIRP can also generate pure C bindings for C++ code (cfront mode) or empty (stub) implementations for the interface(s) specified by its input; the code emitted in these cases has no dependencies upon S-Lang whatsoever. Here is a talk on using PVM for astronomical modeling, in which SLIRP was used to wrap a Fortran implementation of a Kerr black hole model. The conference proceedings for this talk are available here. Here are two additional talks, given at MIT, on automatic vectorization and the vectorized HDF5 module. The latter demonstrates reading a 391 MB FLASH AMR file into ISIS, our platform for robust, high-performance astrophysical analysis and modeling.
SLIRP grew out of an effort by the author to develop
SLgtk, a set of S-Lang bindings to the
GIMP Toolkit.
Since then it's been used against scores of additional libraries and
scientific codes, as well as directly or indirectly employed in the
publication of a number of scientific papers. A reference for citation
purposes is available here. An early draft version is also
available here.
|