2

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

我想使用 Direct3D 渲染图像,然后使用 CUDA 处理渲染图像,[我知道如何解决 CUDA 互操作性]。

Tesla k20 没有显示适配器(物理远程适配器)

我设法使用 Tesla C2075 做到了这一点,但是使用 K20 我无法接收设备适配器( EnumAdapters 命令)。

是否可以与 Tesla 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()
  }
4

1 回答 1

6

不,这不可能。

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

K20m 不会在 PCI 配置空间中发布 VGA 类代码,这意味着 Windows 和 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 的共享图形设备。在这种情况下,某些 D3D 功能(通过 DX9)在 VM 中是可能的。

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

在 Windows 中,您可以获取配置空间阅读器来查看差异,或者您可以在设备管理器中查看。Tesla C2075 应显示在“显示适配器”下,而 K20m 将显示在其他位置。

于 2015-06-15T14:22:40.597 回答