Tôi đang tìm một cách đáng tin cậy để xác định mức sử dụng bộ nhớ GPU hiện tại tốt nhất là trong C++/C. Tôi đã tìm thấy nhiều cách để lấy sử dụng như các phương pháp sau:Sử dụng bộ nhớ GPU progamatically
- Direct Draw
- dxdiag
- WMI
- DXGI
- D3D9
Những phương pháp này không đủ chính xác (nhiều nhất là một trăm megabyte). Tôi đã thử nvapi.h
nhưng tôi không thấy bất cứ điều gì mà tôi có thể sử dụng để truy vấn bộ nhớ. Tôi đã suy nghĩ chỉ có các phương pháp được liệt kê ở trên là các lựa chọn duy nhất nhưng sau đó tôi chạy vào một công cụ gọi là GPU-Z
cho tôi đọc bộ nhớ chính xác tới megabyte gần nhất ngay cả khi OpenCL chạy gần như đầy tải trên 580GTX của tôi. Tôi có thể xác minh tôi đang ở mức cao nhất trong mức sử dụng bộ nhớ của mình bằng cách phân bổ thêm vài megabyte trước khi OpenCL trả lại mã trả về Object_Allocation fail
.
Nhìn vào hàng nhập khẩu từ GPU-Z, tôi thấy không có gì thú vị khác hơn:
kernel32.dll: LoadLibraryA, GetProcAddress, VirtualAlloc, VirtualFree
tôi đoán được LoadLibraryA
phải được sử dụng để tải một dll để truy vấn bộ nhớ GPU và cảm biến. Nếu dll này tồn tại, nó tồn tại ở đâu? Tôi đang tìm một giải pháp cho AMD và NVidia nếu có thể (sử dụng các API khác nhau là ok).
"nhất ra một trăm MB của tôi" - những gì được biết đến tài liệu tham khảo tốt mà bạn đang sử dụng? –
Tôi đang sử dụng GPU-Z làm tài liệu tham khảo vì nó mang lại cho tôi độ chính xác mà tôi cần. – roboto1986
Và điều gì mang đến cho bạn sự tự tin rằng GPU-Z đúng nơi những người khác sai? –