特斯拉k20m与Direct3D 11的互操作性

Tri*_*leS 2 cuda direct3d tesla

我想知道我是否可以使用Nvidia Tesla K20和Direct3D 11?

我想使用Direct3D渲染图像,然后使用CUDA处理渲染的图像,[我知道如何计算CUDA的互操作性].

特斯拉k20没有显示适配器(物理远程适配器)

我设法使用特斯拉C2075,但是使用K20我无法接收设备适配器(EnumAdapters命令).

是否可以使用特斯拉K20和Direct3D?

坦率地说,这段代码是用记事本写的

谢谢

  IDXGIFactory* factory = 0 ; 
  IDXGIAdapter* adapter = 0 ; 
  int dev = 0;  

  CreateDXGIFactory( __uuidof(IDXGIFactory) , (void**)&factory); 
  for (unsigned int i = 0 ; !adapter ; ++i ) 
  {
         if ( FAILED( factory->EnumAdapters (i , &adapter )))
                   break; 
         if ( cudaD3D11GetDevice(&dev , adapter) == cudaSuccess )
                   break; 
         adapter->Release()
  }
Run Code Online (Sandbox Code Playgroud)

Rob*_*lla 6

不,这是不可能的.

K20m可以在Linux上使用(通过一些努力)OpenGL图形,但至少通过Windows 8.x,你将无法在Windows中使用K20m作为D3D设备.

K20m不会在PCI配置空间中发布VGA类代码,这意味着其他窗口和NVIDIA驱动程序将在此设备上构建正确的Windows显示驱动程序堆栈.没有它,你不能将它用作D3D设备.通过该nvidia-smi实用程序可以看到其他证据,这将显示K20设备处于TCC模式.任何将其切换到WDDM模式的尝试都将失败(以某种方式 - 在重新启动之前故障可能不明显).

如果您发现可能的另一个GPU(例如Tesla C2075),它总是意味着GPU正在PCI配置空间中发布VGA类代码.

一般文档涵盖幻灯片62上的PCI报头中的类代码位置.该ECN摘录了类代码定义.VGA类代码是0x0300,而3D控制器类代码(我相信是K20m发布的)是0x0302.

以上有一些有限的例外情况.例如,一种配置中的Tesla M2070Q不会发布VGA类代码(有另一种配置,它发布VGA类代码),而是发布3D控制器类代码.在此配置中,Microsoft RemoteFX可将其用作多个Hyper-V VM的共享图形设备.在这种情况下,VM中可以实现一些D3D功能(通过DX9).

在linux中,使用lspci命令可以明显看出"3D控制器"和"VGA控制器"之间的区别.

在Windows中,您可以获取配置空间阅读器来查看差异,或者您可以查看设备管理器.特斯拉C2075应显示在"显示适配器"下,而K20m将显示在其他地方.

  • 这是我的理解.我认为网络上有关于此主题的一些错误信息.不过我过去和@DanielMoth一起工作过,我相信[他对这个主题非常了解](https://social.msdn.microsoft.com/Forums/vstudio/en-US/d0aa5805-edee-4d94 -860e-3761f3e2d9b5/C-AMP-上亚马逊-EC2-GPU-机-NO的GPU-可用).我的观点是,任何NVIDIA GPU上都应该支持C++ AMP,这些GPU可以在Windows上的WDDM模式下(即*是*).C++ AMP基于DirectCompute.DirectCompute(AFAIK)正式成为DirectX技术. (2认同)