我有一些代碼,當它迭代循環時,每次處理的內容會增長一定的百分比。最初的幾次迭代需要4秒,但到了第100次,他們需要幾分鐘 - 這是一個精簡的參數選擇,因爲我打算做350次迭代。要用這個做嚴肅的研究需要花費很多時間,而且真的很不方便,只需運行一個腳本就可以將Matlab的手背在背後,直到全部完成爲止,並且最重要的是它幾乎不會一次使用多個內核。Matlab - 批處理作業不會排隊等待
我知道打開並行池將啓用並行處理。即使我無法將for
環路中的任何一個轉換爲parfor
環路,我知道將作爲batch
作業的腳本作爲後臺運行,我可以使用Matlab界面和其他7個處理器執行其他任務,而我等待這一個完成。
但是,儘管我已經啓動了本地並行池,並且已經檢查了啓動批處理作業的語法,但它並未離開「排隊」狀態。我第一次輸入batch('Script4')
並按Enter鍵,然後意識到我必須有一個變量名稱作爲工作,所以我做了run1 = batch('Script4')
。我輸入get(run1,'State')
,並檢查了Job Monitor,並告訴我它的狀態是「排隊」的。
在我來到這裏之前,我做了一些Google搜索,雖然我發現了一些問題,但在類似的體驗中,似乎是通過等待池停止使用整個CPU啓動時才解決的。但是我很久以前就開始使用我的遊戲池了(現在它仍然在運行!),並且當我輸入第一個batch
命令時,我的第一個線索是,Windows任務管理器說所有8個內核都處於0 %。
在開始執行排隊作業之前,是否需要調用或調整?
我在Windows 7 Enterprise上使用Matlab R2015a。
我試圖運行那個叫'parfor'在命令窗口中的函數,它在141秒內完成了.235秒的工作,當我移除「par」時,所以看起來工具箱正在工作。 – Post169
你應該分享你的代碼,這是分析複雜,沒有任何額外的信息。坦率的猜測,你是否有動態的代碼中的矩陣重新分配? –
我明白爲什麼改變一個矩陣的結構會混淆一個parfor循環,但這樣做是否真的會弄亂一批?我對批處理的理解是,它將腳本放在後臺運行的核心數量與其它的核心數量相同(或者更多),但它會處理所有變量,就像它正在執行命令窗口一樣,除非它不執行't,所以它可能不適合交互式程序。除此之外還有更多嗎? – Post169