c - Matlab Coder 是否仅生成单线程 C 应用程序?

标签 c multithreading matlab image-processing matlab-coder

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/

相关文章:

matlab - 为 matlab 匿名函数设置 'help'

c - C 如何解析命令行参数?

java - 在 Web 应用程序 DAO 中使用 StringBuffer 或 StringBuilder

c++ - 从工作线程安全地登录?

android - ASyncTasks 阻止其他人

python - 如何在matlab中进行日志记录: anything similar to logging like python

c - 内存块/页

创建N个线程

c - c中的递归函数中的内存泄漏

arrays - linspace 相对于冒号 ":"运算符的优势是什么?