Hi,
We have a Jetson AGX Thor development kit and are trying to use the QSFP port for streaming sensor data over Ethernet directly into RAM, so we can process it with the GPU without having to first copy from one buffer to another, as we might have to using conventional Linux network sockets.
Our sensor is not a camera - rather it contains hundreds of individual streams of signal information (each sampled at 1MHz). Each UDP packet from the sensor readout board contains N samples for every channel.
We have a solution working on server hardware, using DOCA GPUNetIO, where the Ethernet packets are sent straight to device memory through GPUDirect RDMA, and are subsequently received and reordered (by a persistent kernel) into buffers of fixed length and dispatched for processing. There is no CPU involvement except for initialising the GPU pipeline, for handling the results export, and starting the processing off when a buffer is ready (for now - we are looking to move this to the GPU too at some point).
Though we can’t use DOCA on the Jetson Thor, because of the lack of a ConnectX NIC, we are hoping to still achieve zero-copy DMA streaming of the signal data from the QSFP interface to memory. I have been looking at both Camera-over-Ethernet and Holoscan, and while I have seen indications that the latter can handle non-camera signal data, it has not been clear to me how I might go about achieving our aims with either library.
Can anyone point me to any example programs for CoE or Holoscan (or some other library), which could help me in trying to develop some way of acquiring the raw packets and dumping them in memory? If I can have some kind of a ring-buffer interface, similar to how I work now with DOCA, then that would be ideal.
Please note that, if possible, we would like to avoid having to buy and use a Holoscan Sensor Bridge board. We want to achieve our goal with only the Jetson, our readout board, and suitable transceivers and cables for connecting the two via the QSFP port.
Thanks in advance for your comments.