2013-11-19 6 views
0

Могу ли я отправлять данные через Infiniband без использования DMA-контроллера и какой самый маленький размер пакетов я могу отправить?Могу ли я отправлять данные через Infiniband без использования DMA-контроллера?

То есть, можно получить быстрый доступ к памяти удаленного CPU2-RAM от тока CPU1-Core с помощью простого указателя (то есть только x86-ASM: MOV... отправки данных в PCI-Express BAR из Infiniband адаптера) без DMA-контроллера?

пример, я могу сделать что-то подобное из CPU1:

unsigned char *rdma_ptr = get_rdma_pointer(CPU2); 
rdma_ptr[3] = 111; 

ответ

2

Короче говоря - нет. Более длинная версия: если ваша цель - написать простой код, который может это сделать, и не возиться со всеми вещами RDMA, вам понадобится некоторый слой промежуточного слоя, который сделает все это и предоставит вам легкую абстракцию. Существует несколько таких слоев, например UPC (например, Berkeley UPC implementation) или MPI (например, Open MPI) Что касается размера пакета - вы можете отправлять данные, которые являются полезной нагрузкой), но если вы хотите, чтобы пакет был отправлен, будут заголовки (я думаю, что это 20 байтов или около того, но это также зависит от протокола).

+0

Спасибо! Кроме MPI/UPC. То есть для доступа с помощью простого указателя я должен использовать некоторый слой промежуточного слоя, который выглядит как сопоставление памяти «mmap()», - которые инициируют ошибку страницы при каждом доступе к этому региону и получают/отправляют данные в/из памяти удаленного сервера через Infiniband? Однако, промежуточный слой все еще использует DMA-контроллер? – Alex

+0

@Alex Любой пакет, который принимается вашей сетевой картой (HCA) и несет данные, должен привести к тому, что что-то должно быть записано где-то в памяти хоста, и эта память предварительно выделена, предварительно зарегистрирована и закреплена, и данные будут DMA'ed. – kliteyn

 Смежные вопросы

  • Нет связанных вопросов^_^