Splash-3 is a benchmark suite based on Splash-2 but without data races. It was first presented at ISPASS'16.
The version found here is a refined version of the one used in the ISPASS paper. The main difference is that it is based on the Modified Splash-2 suite, which, among other things, fixes issues related to running Splash-2 on x86-64, as well as lots of warnings. While working on the release version of Splash-3 we realized that we are duplicating a lot of the effort already taken by Modified Splash-2, so we decided to port our Splash-3 patchset on top of Modified Splash-2.
Modified Splash-2 also changes every int
to long
, which is something that we
only partially did for the version discussed in the paper, so we do expect some
differences in the memory footprint of the applications. However, everything
else, such as the algorithms or the synchronization characteristics of the
applications remain unchanged, making the overall performance difference between
this version and the ISPASS version minimal.
There is no need to install Splash-3. All you need to do is set the BASEDIR
variable in codes/Makefile.config
to point to the full path of the codes
directory.
For tarball releases please visit our website at etascale.com.
To properly cite Splash-3 please cite our ISPASS'16 paper.
C. Sakalis, C. Leonardsson, S. Kaxiras, and A. Ros, “Splash-3: A
properly synchronized benchmark suite for contemporary research,”
in Performance Analysis of Systems and Software (ISPASS), 2016
IEEE International Symposium On, IEEE, 2016.
The first release of Splash-3 is tagged as v3.0
. Small fixes might be
published untagged on the master branch, as long as they do not significantly
affect the performance or other characteristics of the applications.
The current Splash-3 version, referred to as Splash-3x, is tagged as v3.0X
.
Splash-3x is based on Splash-2x from the PARSEC benchmark suite, which enables
support for bigger input sets. In addition, Splash-3x contains some small
changes that enable support for running with a higher number of threads. Note
that Splash-2x also includes the fixes from the Modified Splash-2 and that
Splash-3x is build on top of Splash-3.
It is also possible to access the original and the Modified Splash-2 codes.
They are tagged as v2.0
and v2.0M
respectively.
The following are the recommended inputs for running Splash-3 in a simulator. The symbol '#' is a placeholder for the number of threads. These inputs are based on the original Splash-2 characterization paper by Woo et al. [1].
apps/barnes/BARNES < inputs/n16384-p#
apps/fmm/FMM < inputs/input.#.16384
apps/ocean/contiguous_partitions/OCEAN -p# -n258
apps/ocean/non_contiguous_partitions/OCEAN -p# -n258
apps/radiosity/RADIOSITY -p # -ae 5000 -bf 0.1 -en 0.05 -room -batch
apps/raytrace/RAYTRACE -p# -m64 inputs/car.env
apps/volrend/VOLREND # inputs/head 8
apps/water-nsquared/WATER-NSQUARED < inputs/n512-p#
apps/water-spatial/WATER-SPATIAL < inputs/n512-p#
kernels/cholesky/CHOLESKY -p# < inputs/tk15.O
kernels/fft/FFT -p# -m16
kernels/lu/contiguous_blocks/LU -p# -n512
kernels/lu/non_contiguous_blocks/LU -p# -n512
kernels/radix/RADIX -p# -n1048576
- If OCEAN (either version) segfaults during initialization, try reducing the
IMAX
andJMAX
values indecs.h
.
Due to popular demand, some of the locks around some of the "benign" assignment
races have been marked as optional. If you want to disable those locks, pass the
option -DWITH_NO_OPTIONAL_LOCKS
to the compiler. IT IS HIGHLY DISCOURAGED TO
DO SO. The applications have not been tested without those locks, and even the
"benign" data races can cause undefined behavior.
The inputs named 'parsec_' are part of the PARSEC 3.0 benchmark suite and are not covered by the Splash-3 licenses. Instead they are covered by the following license:
Copyright (c) 2006-2012, Princeton University
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Princeton University nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY PRINCETON UNIVERSITY ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL PRINCETON UNIVERSITY BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
If you are interested in the exact source code used for the ISPASS'16 paper, please contact Christos Sakalis directly.
[1] Steven Cameron Woo, Moriyoshi Ohara, Evan Torrie, Jaswinder Pal Singh, and Anoop Gupta. 1995. The SPLASH-2 programs: characterization and methodological considerations. In Proceedings of the 22nd annual international symposium on Computer architecture (ISCA '95). ACM, New York, NY, USA, 24-36. DOI=http://dx.doi.org/10.1145/223982.223990