python-rdma is a project intended to bring IB and RDMA capabilities to the Python language. The main focus is not on high performance communication but rather on effective and correct use of the IB and RDMA protocol stacks.
Primarily python-rdma is well suited for areas where quick development is much more important than high performance:
I also feel it is an fairly comprehensive exploration of an alternative and more integrated API design for IB and RDMA programming. Although several of the constructs are very Python specific, much of the overall organization and principles can carry over to other languages. I feel it would be very interesting to attempt to port the general API to C++, where ease of use and high performance could be combined.
This documentation set attempts to be a complete exploration of the python-rdma module’s capabilities and APIs, but it does assume the reader has significant pre-existing knowledge of the InfiniBand Architecture (IBA) and OFA RDMA Verbs programming and principles.
For reference the python-rdma module covers the same areas as the following OFA code:
OFA Module | Python-rdma |
---|---|
libibmad | Near 100% coverage via rdma.madtransactor and rdma.IBA |
libibumad | 100% coverage via rdma.umad |
libibverbs | 100% coverage via rdma.ibverbs (through Pyrex) |
libibnetdisc | ~80% coverage. No support for switch chassis grouping. |
librdmacm | Not covered |
libibcm | Not covered |
infiniband-diags | 45 commands re-implemented, 2 un-implemented. Review The ibtool Program |
ibutils | Good coverage of the internal APIs but no coverage for the user tools. |
perftest | rdma_bw is implemented as an example. |
Other than rdma.ibverbs all of the module is written in pure Python.