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.
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.
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.