ScaleSim is a large-scale distributed and parallel discrete event simulator, based on optimistic PDES (Parallel Discrete Event Simulation).
ScaleSim provides Exact-Differential execution, proposed in
- "Exact-Differential Simulation: Differential Processing of Large-Scale Discrete Event Simulations" (TOMACS 2018)
- "Towards Large-Scale What-If Traffic Simulation with Exact-Differential Simulation" (WSC 2015)
- "Exact-Differential Large-Scale Traffic Simulation" (SIGSIM PADS 2015)
MPI (Open MPI)
boost
,boost_mpi
,boost_thread
,boost_system
,boost_serialization
,boost_filesystem
,leveldb
,snappy
,gtest
,glog
,gflags
,
Open MPI
1.8.8 (MPI 3.0), 1.10.0 (MPI 3.0)boost
1.57.0, 1.58.0leveldb
1.18,snappy
1.1.3gtest
1.7.0,glog
0.3.3,gflags
2.1.2
Make a build directory
$ mkdir build
$ cd build
Configure and compile (require c++11)
$ cmake ..
$ make
Single Simulation
$ mpirun -np 4 ./build/TrafficSim \
./traffic/ring/part/graph.part.4 \
./traffic/ring/rd.sim.csv \
./traffic/ring/trip.csv
You should define:
--sim_id
: simulation task ID. In repeating execution, the simulator reads same ID inputs.--store_dir
or--store_ip
: directory path or IP address to store results.
For initial execution, use --diff_init
option.
$ mpirun -np 4 ./build/TrafficSim --sim_id=999 --store_dir="./tmp" --diff_init \
./traffic/ring/part/graph.part.4 \
./traffic/ring/rd.sim.csv \
./traffic/ring/trip.csv
For repeat execution, use --diff_repeat
option.
$ mpirun -np 4 ./build/TrafficSim --sim_id=999 --store_dir="./tmp" --diff_repeat \
./traffic/ring/part/graph.part.4 \
./traffic/ring/rd.sim.csv \
./traffic/ring/add_ev.csv
$ ./build/Test
You can filter test types with gtest_filter
$ ./build/Test --gtest_filter=*small # Small test
$ ./build/Test --gtest_filter=*meduim # Medium test
$ ./build/Test --gtest_filter=*large # Large test