【发布时间】:2015-11-12 02:58:53
【问题描述】:
Matlab Coder 是否只能生成单线程应用程序?
我尝试转换一些用于图像分析的 Matlab 脚本,发现 Matlab Coder 生成的代码要慢得多。这让我很困惑,因为我认为生成的 C 代码至少与 M 代码一样快或更快。然后我检查了 M 代码和生成的 C 代码都使用了多少线程。结果是 C 代码使用了 1 个线程,而 Matlab 代码使用了许多线程。在这一点上,我只能假设图像处理工具包将其功能实现为多线程的 mex 函数。
【问题讨论】:
-
也许这有帮助 stackoverflow.com/questions/18730193/… 另一个尝试是使用一些编译器选项,例如
-lpthread -
matlab 编码器为 openmp 生成编译指示,也许它们在编译期间被忽略了?你能在你的代码中找到任何与 openmp 相关的编译指示吗?至少一个 parfor 被翻译成并行代码。
标签: c multithreading matlab image-processing matlab-coder