NVIDIAグラフィックカードの場合、2つを1つとして機能させることができます(SLI)。.NETデスクトップアプリケーションの場合、SLIが有効になっていることを確認できる必要があります。これは可能ですか?
質問する
777 次
1 に答える
3
それは可能であるべきです。
nVidiaのドキュメントによると、これはNVCPL.DLLを介してクエリできます(ドキュメントが好きです)。
使用する呼び出しはNvCplGetDataInt()
(67 ページ) で、引数を指定するNVCPL_API_NUMBER_OF_SLI_GPUS
かNVCPL_API_SLI_MULTI_GPU_RENDERING_MODE
、必要な情報を取得する必要があります。
この情報にアクセスするには、P/Invoke が必要です。統計的にリンクしても問題ない場合はNVCPL.DLL
、正しいインポート (静的外部メソッド) を作成するだけで問題ありません。それ以外の場合は、LoadLibrary
andの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");
}
}
于 2009-12-11T20:06:23.403 に答える