c - 黑白 RDMA_CREATE_QP/RDMA_CREATE_EP 和 IBV_CREATE_QP 有什么区别?
问题描述
据我了解, IBV_CREATE_QP() 和 RDMA_CREATE_QP 从字面上做同样的事情。如果我先调用了 ibv_create_qp(),当我使用 ibrdmacm API 建立连接时,是否还需要调用另一个?
此外,diff b/w 创建 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,struct rdma_cm_id {}。
您仍然可以在 RDMA 动词环境中使用 ibv_create_qp(),但如果您想对 RDMA 动词或 RDMA 连接管理器进行任何进一步的操作,您需要确保使用返回的队列对填充 RDMA id->qp .
rdma_create_ep,RDMA 创建端点,将少量 RDMA 调用合并为一个调用。这些包括 rdma_create_id()、rdma_create_qp()、rdma_resolve_addr() 和 rdma_resolve_route()。
推荐阅读
- ffmpeg - 如何在没有 CPU 完整解码的情况下从 h264 中提取运动矢量
- amazon-web-services - 亚马逊网络服务。使用哪些?
- mysql - 生成变量的所有组合并插入临时表
- python - Selenium python google地址侧边栏结果
- firebase - 解析触发器时出错:找不到模块“firebase-admin/lib/database”
- javascript - 每秒随机从数组中选择一个新数字
- class - Flutter:将变量从 CLass A 传递到 B 到 C 类
- git - 从 .git 文件夹中删除 index.lock 文件时出现错误 EACCES Permission Denied 问题
- flutter - 在 FlatButton 翻译后 Flutter onPressed 不起作用
- c - 我无法在 C 代码中达到 BMP 文件头的大小