2015-04-22 125 views
8

我想知道是否有方法在函數使用之前檢查有多少GPU內存可用。我的代碼通常使用1.5 GB或更多的GPU內存,如果在我的程序想要使用GPU時使用GPU,我會得到一個MemoryError異常或類似的東西。如何使用PyOpenCL檢查GPU內存是否可用

我想實現某種形式的代碼,這樣我可以檢查,看看是否GPU具有足夠的可用內存,如果是的話,繼續運行,但如果沒有,請等待,直到它可用。

(最好,我想嘗試使用GPU,而不是使用try - 除了循環,如果失敗只是重試前檢查)

我檢查了PyOpenCL文檔,看看是否有相關的事情下device_info,但我找不到任何實際的說明。

回答

2

這是不可能的,實際上是OpenCL的限制,而不僅僅是PyOpenCL。見here

在NVIDIA的設備,你可以使用nvidia-ml-py。然後,你可以做這樣的事情:

from pynvml import * 
nvmlInit() 
for i in range(nvmlDeviceGetCount()): 
    handle = nvmlDeviceGetHandleByIndex(i) 
    meminfo = nvmlDeviceGetMemoryInfo(handle) 
    print("%s: %0.1f MB free, %0.1f MB used, %0.1f MB total" % (
     nvmlDeviceGetName(handle), 
     meminfo.free/1024.**2, meminfo.used/1024.**2, meminfo.total/1024.**2)) 
nvmlShutdown()