IBV_CREATE_SRQ(3), IBV_DESTROY_SRQ(3)

作成日:2014.04.28
修正日:2014.07.22

NAME

ibv_create_srq, ibv_destroy_srq - Shared Receive Queue (SRQ) を作成・破壊する。

SYNOPSIS

#include <infiniband/verbs.h>

struct ibv_srq *ibv_create_srq(struct ibv_pd *pd, struct
                               ibv_srq_init_attr *srq_init_attr);

int ibv_destroy_srq(struct ibv_srq *srq);

DESCRIPTION

ibv_create_srq() は protection domain pd 内に属性情報 srq_init_attr に基づく shared receive queue (SRQ) を作成する。

Table 1: struct ibv_srq_init_attr 構造体
メンバ名説明
srq_contextvoid *ユーザープログラムが自由に設定してよい領域。
attrstruct ibv_srq_attrTable 2 を参照。
Table 2: struct ibv_srq_attr 構造体
メンバ名説明
max_wruint32_tSRQ の最大同時登録 Receive WR 数を指定。この値は ibv_query_device() で取得できる max_srq_wr 以下の値である必要がある。ただし SRQ を使う場合は無視される。
max_sgeuint32_tSRQ に登録する Receive WR の最大 scatter/gather 組数を指定。この値は ibv_query_device() で取得できる max_srq_sge 以下の値である必要がある。
srq_limituint32_tSRQ のリミットを規定。

ibv_destroy_srq() は SRQ srq を破壊する。

RETURN VALUE

ibv_create_qp() は成功した場合、作成した SRQ へのポインタを返す。 失敗した場合は NULL を返す。

ibv_destroy_qp() は成功した場合、0 を返す。 失敗した場合は、エラーの原因を示す値(errno と同じ)を返す。

NOTES

ibv_create_srq() は、srq_init_attr->cap に指定した値が HCA の上限を越えた場合、ibv_create_srq() が失敗する HCA と、HCA 上限に合わせてキャッピングした値で SRQ を作成し srq_init_attr->cap の値を実際のパラメータに合わせて更新する HCA の二種類がある。 Mellanox ConnectX-3 は前者である。

ibv_destroy_srq()srq に関連付けられたオブジェクトを解放せずに呼び出すと失敗することがある。 また ibv_get_async_event() で取り出した非同期イベントが SRQ に関連付けられている場合、その SRQ を ibv_destroy_srq すると、その非同期イベントが ibv_ack_async_event() で承認されるまで待機させられる。 この待機には時間の指定がなく、またシグナルを受信した場合にも復帰しない。

SEE ALSO

InfiniBand Verbs API Referenceibv_alloc_pd(3)ibv_modify_srq(3)ibv_query_srq(3)

AUTHORS

原文 Dotan Barak <dotanba@gmail.com>

コメント

コメントを書き込む

TOP    掲示板    戻る
Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp