2 aja cards in a dual GPU pc?

Hi, curious if anyone has dealt with this very specific scenario before. Let me outline what’s going on:

We have a PC that has dual GPU’s, and two touch processes that are more or less identical. Each process runs on a different GPU with affinity. For the purposes of this post will call the two TD processes gpu0 and gpu1.

both gpu0 and gpu1 need access to the aja inputs, but only one td process can access the card at a time.

So, gpu0 receives 4x 4k aja inputs, and I’ve tried a variety of methods of sharing that texture data to the other TD process gpu1.

Problem is, typical shared memory style tops don’t work across gpu’s or work very poorly. NDI or Touch In/Out TOP’s work but are very unreliable in terms of performance, stuttering.

The feeds can be delayed if the delay is relatively consistent, and doesn’t stutter but have not found a way to achieve this yet.


Questions I am unsure on:

  1. can I install 2 aja cards into a pc, and have gpu0 access one card, and gpu1 access the second card, and just plug 2 into card 0 and 2 into card1?

  2. are there any other clever ways to get texture data across gpu’s with out the huge performance hit of some of the shared memory tops that do work?

1 Like

I haven’t tested GPU Direct, but without GPU Direct you can certainly have the one AJA card accessed by one GPU. It’s possible GPU Direct will work as well though.
Still no good ways to do cross-GPU sharing so far, sorry.

Hi Malcolm,

Not sure I follow, did you mean to say without gpu direct enabled more than one GPU can access one aja card? Or only one GPU can access one card no matter what?

Only one process can access an AJA card at a time, there is no way around that. If you are trying to get the same content to multiple GPUs then you need multiple AJA devices.

Thanks for clearing that up! Was afraid that might be the case

If I had similar configuration needs, I’d want to try NDI encoding hardware like “birddog 4K QUAD”, but I don’t own one yet, so I can’t share my experience. (I think if the encoding hardware has embedded timecode, the delays can be aligned using queues)

1 Like

Hey, @lucasm- I’m working on a setup sharing textures between two GPUs and am getting great performance with both Shared Mem and NDI. I’m experiencing an occasional stutter (I think it’s a frame sync issue), but it’s not due to cook time. I’m wondering if there may be something else going on in your setup?

That’s interesting to hear! Honestly never got to the bottom of why, just that it was happening for our hardware/software setup.

Ended up switching gears to sharing timing between instances using shared mem CHOP (cpu side ) and driving identical content streams deterministically.

We have the further complication of our real world setup being tied to 7 projectors and hardware we do not have direct access to, and have to schedule time to have access to, so troubleshooting these things is not easy especially with team view as the window into the OS.