#c #infiniband #rdma
#c #infiniband #rdma
Вопрос:
Насколько я понимаю, IBV_CREATE_QP() и RDMA_CREATE_QP буквально делают одно и то же. Если я сначала вызвал ibv_create_qp(), нужно ли мне все еще вызывать другой, когда я устанавливаю соединение с использованием ibrdmacm API?
Более того, diff b / w создает QP и EP?
Ответ №1:
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 {} .
Вы все еще можете использовать ibv_create_qp() в среде RDMA verbs, но вам нужно убедиться, что вы заполнили RDMA id-> qp возвращенной парой очередей, если вы хотите выполнять какие-либо дальнейшие операции с помощью RDMA verbs или RDMA Connection Manager.
rdma_create_ep, RDMA Создает конечную точку, сворачивает несколько вызовов RDMA в один вызов. К ним относятся rdma_create_id(), rdma_create_qp(), rdma_resolve_addr() и rdma_resolve_route().