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.sh
for the list of all dependencies.
sudo ./install_requirements.sh
sudo ./install_simgrid.sh
make -j
sudo make install
Install to default /usr/local
./install_simgrid.sh
- make install
Install to a custom prefix
./install_simgrid.sh /path/to/custom/dir
make install PREFIX=/path/to/custom/dir
. Add/path/to/custom/dir
to the$PATH
.
nflows --log=fifo_scheduler.thres:debug --log=heft_scheduler.thres:debug --log=eft_scheduler.thres:debug --log=hardware.thres:debug ./example/config.json
make test