Splash 2 for Linux/x86


Are you sure you want to use Splash 2 ?????


The kernels are self-testing with the "-t" switch, but, of the included applications, only Ocean and fmm provide "correct.out" which you can use to verify that the program ran successfully. raytrace and volrend produce images, but I can't tell if they are the correct images. Thus, I would not recommend using anything besides Ocean and FMM unless you have good understanding of the underlying physics and graphics problems and can verify the output. If you CAN provide correct output, please contact me, and I will post your file.


Please read the following papers regarding the scaling of Splash2. While the algorithms can be scaled to study large, modern machines, it is rarely as simple as upping the number of particles, iterations, etc...
  • Scaling Application Performance on Cache-coherent Multiprocessors (ISCA99)
  • Scaling Parallel Programs for Multiprocessors: Methodology and Examples (Computer 1993)


Here's a version of Splash2 that I downloaded from the wayback machine: splash2.tar.gz. The gzip container seems truncated, but the files seem alright. (Update: according to Sreepathi Pai, it's just missing the file null byte).


You need a Parmacs implementation. Here are two...
  1. Nathan Tuck wrote one for a study on hyperthreading on the P4: pthread.m4.tuck
  2. Bastiaan Stougie includes one in his Masters thesis: pthread.m4.stougie
The latter has a more common barrier implemenation and the "pause" macros needed for the radix program.

If you're curious about what these macros are supposed to do (and you can't track down the original book), you might try consulting the description in : tango-lite.ps

Place this file next to the c.m4.null macros, and update makefiles as appropriate to point to this.

Compilation Notes

These are my notes for compilation on a Fedora Core 3 machine.

In general, fix makefiles to use compiler options that you actually support (eg, no -Olimit or -cckr). Remove reference to mpc library and add the -lpthread.

need to rename the _Complex type.  I did s/_Complex/_myComplex/
and "format" in lockedprint routine disappears.  I call it my_format.
need to use __DBL_DIG__ and __DBL_MAX__ instead of the non_underscore version
doesn't match correct.out at all!

ocean-non contig and contig: looks okay.  little rounding errors

radiosity: no way to check without GL.  maybe with http://www.thp.uni-duisburg.de/Ygl/

waters: extra ".." in path to macros. both versions compile and run, but no way to check output

barnes: no output to check result

remove -ansi and the malloc junk in tifcompat to get libtiff to compile
need to undef FLIP 
tweak user_options once to get the post-processed files and again once you've generated them.  
I can see the heads in the .tiff files.  Does that mean it worked?

apply rt.patch (below)
use libtiff from volrend
comment out the BYTESWAP in rltotiff/tiff_rgba_io.c
I see graphical output, but again, I don't know what to expect, so I
can't tell if it worked.
car requires more than 32M.  Try -m64

lu,cholesky,fft,radix: no problems, all pass self-test.