Skip to content

ProtocolConvergence/protocon

Repository files navigation

https://github.com/ProtocolConvergence/protocon
Coverage Status

Protocon: Add Convergence to Shared Memory Protocols

Designing stabilizing protocols is hard, therefore Protocon exists to automate this task. It performs a backtracking search to choose actions that finite-state processes should follow in order to converge to a set of legitimate states. We call this shadow/puppet synthesis, where the legitimate states and behavior can be specified indirectly using shadow variables. Because the problem is hard, one can leverage multiple cores/nodes for parallel search with OpenMP (via the -parallel flag) or MPI (via the protocon-mpi executable).

Resources

How to Run

Just type make from the top-level directory to build object files in bld/ and place the main executables there.

make
mkdir tmp
./bld/protocon -x examplespec/ColorRing.prot -o tmp/solution.prot

Full Instructions

# Get the code.
git clone https://github.com/ProtocolConvergence/protocon.git protocon
cd protocon

# Build with CMake.
mkdir -p bld
cd bld
cmake ..
cmake --build . --config Release
cd ..

# Synthesize 3-coloring protocol.
mkdir tmp
./bld/protocon -x examplespec/ColorRing.prot -o tmp/solution.prot

If you're on a Mac, read on. Was CMake not found? If so, make sure it's installed and launch its GUI. Specify its source directory as /path/to/protocon/src/ and the build directory as /path/to/protocon/bld/. Hit the Generate button.

Now there should be a makefile in bld/, so in the terminal type make.

Dependencies:

All essential dependencies are automatically downloaded during compilation.

Thanks

  • This work was sponsored by the NSF grant CCF-1116546.
  • Superior, a high performance computing cluster at Michigan Technological University, was used in obtaining benchmarks and some results.

About

Add convergence to shared memory protocols

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 5