Matlab Coder 只能生成单线程应用程序吗?
我尝试转换一些用于图像分析的 Matlab 脚本,发现 Matlab Coder 生成的代码要慢得多。这让我感到困惑,因为我认为生成的 C 代码至少与 M 代码一样快或更快。然后我检查了 M 代码和生成的 C 代码使用了多少线程。结果是 C 代码使用了 1 个线程,而 Matlab 代码使用了很多线程。在这一点上,我只能假设图像处理工具包将其功能实现为多线程的 mex 函数。
最佳答案
虽然一般来说生成的代码预计会更快,但也有一些异常(exception)。 matlab 使用的某些实现不适用于生成的代码。我没有关于技术背景的引用,但我认为这些是 fortran 和/或汇编程序编写的库。此类函数的示例是 eig
which is known to produce different (correct) results in generated code.
matlab coder 附带一个代码示例 explains how a parfor is translated to openmp code .作为第一步,请确保您的代码包含与 openmp 相关的编译指示。如果不行,请尝试使用 parfor 循环重写您的代码。
在最后一步中,确保您的编译器配置为使用 openmp。
关于c - Matlab Coder 是否仅生成单线程 C 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32084848/