Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
15547 Discussions

Physical address of global memory in a device

Altera_Forum
Honored Contributor II
835 Views

Hello everyone, 

 

I am currently using an OpenCL-enabled Bittware S5-PCIe-HQ board and I plan to create an OpenCL codesign between GPU and this FPGA. 

 

My idea is to split kernels between both devices and communicate without using host memory (preferrably using PCIe only). I came into the idea of using of bus-addressable memory (GPUDirect for NVIDIA, DirectGMA for AMD). I've opted for AMD since NVIDIA's GPUDirect only supports CUDA. According to this brief post about DirectGMA (https://bloerg.net/2015/09/17/interfacing-opencl-with-pcie-devices.html), in order to create the GPU->FPGA communication, I need the physical memory address of the FPGA's global memory and pass that to the AMD driver. Does anyone knows if this is possible (to get this address and to write to this memory without using the standard OpenCL host-to-device functions)? 

 

Thank you in advance.
0 Kudos
2 Replies
Altera_Forum
Honored Contributor II
118 Views

If you don`t (ex)change boards in PC slots between Windows runs, then all devices will have the same physical adresses. 

A low-lewel program like PCIScope may show it physical adresses is now setted to PCIe BAR registers of board from OS, use it statically. 

In WDM and other driver models may be know the adresses of shared memoryes dinamically through device names, may be need to write own kernel mode driver.
Altera_Forum
Honored Contributor II
118 Views

Hello, 

 

thanks for your reply. The board will be statically placed, so it wouldn't be a problem to get the physical base address of the board. However, I still need the physical address of the board's global memory, and I think this is something defined by the BSP, as far as I know.
Reply