OPENFLAME is a set of tools designed to ease the burden of writing distributed and multi-threaded programs in C. It includes the following packages.
- Actimer: A library for timing portions ("activities") of a C program and accumulating and reporting the timings.
- Cases: A simple preprocessing script for C source files that supports optimization by specialization of variables.
- Chase: A fast implementation of a Gray code with certain nice properties for stepping through k-subsets of an n-set.
- Convey: A library that provides efficient, scalable mechanisms for many-to-many communication in distributed-memory programs.
- Heap: Header files that implement heap-like data structures.
- Loom: A multithreading framework to support high-performance parallel libraries and applications.
- Mfile: Offers convenient access to binary files
by means of
mmap(). - MppUtil: An extensive framework for writing distributed-memory applications based on either SHMEM or MPI.
- USort: An optimized multithreaded library for sorting small fixed-sized items.
- Vis: Provides an interactive way to explore profiling data collected by Vprof.
- Vprof: A library for collecting profile data for visualization.
In addition, OPENFLAME includes the following four standalone header files.
bitops.h: Defines macros and inline functions for bit manipulation and other low-level operations.micro64.h: Largely a legacy header, but still needed bybitops.h, it defines fixed-width integer types.multisort.h: A supermacro that can define a sorting function for any user-specified structure type.xorspp.h: Defines a fast, lightweight pseudorandom number generator via inline functions.
OPENFLAME provides a module file, CMake packages, and pkg-config files to help projects make use of OPENFLAME libraries and headers. For details, see the extended README file.
Instructions for installing and testing OPENFLAME are stored in a separate document.