Poszukuję niezawodnego sposobu określenia bieżącego użycia pamięci GPU, najlepiej w C++/C. Znalazłem wiele sposobów uzyskiwania wykorzystanie podobnego następujących metod:Uzyskiwanie progresywnego wykorzystania pamięci GPU
- Direct Draw
- dxdiag
- WMI
- DXGI
- D3D9
Metody te nie są wystarczająco dokładne (o ponad sto megabajtów). Próbowałem nvapi.h
, ale nie widziałem niczego, co mógłbym użyć do zapytania o pamięć. Myślałem tylko, że powyższe metody były jedynymi opcjami, ale wtedy natknąłem się na narzędzie o nazwie GPU-Z
, które daje mi dokładne odczyty w pamięci do najbliższego megabajta, nawet jeśli OpenCL uruchamia prawie pełne obciążenie mojego 580GTX. Mogę potwierdzić, że jestem u szczytu mojego użycia pamięci przez przydzielenie kilku dodatkowych megabajtów zanim OpenCL zwróci kod powrotu Object_Allocation fail
.
Patrząc na import z GPU-Z, widzę nic ciekawego inne niż:
kernel32.dll: LoadLibraryA, GetProcAddress, VirtualAlloc, VirtualFree
Domyślam się LoadLibraryA
należy stosować załadować bibliotekę dll w celu wysłania zapytania do pamięci GPU i czujników. Jeśli ten plik DLL istnieje, gdzie on żyje? Poszukuję rozwiązania dla AMD i NVidii, jeśli to możliwe (używanie różnych interfejsów API jest w porządku).
„większość z moich stu megabajtów” - jaka jest znana dobre referencje, które używasz? –
Używam GPU-Z jako punktu odniesienia, ponieważ zapewnia mi dokładność, jakiej potrzebuję. – roboto1986
Co daje ci pewność, że GPU-Z jest prawidłowe tam, gdzie inni się mylą? –