Remus is a collection of useful utilities for research-oriented programming. This is the ethos of this project, to accumulate helpful tools that can serve as the basis for development.
Remus Supports:
- Workload driver library (see
remus/workload
) for experimental evaluation
- Logging utilities (see
remus/logging
)
- Measurements library (see
remus/metrics
)
- Sundry other utilities that we don't know where to place yet (see
remus/util
)
- RDMA (see
remus/rdma
)
- NUMA (see
remus/numa
)
Building
We have tested the following configurations:
OS | Compiler |
Ubuntu 22.04 | gcc-11 |
Ubuntu 22.04 | gcc-12 |
Ubuntu 22.04 | clang-15 |
Ubuntu 22.04 | clang-14 |
Ubuntu 22.04 | clang-15 & nvcc-12.3 |
To build/run your machine requires:
- protobuf-compiler
- librdmacm-dev
- ibverbs-utils
- libspdlog-dev
- libfmt-dev
- nlohmann-json3-dev
- libnuma-dev (if compiling NUMA support)
- CUDA 12.3 (if compiling GPU support)
- doxygen (for building DOCS)
- cmake (3.18 or later)
Your GPU must be Volta or later.
We have the following configuration options/flags:
- GPU (ON or OFF) will compile with GPU support
- KEEP (ON or OFF) will keep ptx and cubin files
- DOCS (ON or OFF) will create documentation
- NUMA (ON or OFF) will enable remus::numa
- LOG_LEVEL (TRACE, DEBUG, INFO, WARN, ERROR, CRITICAL, or OFF) for logging
- CXX_STANDARD (20 or 23) for the C++ standard
- CUDA_ARCHITECTURES (semicolon seperated list of SM numbers)
Using Remus
- Launch experiment on RDMA-capable Cloudlab cluster
- Deploy on Ubuntu 24.04 for native gcc-13 support.
- Edit
cloudlab_common.sh
- Fill out machines, domain, user, and your cloudlab sshkey path.
bash cloudlab_install_deps.sh
- This will install the dependencies on the remote machines
bash cloudlab_rebuild.sh
- Sends over the pre-compiled binary to the remote machines
- Configuration for the multi-screen setup
- run
screen -c run.screenrc
to launch the experiment
- run
screen -c dev.screenrc
to log in to all machines
build.sh can also be used to compile the binary locally. Here, you can configure the log level (DEBUG or RELEASE).