Если я работаю с CUDA, то у меня есть возможность использовать UVA (Unified Virtual Addressing) — единое адресное пространство для CPU-RAM и GPU-RAM для всех GPU. Ранее это было невозможно, и это появилось только в версии CUDA 4.0. Как я понял — это обеспечивается драйвером nVidia CUDA.
http://docs.nvidia.com/cuda/gpudirect-rdma/index.html#basics-of-uva-cuda-memory-management
Но если я хочу использовать GPU и FPGA на одном компьютере, подключенном через PCI-Express 2.0 16x а также для них использовать единое адресное пространство. Есть ли такая возможность в FPGA, похожая на nVidia UVA, что мне нужно для использования FPGA «UVA», и при этом они не будут мешать FPGA «UVA» против CUDA UVA?
Как сделать что-то подобное? http://research.microsoft.com/pubs/172730/20120625%20UCAA2012_Bittner_Ruf_Final.pdf
Вы уже нашли GPUDirect RDMA документация который, кажется, отвечает на ваш вопрос.
RDMA для GPUDirect — это функция, представленная в графических процессорах класса Kepler и CUDA 5.0, которая обеспечивает прямой путь связи между графическим процессором и одноранговым устройством с использованием стандартных функций PCI Express.
При этом хост может инициировать перемещение данных между графическим процессором и одноранговым устройством. UVA означает, что каждое устройство имеет уникальную часть виртуального адресного пространства, но это не означает, что любое произвольное устройство может получить доступ к памяти другого устройства, вам все равно нужно использовать соответствующие API.
Обратите внимание, что на самом простом уровне все, что вы просите, — это единое виртуальное адресное пространство. Процессор и графический процессор уже объединены (вот что такое UVA является), так что это полностью зависит от того, как работает ваша ПЛИС (включая драйвер). Часть RDMA — это оптимизация для перемещения данных между ними, но документация полезна для UVA в целом.
Других решений пока нет …