RDMA Aware Programming User Manualの付録 D に記載されている Cross-Channel Communication サポートを使用しようとしています。残念ながら、特定の関数の引数の意味について少し混乱しています。
私の質問
ibv_exp_post_send()
および関数はibv_exp_post_task()
、それぞれ作業リクエスト構造体のリンクされたリストと作業リクエスト構造体のコレクション*を取ります。その構造体の cq_count と wqe_count の意味は何ですか?
struct ibv_exp_send_wr {
// ...
union {
// ...
struct {
struct ibv_cq *cq; /* Completion queue (CQ) that WAIT WR relates to */
int32_t cq_count; /* Producer index (PI) of the CQ */
} cqe_wait; /* Describes IBV_EXP_WR_CQE_WAIT WR */
struct {
struct ibv_qp *qp; /* Queue pair (QP) that SEND_EN/RECV_EN WR relates to */
int32_t wqe_count; /* Producer index (PI) of the QP */
} wqe_enable; /* Desribes IBV_EXP_WR_RECV_ENABLE and IBV_EXP_WR_SEND_ENABLE WR */
} task;
// ...
};
最初の作業リクエスト/完了の番号は常に 1 で、後続の作業リクエスト/完了は直線的に増加していますか? それとも、ibv_exp_post_task() 呼び出しの間や、いくつかのリクエストが処理された後に減少するなど、時々リセットされますか? 数値は ibv_exp_post_send または ibv_exp_post_task の間で一致していますか?
*技術的には、作業要求のリンクされたリストを含むタスクのリンクされたリストへのポインタ。