2016-07-27 135 views
0

我有一個名爲Titan Z的雙GPU卡。我有Matlab 2016a試圖解決爲不同'b'值設置的稀疏Ax=b方程。泰坦Z有兩個GPU和6 GB RAM每個GPUMatlab雙GPU內存使用

這是問題所在。

  1. 如果我解決1個GPU一個Ax=b問題,比方說,一個 2GB,MATLAB副本這個矩陣的「A」矩陣大小,每個GPU的顯存。 GPU-Z報告 每個GPU擁有2 GB的數據,僅1 GPU工作
  2. 如果我解決兩個Ax=b問題2 GPU,讓我們說「A」 2GB,MATLAB再次複製這個矩陣的矩陣大小,每個GPU的vram兩次。現在GPU-Z報告每個GPU有4GB數據,兩個GPU同時工作。
  3. 如果我嘗試同時解決'4GB'問題Nvidia驅動程序由於Vram不足而崩潰。但我可以在一個GPU上解決它。不是同時在2個GPU上。

問題是Matlab的拷貝那些矩陣兩次,當不需要它,更有趣的是,它這樣做時兩個GPU使用完全相同的「A」矩陣但不同的「b」向量。

我該如何解決這個問題?

+0

你能分享你的代碼嗎?你使用'spmd'還是類似的? – Edric

+0

它其實很簡單。我使用gpuArray進行分配和傳輸,之後使用parfor循環(i = 1:2)來解決方程組。在GPU上。 – coercion

+0

所以,你不是在'parfor'循環中構建'gpuArray'?如果你在'parfor'裏面構建'gpuArray',會發生什麼? – Edric

回答

0

對我自己的問題有點晚了,但這裏是解決方案。 禁用Nvidia控制面板中的多GPU模式解決了這個問題。 基本上它禁用sli和gpus可以獨立運行。這很簡單。