我想知道我是否可以使用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()
}
最佳答案
不,这不可能。
K20m可以在Linux上与OpenGL图形一起使用(with some effort),但是至少在Windows 8.x或更高版本中,您将无法在Windows中将K20m用作D3D设备。
K20m不会在PCI配置空间中发布VGA类代码,这意味着无窗口或NVIDIA驱动程序将在此设备上构建适当的Windows显示驱动程序堆栈。否则,您将无法将其用作D3D设备。通过nvidia-smi
实用程序可以看到其他证据,该实用程序将显示K20设备处于TCC模式。将其切换为WDDM模式的任何尝试都将失败(以某种方式-直到重新启动后,该失败才会变得明显)。
如果找到了可能的另一个GPU(例如Tesla C2075),则它总是表示(其中包括)GPU正在PCI配置空间中发布VGA类代码。
This常规文档介绍了幻灯片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中,您可以使用配置空间读取器查看差异,也可以在设备管理器中查看。 Tesla C2075应该出现在“显示适配器”下面,而K20m应该出现在其他地方。