PCI Transfer directly to GPU anytime soon?

I would like to transfer from a camera frame grabber directly to GPU. I know PCI X supports device to device transfers, even though it’s seldom used due to no standard protocol.

Assuming, I can make the frame grabber conform to any protocol (reconfigurable logic), are current NVIDIA GPUs capable of receiving the data? What would need to change to support it? Driver/API support, or does the hardware need to be updated?

Not on the roadmap to be supported anytime soon.

Wow, you answered < 1 minute after I posted. Did you even read my message, specifically saying I can make the frame grabber conform to any protocol?

I also asked what needs to change?

I just happened to be reading the forums then (I check the forums when I have a long compile, which is often!). Basically, lots of things need to change before it’s safe. Now, sharing pinned memory between the two devices in the not too distant future is far more likely.

Can’t the pinned memory allocated by Cuda be passed to a driver running in kernel space today? Or is that what you mean by the future?

I just found this.

Apparently the Quadro cards support direct transfers, so I’d like to request this feature for Tesla
as well, which I think is reasonable, especially since you pay ~$2000.

Pardon me if wrong…one way to answer your question is to lookup the drivers for the Quadro in Linux.

I just saw this:

during the initialization of the Nvidia driver:

/* find nvidia devices and set initial state */
int
nv_kern_probe
(
struct pci_dev *dev,
const struct pci_device_id *id_table
)
{

memory bus is enabled. ANd then subsequently, PCI will setup all the memory for DMA, marking them as nocache etc. Lots of mmap codes inside there, I may be wrong, but u can start from there to look for the code that setup the memory to be DMA-able by another device like frame-grabber?

Could you elaborate on “sharing pinned memory” a little bit more? Does “pinned memory” refer to memory on the host PC, or is there also pinned memory on the GPU? Or can the GPU use pinned memory on another PCI device?

Pinned memory is on the host