.NET 3.5 C#では、NVIDIA SLIモードがアクティブであるかどうかを検出する方法はありますか

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

  •  19-09-2019
  •  | 
  •  

質問

nvidiaグラフィックスカードの場合、2つの動作を1つ(SLI)として使用できます。 .NETデスクトップアプリケーションの場合、SLIが有効になっていることを確認できる必要があります。これは可能ですか?

役に立ちましたか?

解決

それは可能です。

nvidia docsによると、これを照会できます nvcpl.dll経由 (ドキュメントが好きだった)。

使用する呼び出しはです NvCplGetDataInt() (67ページ)、議論とともに NVCPL_API_NUMBER_OF_SLI_GPUS また NVCPL_API_SLI_MULTI_GPU_RENDERING_MODE 必要な情報を取得する必要があります。

この情報にアクセスするためにODERでは、p/invokeが必要です。統計的にリンクしても問題ない場合 NVCPL.DLL 正しいインポート(静的外部メソッド)を作成するだけで問題ありません。それ以外の場合は、を選択することもできます LoadLibraryGetEntryPoint 方法と使用 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");
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top