我正在尋找一種可靠的方法來確定當前的GPU內存使用情況,最好在C++/C中。我已經找到了獲得使用類似下面的方法很多:獲取GPU內存使用情況
- 直接繪製
- 輸入dxdiag
- WMI
- DXGI
- D3D9
這些方法都不夠準確(最重要的是一百兆字節)。我嘗試了nvapi.h
,但我沒有看到任何可以用來查詢內存的東西。我在想只有上面列出的方法是唯一的選擇,但後來我遇到了一個名爲GPU-Z
的工具,即使OpenCL在我的580GTX上運行幾乎滿負荷時,也可以給我精確的內存讀數,以達到最接近的兆字節。我可以通過在OpenCL返回Object_Allocation fail
返回碼之前分配幾兆字節來驗證我處於內存使用的高峯期。
看着從GPU-Z進口,我看不是什麼有趣的其他:
KERNEL32.DLL:LoadLibraryA,GetProcAddress的,的VirtualAlloc,VirtualFree
我的猜測是,必須使用LoadLibraryA
加載一個DLL來查詢GPU內存和傳感器。如果這個DLL存在,它住在哪裏?如果可能的話,我正在尋找適用於AMD和NVidia的解決方案(使用不同的API即可)。
「最關我一百兆字節」 - 那是什麼您使用的是已知良好的參考? – 2013-05-10 13:47:28
我使用GPU-Z作爲我的參考,因爲它給了我需要的準確性。 – roboto1986 2013-05-10 14:04:54
什麼讓你相信GPU-Z在其他人錯誤的地方? – 2013-05-10 14:33:29