我在我們的集羣中有一臺主機,其中有8個Nvidia K80
s,我想設置它以便每個設備最多可以運行1個進程。之前,如果我在主機上運行多個作業,並且每個作業都使用大量內存,則它們都會試圖擊中同一設備並失敗。Cuda計算模式和'CUBLAS_STATUS_ALLOC_FAILED'
我將所有設備設置爲通過nvidia-smi -c 3
來計算模式3(E. Process
),我相信這樣做是爲了讓每個設備只能從一個CPU進程接受作業。我再運行2個職位(每個只需要大約〜150 MB
出的設備上存儲12 GB
)沒有指定cudaSetDevice
,但第二個作業將失敗,ERROR: CUBLAS_STATUS_ALLOC_FAILED
,而不是去第二個可用的設備。
我對this網站的解釋進行了假設建模,並期望每個作業能級聯到下一個設備上,但它不起作用。有什麼我失蹤?
更新:我在多個不同的實例中使用gpuArray
運行Matlab
,並且它正確地將Matlab
作業級聯到不同的設備上。因此,我相信我在操作系統級別正確設置了計算模式。除了cudaSetDevice
,什麼可能會迫使我的CUDA
代碼鎖定到設備0?
實際上,我使用的是一個工作調度程序,但一直沒有得到它與設備發揮很好 - 因此我決心只是將每個設備鎖定到一個進程中。另外...我們使用7.0時間重新映像到7.5,看看它是否修復了事情! – drjrm3