У меня есть несколько многоядерных компьютеров, подключенных к сети Infiniband. Я хотел бы иметь некоторые вычисления с малой задержкой в пуле разделяемой памяти с удаленными атомарными операциями. Я знаю, что RDMA - это путь. На каждом узле я бы зарегистрировал область памяти (и область защиты) для совместного использования данных.Обмен памятью RDMA
Примеры онлайн-RDMA часто фокусируются на одном соединении между однопоточным сервером и однопоточным клиентом. Теперь я хотел бы иметь многопоточный процесс на каждом из узлов Infiniband. Я очень озадачен о следующем ...
Сколько очередей пар я должен подготовить на каждом узле, для кластера из п узлов и т потоков в общей сложности? Чтобы быть более конкретным, может ли несколько потоков на одном узле совместно использовать одну парную очередь?
Сколько очередей завершения необходимо подготовить на каждом узле? У меня будет несколько потоков, выдающих удаленные операции чтения/записи/кассовой операции на каждом узле. Если они будут разделять общую очередь завершения, события завершения будут замешаны. Если потоки имеют свои отдельные выделенные очереди завершения, их действительно будет очень много.
Вы предлагаете мне иметь какие-либо существующие библиотеки вместо написания этого программного обеспечения? (hmm, или я должен написать один и с открытым исходным кодом?) :-)
Благодарим за ваши предложения (предложения).
И исходный код пар очередей (QP), очередь завершения (CQ) и общие очереди приема (SRQ) должны писать самостоятельно, или я могу получить их реализацию (как наилучшую практику) и где они могут брать? – Alex