This repository contains libsmelt
, a library for efficient broadcast
trees for multi-core machines.
See LICENSE file in the repository.
The library requires the following tools / packages to be installed on the machine:
$ sudo apt-get install cpuid hwloc libnuma-dev python3
It further uses the Smelt Simulator. See next step.
To create the model for the current machine, run the script
./scripts/create_model.sh
This will obtain the dependencies and the collects data on the machine. You will need to run this on the machine you want to create the machine model for.
The scripts downloads the Smelt Simulator and tools into the ./model
directory.
After the model has been built for a machine, the topologies for the machine can be created using
./scripts/create_overlays.sh
This serves as a test, that the simulator is able to generate the topology overlays for the model.
There are several environment variables that control how Smelt contacts the Simulator:
SMLT_HOSTNAME
: The hostname of the Smelt Simulator. This should be localhost in most cases. Typical usage is to have an SSH tunnel to the Simulator or to run it on the same machine.SMLT_MACHINE
: The name of the machine Smelt is running on. This serves as an identifier to the Simulator to find the associated machine model. If not set, the value given bygethostname
will be used.SMLT_TOPO
: The topology to be returned from the Simulator. If not set,adaptivetree-shuffle-sort
will be used. Note that this will only be used if the call tosmlt_topology_create
usesNULL
as topology name.
- Communication abstraction "address"
- Handles the actual send and receive of messages
- represents a connection between two nodes
- two endpoints form a queue pair
- a particular Smelt configuration: how the nodes communicate
- queue pair specification
- implementation to handle the events on a the queue pairs. (send and recv)
EV_RECV: receive message, read tag (possible forward), callback
Our Makefile supports several configurations given as environment variables. Here is a list of them:
USE_FFQ
: Use FastForward rather than UMPBUILDTYPE
: Supported values arerelease
anddebug
. The default is release-mode.