簡體   English   中英

如何在parfor matlab循環中使用python模塊並優化計算時間?

[英]How to use python modules in parfor matlab loops and optimize computational time?

我目前正在與一個項目一起工作,在這里我使用包裝在matlab代碼內的模塊中的python函數。 代碼的matlab部分是MCMC(蒙特卡洛多鏈)計算,因此為了加快代碼的運行速度,我在群集上使用了parfor循環。

更具體地說,該算法可以認為如下:

  1. 對於 i = 1:鏈步數(==迭代數)
  2. parfor j = 1:鏈數(==工人數)
  3. 加載模塊並使用在那里定義的python函數
  4. 結束
  5. 做一些與連鎖發展有關的事情
  6. 結束

我的問題是,讓matlab使用python定義的函數的唯一方法是每個parfor迭代重新加載python模塊,但是隨着代碼的工作,這也意味着每個鏈步(parfor嵌套在內部)和我在那里度過了一段時間。

我的問題是:在matlab中使用python庫是否有更快捷的方法? (相當於MEX-?-),否則,是否有一種方法可以在開始時在每個工作程序中“存儲” python模塊信息,而無需每次我在外循環中前進時都重新加載模塊?

任何提示將非常感謝! 非常感謝

朱利亞

我相信您正在尋找pctRunOnAll 從Matlab文檔中:

如果需要在所有工作人員和客戶端上執行設置更改,這將很有用。

您應該能夠使用

  1. pctRunOnAll 加載模塊
  2. 對於 i = 1:鏈步數(==迭代數)
  3. parfor j = 1:鏈數(==工人數)
  4. 從預加載的模塊中使用python函數
  5. 結束
  6. 做一些與連鎖發展有關的事情
  7. 結束

您可能可以在此處利用parallel.pool.Constant 這使您可以設置一些“常量”數據,以供parfor循環的多次迭代,甚至多個parfor循環使用。 鏈接的參考頁顯示了如何使用函數句柄構建parallel.pool.Constant您可能希望將其作為加載模塊的函數句柄。

暫無
暫無

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

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