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 MPI1.8.8 (MPI 3.0), 1.10.0 (MPI 3.0)boost1.57.0, 1.58.0leveldb1.18,snappy1.1.3gtest1.7.0,glog0.3.3,gflags2.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_diror--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