簡體   English   中英

如何使用多處理來更快地運行 function?

[英]How can one use multiprocessing to run a run a function faster?

我正在調用 function 並將兩個輸出保存到變量中,但此過程需要時間,因為輸出是通過求解 ODE 生成的。

是否可以使用多個內核更快地運行 function,以便更快地保存值? 如果是這樣,有人可以提供一個簡單的例子嗎?

謝謝

簡單地在多個內核上運行相同的代碼不會讓它運行得更快。 這實際上取決於您執行的任務類型。 在您決定代碼是否會從並行處理中受益之前,您需要找到以下問題的答案:

  • 您的計算序列中的步驟是否相關? 換句話說,代碼的一部分是否依賴於前面所做的計算? 或者其中一些可以並行計算? 查看Amdahl 定律,了解基於您可以並行化多少代碼的預期加速

  • 您的代碼是否涉及大量讀/寫磁盤和 memory? 還是只是大量的計算? 如果您正在對磁盤進行大量讀取和訪問,那么在您的線程等待磁盤時創建多個進程來執行其他工作可能會導致顯着的加速。 但同樣,這取決於您對上一點關於序列依賴性的回答

  • 您的代碼目前需要多長時間才能運行? 創建多個進程的開銷是否會超過順序運行所需的時間? 在您的問題中,您沒有給出具體的時間 - 如果您正在談論加速需要幾秒鍾的任務,那么與整個任務的時間相比,創建多個進程所需的時間可能很重要。 但是,如果您正在談論一項需要幾分鍾的任務,那么開銷就不會那么大

  • 您是否考慮過您的代碼是數據並行還是任務並行 如果是這樣,您可以決定是否要使用 CPU 或 GPU 進行並行化。 對於大型數學運算,請查看基於 CPU 的 Numpy 和基於 GPU 的操作的 Cupy。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM