В чем разница между b /w RDMA_CREATE_QP / RDMA_CREATE_EP и IBV_CREATE_QP?

#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().