Dans .NET 3.5 C #, y a-t-il un moyen de détecter si le mode nvidia sli est actif

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

  •  19-09-2019
  •  | 
  •  

Question

Pour les cartes graphiques NVIDIA, vous pouvez avoir deux fonctionnant comme One (SLI). Pour une application .NET Desktop, je dois être en mesure de vérifier que SLI est activé. Est-ce possible?

Était-ce utile?

La solution

Cela devrait être possible.

Selon les documents Nvidia, vous pouvez interroger ceci via nvcpl.dll (aimait la documentation).

L'appel à utiliser est NvCplGetDataInt() (page 67), avec l'argument NVCPL_API_NUMBER_OF_SLI_GPUS ou NVCPL_API_SLI_MULTI_GPU_RENDERING_MODE vous devez obtenir les informations requises.

Dans ODER pour accéder à ces informations, vous aurez besoin de P / Invoke. S'il est normal de lier statistiquement NVCPL.DLL Il vous suffit de créer l'importation correcte (méthode externe statique) et tout va bien. Sinon, vous pouvez également choisir le LoadLibrary et GetEntryPoint chemin et utiliser le Marshal classe pour créer une instance d'un délégué (déclaré avec les arguments corrects) qui représente la fonction à appeler.

Éditer:L'extrait suivant peut vous aider à démarrer (je n'ai pas de carte nvidia, donc c'est complètement non testé et à votre propre risque;)):

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");
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top