В.NET 3.5 C# есть способ определить, активен ли режим NVIDIA SLI
Для видеокарт NVIDIA у вас может быть две, работающие как одна (SLI). Для настольного приложения.NET мне нужно убедиться, что SLI включен. Это возможно?
1 ответ
Это должно быть возможно.
Согласно документации nVidia, вы можете запросить это через 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");
}
}