Jump to content
  • Advertisement
Sign in to follow this  
thmfrnk

DX11 DirectCompute and Multi-GPU

This topic is 787 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi,

 

I am working actually on my compute shader based fluid simulation and I thought to power it up by testing two GTX980 in SLI. Finally I noticed that there is no benefit because he's using only one GPU. However I think it could be possible by using two DX11 devices bound to booth adapters. In that case the first could run the rest of my application (deferred lighting stuff and others) and the second one haves enough power for my phyisics. So my questions are: Is that possible? I think I would need some kind of device independend buffers to share the result of the physics.

 

Does everyone have some expirience here?

 

Thx,

Thomas

Share this post


Link to post
Share on other sites
Advertisement

IIRC DX11 won't allow you to share resources between GPU's you'd need DX12 to do that.  So you'd need to copy data to a 'bounce buffer' in system memory instead of directly from one GPU to the other.  Also I seem to recall someone saying SLI needs to be programmed for explicitly... but don't quote me on that.  But anyway DX12 has something called explicit multi-GPU which is what you're looking for.

Share this post


Link to post
Share on other sites

mhh this is really frustrating, because I am bound to slimdx and there is no dx12. But the strange thing is, that its already possible for PhysX to move this to the second card and I don't think that PhysX is moving all the data back to CPU.

Share this post


Link to post
Share on other sites

IIRC Physx uses CUDA so maybe there are Nvidia proprietary libraries that will let you do it.  If I were you I would look into amd and nvidia proprietary libraries and there multi-gpu programming stuff before you give up.  However not that many people have multiple gpu's so is it really that big a deal?  I wish I could help you more but my knowledge is with dx12 multi-gpu.  Heres a link in case you want to take a look.  https://msdn.microsoft.com/en-us/library/windows/desktop/dn933253(v=vs.85).aspx

Share this post


Link to post
Share on other sites

In the case of an SLI setup, there is no way to individually target the specific GPUs in D3D11. Things like PhysX are implemented using driver extensions which allow things like that.

If you just have a system with two GPUs in it that are not linked, then they show up through DXGI as two separate adapters, and you can create two devices on them. However, there is no real way to synchronize them.

 

If you wanted to have one of them do physics and feed it back to the CPU, and the other do rendering and feed it to the display, that would work just fine. But having the physics fed directly to the other device in a queued manner (i.e. record physics, record graphics, execute physics, execute graphics) isn't really possible, you'd have to have the CPU step in (i.e. record physics, execute physics, record graphics, execute graphics).

Share this post


Link to post
Share on other sites

It's either SLI or multi-device. One excludes the other.

 

My experience with DirectCompute is dated and possibly obsolete at this point. Nonetheless, I still remember how painful it was. FXC took bloody hours to compile my kernels as opposed to OpenCL which mangled them in less than a minute and produced 30% higher perf as result.

 

Historically, multi-device implies some low-perf path in the driver. Caution advised. Anyhow,

 

Hi,

 

I am working actually on my compute shader based fluid simulation and I thought to power it up by testing two GTX980 in SLI. Finally I noticed that there is no benefit because he's using only one GPU. 

How did you determine this? The main point of SLI is that it's supposed to be transparent to the application. The promise is that they sync the devices for you (bleh).

Indeed, performance SLI requires explicit support as there are a couple hundreds issues to deal with and ways to shoot yourself in both perf feet.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!