In .NET 3.5 C#gibt es eine Möglichkeit, festzustellen, ob der NVIDIA -SLI -Modus aktiv ist

StackOverflow https://stackoverflow.com/questions/1890456

  •  19-09-2019
  •  | 
  •  

Frage

Für NVIDIA -Grafikkarten können Sie zwei als eine (SLI) arbeiten lassen. Für eine .NET -Desktop -Anwendung muss ich in der Lage sein, zu überprüfen, ob SLI aktiviert ist. Ist das möglich?

War es hilfreich?

Lösung

Das sollte möglich sein.

Nach den Nvidia -Dokumenten können Sie dies abfragen via nvcpl.dll (gern Dokumentation).

Der zu verwendende Anruf ist NvCplGetDataInt() (Seite 67) mit dem Argument NVCPL_API_NUMBER_OF_SLI_GPUS oder NVCPL_API_SLI_MULTI_GPU_RENDERING_MODE Sie sollten die erforderlichen Informationen erhalten.

Um auf diese Informationen zuzugreifen, benötigen Sie P/Invoke. Wenn es in Ordnung ist, statistisch zu verknüpfen NVCPL.DLL Sie müssen nur den richtigen Import (statische externe Methode) erstellen und es geht Ihnen gut. Andernfalls können Sie auch die auswählen LoadLibrary und GetEntryPoint Weg und benutze die Marshal Klasse zum Erstellen einer Instanz eines Delegierten (mit den richtigen Argumenten deklariert), die die zu aufgerufene Funktion darstellt.

Bearbeiten:Das folgende Ausschnitt kann Ihnen den Einstieg bringen (ich habe jedoch keine Nvidia -Karte, also ist das völlig ungetestet und auf eigenes Risiko;)):

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");
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top