В чем разница ч/б RDMA_CREATE_QP/RDMA_CREATE_EP и IBV_CREATE_QP?

Насколько я понимаю, IBV_CREATE_QP() и RDMA_CREATE_QP буквально делают одно и то же. Если я сначала вызвал ibv_create_qp(), нужно ли мне вызывать другой, когда я устанавливаю соединение с помощью API ibrdmacm?

Более того, диф ч/б создает QP и EP?


person Barney_su    schedule 15.10.2020    source источник


Ответы (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, но вам нужно убедиться, что вы заполняете id RDMA->qp возвращенной парой очереди, если вы хотите выполнять какие-либо дальнейшие операции с глаголами RDMA или диспетчером соединений RDMA. .

rdma_create_ep, конечная точка создания RDMA, объединяет несколько вызовов RDMA в один вызов. К ним относятся rdma_create_id(), rdma_create_qp(), rdma_resolve_addr() и rdma_resolve_route().

person edt11x    schedule 16.12.2020