在我的項目中,我有很多MATLAB函數。對於每個函數,我會在應用程序啓動時調用Initialize函數。我試着用parallel_invoke來調用這個函數。我嘗試了幾次,總是需要更多時間,沒有這個代碼。有人可以解釋這一點嗎? 在MATLAB或Initialize函數中是否有特定的東西?Matlab函數和parallel_invoke
回答
Matlab Runtime只有一個單獨的解釋器線程,所以並行調用Matlab函數並不會帶來任何好處:當第一個函數A被調用時,MCR獲取一個鎖並在該函數退出時才釋放它。在此期間調用另一個函數B會導致嘗試獲取該鎖,然後顯然只會阻塞,直到A完成。你看到它佔用更多時間的原因可能是由於lock/parallel_invoke的開銷。
我不知道你的意思每個我所說的初始化函數功能是什麼:除非你正在使用多個MATLAB的DLL(這將AFAIK可比具有單個DLL少高性能的),你只需要調用它的Initalize /終止一次。
+1現在有意義什麼OP意味着「初始化函數」。在這裏,其他人不熟悉MATLAB編譯器的上下文:http://blogs.mathworks.com/loren/2011/02/03/creating-c-shared-libraries-and-dlls/和[評論](http: //blogs.mathworks.com/loren/2011/02/03/creating-c-shared-libraries-and-dlls/#comment-32017)Peter Webb證實了使用信號量進行鎖定的這一事實。 – Amro
我在Visual Studio 2010中使用C++ – user1913557
- 1. TBB:parallel_for和parallel_invoke
- 2. MATLAB函數和參數
- 3. Matlab函數和輸入
- 4. Matlab引擎和disp()函數
- 5. MATLAB newlin函數
- 6. MATLAB函數
- 7. MATLAB函數
- 8. Matlab discontiniuos函數
- 9. clusterdata Matlab函數
- 10. MATLAB函數
- 11. Matlab padarray函數
- 12. Matlab maxima函數
- 13. MATLAB函數conv2
- 14. Matlab repr函數
- 15. Matlab im2col函數
- 16. MATLAB importdata函數
- 17. Matlab Simulink函數
- 18. strrep MATLAB函數
- 19. matlab函數
- 20. MATLAB函數
- 21. Matlab Stepinfo函數
- 22. 函數imfindcircles Matlab
- 23. Matlab函數huge_add?
- 24. Matlab fft函數
- 25. Matlab fzero函數
- 26. Matlab評估和操作函數
- 27. matlab to R:函數調用和@
- 28. 在Matlab GUI和函數中編程
- 29. 在matlab中求和的函數
- 30. 使用MATLAB積分和匿名函數
你的問題不清楚..你在C++中使用英特爾TBB庫嗎?你如何與MATLAB集成? – Amro
其中parallel_invoke?女士? TBB?有些代碼可能會有幫助 – doctorlove