Video over PCIe

Hi,
I wish to output the GPU generated frames to a remote FPGA memory via PCIe instead of display port output.

  1. I saw there is a GPUdirect mechanism but couldn’t find any guides walkthorugh regarding this subject.
    Where can I find some getting started help?

  2. Is it possible to redirect only part of the gpu generated frames? I mean that some of them will output to the display port and others to the FPGA memory

  3. Who controls the transfers? the CPU/GPU/FPGA? I mean who tells the GPU to redirect its output and to where

  4. Are there any working examples?

Thanks

1 Like

Hi,
Would like to get more information about the setup. Do yo connect our GPU card to PICe x8 slot on Orin developer kit and would like to transfer the frame data to Orin SoC system? Please also share which GPU card you are using.

Hi,
The GPU is the one inside the AGX Orin SoM.
I wish to connect the AGX SoM (currently devkit) to an external FPGA and redirect the AGX GPU’s frames into the FPGA memory instead of output them outside via display port.

Hi,
So the external FPGA is connected to PCIe x8 slot on Orin developer kit? Is Orin SoM in PCIe RP mode or EP mode?

Currently they are not connected but they will. I try to learn how to achieve my goal before connecting them physically.

From your questions I learn that the FPGA should use a x8 slot to connect to the SoM (I think less lanes will work as well but only slower) and is there importance who is the root complex and who is the end point?

That’s the goal - to redirect the SoM GPU’s frames into the FPGA memory

any help regarding this subject?

Hi,

You can find an example in the below link:

Is it possible to redirect only part of the gpu generated frames? I mean that some of them will output to the display port and others to the FPGA memory

Suppose yes, you can control the pointer to pass to the FPGA.
Please note that to allow RDMA, the buffer needs to be allocated with cudaHostAlloc.

Thanks.

Thanks.
Last follow up question:
Can I use this method to redirect the drawn GUI as well?

Hi,

You can redirect the GPU buffer if the memory is allocated with cudaHostAlloc.
So if the data for GUI is a cudaHostAlloc buffer, you can redirect.

Thanks.

Thank you for your answer.
I apologise, but I’m not familiar with the GUI drawing process.
Where can I find the code which draws the GUI and check if it uses cudaHostAlloc?

Hi,

There are some variants. Could you share more details about your use case?
Do you use QT or EGL? Any sample code we can refer to?

Thanks.

I apologies for my lack of knowledge regarding this subject.

I’m not familiar with these terms and didn’t write any sample code.

My question is, if its possible to utilize the GPUDirect RDMA mechanism in order to send the GUI frames draw by the AGX Orin GPU via PCIe.

I mean to get involved in the GUI drawing mechanism and send the frames outside in addition do output them via DP.

Thanks

Hi,

Only the opposite is supported.
RDMA needs the buffer to be allocated with cudaHostAlloc.

So the problem will be if you can render a GUI with a preallocated cudaHostAlloc buffer.
Based on this, please check which library or application will be used for GUI in your use case.

Thanks.

thank you for your answer.

Maybe you know to direct me to which kernel module responsible for drawing the GUI by sending tasks to the GPU and redirect the output to display port? (then ill be able to view the GPU code)

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.