黑白RDMA_CREATE_QP / RDMA_CREATE_EP和IBV_CREATE_QP有什么区别?

问题描述

据我了解,IBV_CREATE_QP()和RDMA_CREATE_QP确实在做同样的事情。如果我首先调用了ibv_create_qp(),那么在使用ibrdmacm API建立连接时是否还需要调用一个

此外,差异黑白创建QP和EP吗?

解决方法

ibv_create_qp()和rdma_create_qp()几乎是同一回事。 ibv_create_qp()返回指向创建的队列对的指针,rdma_create_qp()将创建的队列对分配给id-> qp。

有Infiniband动词,IBV和RDMA动词。 RDMA动词与许多Infiniband动词等效。使用Infiniband谓词,您需要维护一堆单独的指针,队列对指针,指向完成队列的指针,指向保护域的指针等。使用RDMA谓词,这些都收集在id结构下。查看/usr/include/rdma/rdma_cma.h,结构rdma_cm_id {}。

您仍然可以在RDMA动词环境中使用ibv_create_qp(),但是如果要对RDMA动词进行任何进一步的操作,则需要确保使用返回的队列对填充RDMA id-> qp。 RDMA连接管理器。

rdma_create_ep(RDMA创建端点)将少数RDMA调用折叠为一个调用。其中包括rdma_create_id(),rdma_create_qp(),rdma_resolve_addr()和rdma_resolve_route()。