What is Galois?

The Galois system permits application programmers to exploit amorphous data-parallelism in irregular algorithms  without having to write explicitly parallel code. Irregular algorithms operate on complex data structures like graphs, priority queues, and lists, and they are the norm in important problem domains like machine learning, graph analytics, electronic design automation (EDA), and network security.

The Galois programming model provides a small number of programming patterns that are implemented in C++. The Galois library provides concurrent data structures, schedulers, and memory allocators. The Galois runtime executes these programs in parallel, using parallelization strategies such as optimistic and round-based execution. Galois runs on shared-memory NUMA platforms and NVIDIA GPUs. A subset of the Galois programming model is supported on distributed-memory machines.

What is Galois used for?

  • Graph analytics
    • Lonestar and LonestarGPU have programs for the usual problems. Galois does particularly well on high-diameter graphs like road networks, circuits, and provenance graphs because it supports richer scheduling policies than other systems in this space.
    • Galois was a 2017 HPEC Graph Challenge Champion.
  • Benchmarking servers
  • Real-time intrusion detection in computer networks
    • BAE-led DARPA project: goal is to build and mine provenance graphs in real-time to find anomalous behavior in computer networks.
  • Circuit design tools
  • Finite-elements
    • Guaranteed quality 2-D mesh generation and refinement: Lonestar benchmarks.
    • Metis graph partitioner: Lonestar benchmark.
    • Iso-geometric finite elements.

How do I learn more about Galois?

Download

The latest release along with instructions on how to install the Galois system and run a sample benchmark application can be found here.

Contact

For questions or comments about the Galois system, please contact galois-users@utlists.utexas.edu.

Recent Publications