| Crates.io | rrddmma |
| lib.rs | rrddmma |
| version | 0.7.3 |
| created_at | 2023-05-07 13:38:45.11266+00 |
| updated_at | 2024-12-23 11:22:28.051433+00 |
| description | A Rust library for RDMA. |
| homepage | |
| repository | https://github.com/IcicleF/rrddmma |
| max_upload_size | |
| id | 859174 |
| size | 304,578 |
A Rust RDMA library.
This library is more for academic use than for industry. It is highly specialized to Mellanox/NVIDIA ConnectX network adapter series.
WARNING: the interfaces are unstable and under continuous change!
This library supports multiple linkage types to the ibverbs library.
First, this library respects existing MLNX_OFED installations. It works on both v4.9-x and v5.x versions.
mlx5dv*\* features.Otherwise, rrddmma will try to find an existing libibverbs installation via pkg-config.
mlx5dv_* features.Otherwise, rrddmma will try to download rdma-core and build from source.
You need to ensure that the dependencies are properly installed.
In Ubuntu and other Debian-derived OSs, these are:
sudo apt install -y build-essential cmake gcc libclang-dev libudev-dev libsystemd-dev \
libnl-3-dev libnl-route-3-dev ninja-build pkg-config valgrind \
python3-dev cython3 python3-docutils pandoc
Building from source is different from the previous two approaches in that libibverbs is linked statically and
cannot detect providers at runtime.
This library currently only allows the mlx5 provider.
mlx5dv_* features.Due to the distinct feature set of MLNX_OFED v4.x and v5.x drivers, enabled features of this library is also different on different machines. As a result, some features are undocumented in docs.rs. Here are some of them:>
Dct type will be available, and you may create QPs
of type QpType::DcIni to send messages to Dcts.Qp::ext_compare_swap() and Qp::ext_fetch_add() will be
available. To use this feature, call enable_feature(ExpFeature::ExtendedAtomics, N) when you build a QP, in which
N can be 8, 16, or 32.To get a complete set of features, you can build the documentation locally:
cargo doc --open
It is widely recognized as a bad design pattern to panic in fallible methods (i.e., methods that return a Result).
However, in RDMA, this is not the case because there are actually two different types of errors:
rrddmma panics for these errors.libibverbs library, such as failing to create a QP due to
resource exhaustion. These errors are recoverable and should be handled by the caller.
rrddmma returns Errs for these errors.