NVIDIA 그래픽 카드의 경우 SLI (working as one)를 사용할 수 있습니다. .NET 데스크탑 응용 프로그램의 경우 SLI가 활성화되어 있는지 확인할 수 있어야합니다. 이것이 가능한가?.NET 3.5 C#에서는 NVIDIA SLI 모드가 활성화되어 있는지 감지하는 방법이 있습니까?
3
A
답변
3
가능해야합니다.
nVidia 문서에 따르면 via NVCPL.DLL (문서 선호)을 쿼리 할 수 있습니다.
사용할 전화가 NVCPL_API_NUMBER_OF_SLI_GPUS
또는 NVCPL_API_SLI_MULTI_GPU_RENDERING_MODE
인 NvCplGetDataInt()
(67 페이지)이고 필요한 정보를 얻어야합니다.
이 정보에 액세스하려면 P/Invoke가 필요합니다. 통계적으로 NVCPL.DLL
을 연결하는 것이 좋으면 올바른 가져 오기 (정적 외부 메서드)를 만들어야하며 괜찮습니다. 그렇지 않은 경우 LoadLibrary
및 GetEntryPoint
웨이를 선택하고 Marshal
클래스를 사용하여 호출 할 함수를 나타내는 대리자 (올바른 인수로 선언 된)의 인스턴스를 만들 수 있습니다.
편집 :가 은 다음 코드는 당신이 (즉, 완전히 검증되지 않은 당신의 자신의 위험에 그래서 나는, 비록 엔비디아 카드가없는) 시작 수) :
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");
}
}
nvcpl API 지금 더 이상 사용되지 않습니다. 이것은 더 이상 작동하지 않습니다 : ( – docdocdoc9