Я новичок в области высокопроизводительных вычислений (HPC), но у меня будет проект HPC, поэтому мне нужна помощь для решения некоторых фундаментальных проблем.
Сценарий применения прост: несколько серверов, соединенных сетью InfiniBand (IB), один сервер для Master, другие для слейвов. только мастер читает/записывает данные в памяти (размер данных варьируется от 1 КБ до нескольких сотен МБ) в ведомые устройства, в то время как ведомые устройства просто пассивно хранят данные в своей памяти (и выгружают данные в памяти на диски в нужное время ). Все вычисления выполняются в ведущем устройстве перед записью или после чтения данных в/из ведомых устройств. Требованием к системе является малая задержка (небольшие области данных, например, от 1 КБ до 16 КБ) и высокая пропускная способность (большие области данных, несколько сотен МБ).
Итак, мои вопросы
<сильный>1. Какой конкретный путь нам больше подходит? MPI, примитивная библиотека IB/RDMA или ULP поверх RDMA.
Насколько я знаю, существующая библиотека интерфейса передачи сообщений (MPI), примитивная библиотека IB/RDMA, такая как libverbs
и librdmacm
, и протокол уровня пользователя (ULP) поверх RDMA могут быть возможными вариантами, но я не очень уверен в применимых областях их применения.
<сильный>2. Должен ли я сделать некоторые настройки для ОС или сети IB для повышения производительности?
Существует документ [1] от Microsoft. объявляет, что
Мы улучшили производительность в восемь раз благодаря тщательной настройке и изменениям в операционной системе и сетевом диске.
Со своей стороны, я постараюсь избежать такой настройки производительности, насколько это возможно. Однако, если настройка неизбежна, я постараюсь изо всех сил. Сеть IB нашей среды — это Mellanox InfiniBand QDR 40Gb/s, и я могу свободно выбирать ОС Linux для серверов.
Если есть идеи, комментарии и ответы приветствуются! Заранее спасибо!
memcpy
). - person foool   schedule 28.05.2015