GPUDirect RDMA вне диапазона контактного адреса Quadro p620
Я хочу реализовать FPGA-GPU RDMA на nvidia quadro p620.
Кроме того, я использовал общие ресурсы PCIe BAR (BAR0 - BAR1 - BAR2) для обработки регистров FPGA и других контроллеров фрагментов, которые не зависят от RDMA в моем пользовательском драйвере.
Управление PCIe в порядке, но прямой доступ к оперативной памяти графического процессора, которая закреплена, всегда неверен. Точно, я всегда получаю закрепленные адреса размером 64 КБ, начиная с 2955739136 (~ 2,7 ГБ), используя API nvidia_p2p_get_pages() без каких-либо ошибок, но дело в том, что объем оперативной памяти Quadro P620 составляет всего 2 ГБ!
Виртуальный адрес, полученный cuMemAlloc(), меняется каждый раз (что правильно), и я передаю этот адрес вместе с выделенным размером моему драйверу с помощью системного вызова ioctl. Кроме того, я связал свой собственный драйвер с драйвером nvidia, как сказано в документе nvidia GPUDirect RDMA.
Что ж, все звучит нормально, но физические адреса вне допустимого диапазона!. Почему? Требуется ли, чтобы адрес оперативной памяти qudro GPU был равен или превышал 4 ГБ?
Я ожидаю найти правильное решение для получения правильных физических адресов, а затем данных DMA мастером шины FPGA.
Спасибо
PS до этого я реализовал прямой доступ FPGA к системной памяти через PCIe без каких-либо проблем.