В.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");
    }
}
Другие вопросы по тегам