MPI connections for otm-sim
Branch: master
Clone or download
Latest commit 23d8852 Feb 13, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
config update for new otm-sim Feb 13, 2019
out_mpijavac initial commit Oct 29, 2018
scripts compile Oct 31, 2018
src add models to subscenarios Feb 13, 2019
test Oct 29, 2018
.gitignore tests Oct 29, 2018 Update Feb 14, 2019
image1.png initial commit Oct 29, 2018
license.txt legal Oct 29, 2018
pom.xml update for new otm-sim Feb 13, 2019


Open Traffic Models - MPI communication: This a parallized version of the OTM simulation engine that uses Message Passing Interface (MPI) for multi-core communication on high performance computing (HPC) systems. It can exploit parallel computation and HPC power to significantly speed up large-scale traffic simulations.


Third party dependencies

  • Download open-mpi 3.1.
  • Install Metis. Two methods:
    • metis-5.1.0.tar.gz. Follow the instructions in Install.txt. To build METIS you will need to have cmake.
    • Ubuntu: sudo apt install metis

Install otm-sim

git clone
cp otm-sim/settings.xml ~/.m2
cd otm-sim
git checkout remotes/origin/ctmrefac
mvn clean install -DskipTests

Alternatively you can download the otm-sim jar here

Build in IntelliJ

  • IntelliJ > Import project > otm-mpi > create project from existing sources ...
  • Add otm-sim and json jar files
Files > Project Structure > Project Settings > Modules
	> Dependencies > + JARs or directories
 		> otm-sim/target/otm-sim-1.0-SNAPSHOT-jar-with-dependencies.jar
   			check "Export" for otm-sim   
		> otm-mpi/lib/json-simple-1.1.1.jar
	> Sources > Add Content Root
		> openmpi-3.1.0/ompi/mpi/java
			Edit Root Properties > Package prefix : mpi

Test in IntelliJ

  • Run test.tests.XMLSplitterTest.main()


export OTMSIMJAR=<path to otm-sim jar>
export OTMMPIHOME=<path to otm-mpi folder>
chmod u+x $OTMMPIHOME/scripts/*.sh


  • ./ : Test offline scenario splitting with a small network.
  • ./ : Compile the program using mpijavac.
  • ./ : Run small example with 2 processes, and compare result to single-process run.
  • ./ : Run small example with 4 processes.