0

好吧,Matlab Coder 能够在某些限制下将.m文件转换为函数。mex

例如,不能在.m要转换的文件中调用 mex 函数。

但是这个限制是否只针对那些我们没有源代码的 mex 函数?

也就是说,如果我们有一个函数的 C mex 源代码,并且该函数在一个 Matlab 函数内部被调用,像这样:

function result = fun() %#codegen
a = ...; %complex large-scale matrix operations 
result = cFun(a);
end

如上所述,cFun()可以使用 mex 用 C 编写以提高性能,但在 Matlab 中而不是 C 中编写矩阵运算可能会更好。

因此,如果我们能提供转换成的源代码cFun()和使用,我们将受益于 Matlab 中矩阵运算的便利性,以及 C 甚至 OpenCL 中某些运算的性能。Matlab Coderfun()mex

但有可能吗?

谢谢!

4

1 回答 1

2

首先:您可以从生成的 C 代码或生成的 MEX 文件中调用 MATLAB,使用coder.extrinsic. 如果由于某种原因您有一个没有需要调用的源代码的现有 MEX 文件,您可以像处理任何其他 MATLAB 命令一样执行此操作。

其次:如果您想从生成的 C 代码或生成的 MEX 文件中调用一些现有的 C 源代码,您可以通过调用coder.ceval.

我认为你没有理由不能用 OpenCL 代码做到这一点,但如果你想利用 GPU 代码,我认为 Parallel Computing Toolbox 的内置 GPU 功能会更方便。

于 2014-04-24T17:41:00.343 回答