Для видеокарт NVIDIA у вас может быть два рабочих, как один (SLI). Для настольного приложения .NET мне нужно проверить, что SLI включен. Это возможно?В .NET 3.5 C# есть ли способ определить, активен ли режим NVIDIA SLI
ответ
Это должно быть возможно.
Согласно документам nVidia, вы можете запросить этот via NVCPL.DLL (понравился документации).
Вызов, который будет использоваться, - NvCplGetDataInt()
(стр. 67), с аргументом NVCPL_API_NUMBER_OF_SLI_GPUS
или NVCPL_API_SLI_MULTI_GPU_RENDERING_MODE
вы должны получить требуемую информацию.
Для доступа к этой информации вам потребуется P/Invoke. Если это нормально для статистической ссылки NVCPL.DLL
, вам просто нужно создать правильный импорт (статический внешний метод), и все в порядке. В противном случае вы также можете выбрать способи GetEntryPoint
и использовать класс Marshal
для создания экземпляра делегата (объявленного правильными аргументами), который представляет вызываемую функцию.
Edit: Следующий фрагмент кода может вам начать (у меня нет карты 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");
}
}
- 1. Лучший способ определить, установлен ли .NET 3.5
- 2. Есть ли способ узнать, активен ли режим locationManager или остановлен?
- 3. nVidia SLI Tricks
- 4. C# (.NET 3.5) Есть ли способ получить это имя функции?
- 5. Есть ли способ извлечь .NET 2.0 из .NET 3.5?
- 6. Есть ли способ сделать это с делегатами в .Net 3.5?
- 7. Есть ли GUID.TryParse() в .NET 3.5?
- 8. Как определить, активен ли режим разработчика в окнах 10?
- 9. Есть ли способ установить Theano без Nvidia
- 10. Есть ли способ получить классы из System.Collections.Concurrent в .NET 3.5?
- 11. Есть ли способ эмулировать UseLayoutRounding в WPF с .Net 3.5
- 12. Как определить, активен ли QDialog.exec()
- 13. .NET 3.5 - есть ли другой способ для Zip-файлов
- 14. Есть ли способ установить .NET 3.5 Framework без перезагрузки?
- 15. Есть ли способ определить, заблокирован ли объект?
- 16. Как определить, активен ли поток
- 17. Как определить, активен ли Dispatcher.DisableProcessing?
- 18. Есть ли способ определить, переопределена ли функция?
- 19. Есть ли GtkSharp для .Net framework 3.5?
- 20. Есть ли способ определить направление текста в .NET Portable Library?
- 21. Есть ли способ определить, установлен ли LC_CTYPE в C?
- 22. Есть ли способ узнать, активен ли раскрывающийся список Tkinter optionmenu?
- 23. Есть ли способ определить действие для необработанных исключений в приложении WinForms .NET 3.5?
- 24. Есть ли способ сопоставить перечисление с другим перечислением в C# .NET 3.5?
- 25. Определить, активен ли блок в Concrete5
- 26. Есть ли способ определить, произошло ли исключение?
- 27. Есть ли лучший способ определить endianness в .NET, чем BitConverter.IsLittleEndian?
- 28. Есть ли простой способ определить зависимости .NET 1.1 в решении?
- 29. Есть ли способ определить, отключена ли анимация
- 30. Есть ли способ определить перечисление в python?
nvcpl API теперь осуждается. Это больше не работает :( – docdocdoc9