Объединение кода Matlab и кода C / C ++ для функции Mex с использованием Matlab Coder

Ну, Matlab Coder умеет конвертировать .m файлы в mexфункционирует под некоторыми ограничениями.

Например, нельзя вызывать мекс-функции внутри .m файл, который должен быть преобразован.

Но относится ли это ограничение только к тем мекс-функциям, у которых нет исходного кода?

То есть, если у нас есть исходный код функции в C mex, и функция вызывается внутри функции Matlab, например так:

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

как описано выше, cFun() может быть написано на C с использованием mex для повышения производительности, но может быть лучше написать матричные операции в Matlab вместо C.

Поэтому, если мы можем предоставить исходный код cFun() и использовать Matlab Coder преобразовать fun() в mexМы бы выиграли как от удобства матричных операций в Matlab, так и от выполнения некоторых операций в C или даже OpenCL.

Но возможно ли это?

Спасибо!

0

Решение

Во-первых: вы можете перезвонить в MATLAB из вашего сгенерированного кода C или сгенерированного MEX-файла, используя coder.extrinsic, Если по какой-либо причине у вас есть существующий MEX-файл без исходного кода, который вам нужно вызвать, вы можете сделать это так же, как и для любой другой команды MATLAB.

Во-вторых: если у вас есть какой-либо существующий исходный код C, который вы хотели бы вызвать из вашего сгенерированного кода C или сгенерированного файла MEX, вы можете сделать это с помощью вызова coder.ceval,

Я не думаю, что есть причина, по которой вы не могли бы сделать это с помощью кода OpenCL, хотя, если вы хотите воспользоваться преимуществами кода GPU, я думаю, что встроенная функциональность GPU из Parallel Computing Toolbox будет более удобной.

2

Другие решения


По вопросам рекламы [email protected]