nFlows is a C/C++ runtime system primarily developed to enable the development and evaluation of NUMA-aware scheduling algorithms for scientific workflows. It executes scientific workflows on both simulated and real NUMA (Non-Uniform Memory Access) hardware.
The system leverages simgrid to load DOT-formatted workflows, emulating them as task graphs with annotated FLOP counts and communication sizes. During execution, nFlows tracks task placement, memory locality, and data access times, providing this information to scheduling algorithms for adaptive runtime scheduling. It utilizes pthreads for parallel task execution and core affinity, and the hwloc library to monitor and manage memory locality across NUMA nodes.
- OS: Ubuntu 22.04
- Hardware: Non-Uniform Memory Access (NUMA) Memory Architecture. At least two available NUMA nodes.
- Software: simgrid-3.35, python3.10, hwloc 2.7.0, etc. See
install_requirements.shfor the list of all dependencies.
sudo ./install_requirements.sh
sudo ./install_simgrid.sh
make -j
sudo make installInstall to default /usr/local
./install_simgrid.sh- make install
Install to a custom prefix
./install_simgrid.sh /path/to/custom/dirmake install PREFIX=/path/to/custom/dir. Add/path/to/custom/dirto the$PATH.
nflows --log=fifo_scheduler.thres:debug --log=heft_scheduler.thres:debug --log=eft_scheduler.thres:debug --log=hardware.thres:debug ./example/config.jsonmake test