对于NVIDIA显卡,可以有两个作为一个工作(SLI)。对于.NET桌面应用程序,我需要能够检查是否启用了SLI。这个是可能的吗?
发布于 2009-12-12 04:06:23
这应该是可能的。
根据nVidia文档,您可以查询此via NVCPL.DLL (喜欢文档)。
要使用的调用是NvCplGetDataInt()
(第67页),使用参数NVCPL_API_NUMBER_OF_SLI_GPUS
或NVCPL_API_SLI_MULTI_GPU_RENDERING_MODE
应该可以获得所需的信息。
为了访问此信息,您需要使用P/Invoke。如果可以从统计上链接NVCPL.DLL
,那么只需创建正确的导入(静态外部方法)就可以了。否则,您还可以选择LoadLibrary
和GetEntryPoint
方式,并使用Marshal
类创建代表要调用的函数的委托(使用正确的参数声明)的实例。
编辑:以下代码片段可能会帮助您入门(虽然我没有nVidia卡,因此完全未经测试,风险自负; ):
public const int NVCPL_API_NUMBER_OF_GPUS =7; // Graphics card number of GPUs.
public const int NVCPL_API_NUMBER_OF_SLI_GPUS = 8; // Graphics card number of SLI GPU clusters available.
public const int NVCPL_API_SLI_MULTI_GPU_RENDERING_MODE = 9; // Get/Set SLI multi-GPU redering mode.
[DllImport("NVCPL.DLL", CallingConvention=CallingConvention.Cdecl)]
public static extern bool nvCplGetDataInt([In] int lFlag, [Out] out int plInfo);
public static void Main() {
int sliGpuCount;
if (nvCplGetDataInt(NVCPL_API_NUMBER_OF_SLI_GPUS, out sliGpuCount)) {
// we got the result
Console.WriteLine(string.Format("SLI GPU present: {0}", sliGpuCount));
} else {
// something did go wrong
Console.WriteLine("Failed to query NV data");
}
}
https://stackoverflow.com/questions/1890456
复制相似问题