Mex and Matlab Code

1 vue (au cours des 30 derniers jours)
d paul
d paul le 11 Avr 2015
Commenté : Ryan Livingston le 27 Avr 2015
Using the Concept from
I have done :
function out = sum_it(a,b)
out = a + b;
>> codegen -args {2.0 3.0} sum_it.m
My Test Function :
ip1 = rand(100,1);
ip2 = rand(100,1);
for j = 1:20
tic()
for i = 1:len
Pa(i) = sum_it(ip1(i), ip2(i));
end
a(j) = toc();
tic()
for i = 1:len
Pb(i) = sum_it_mex(ip1(i), ip2(i));
end
b(j) = toc();
fprintf('%f %f\n',mean(a),mean(b))
end
Unfortunately a < b. How can it be so ??? I was expecting b <<< a by big margin ! What am I doing wrong?
0.004559 0.004008
0.002347 0.003053
0.001587 0.002737
0.001214 0.002609
0.000989 0.002450
0.000834 0.002305
0.000728 0.002175
0.000645 0.002064
0.000580 0.002015
0.000534 0.001983
0.000491 0.002014
0.000458 0.002048
0.000430 0.002079
0.000406 0.002092
0.000386 0.002094
0.000369 0.002105
0.000353 0.002124
0.000338 0.002144
0.000326 0.002146
0.000313 0.002114
  1 commentaire
Ryan Livingston
Ryan Livingston le 27 Avr 2015
Could you please format your code to make the question a bit easier to read?

Connectez-vous pour commenter.

Réponses (1)

Ryan Livingston
Ryan Livingston le 27 Avr 2015
Generally what is happening here, is that the body of sum_it calls a MATLAB built-in function plus. Such functions are already implemented in compiled code in MATLAB and generating code for them is not expected to accelerate them significantly. The documentation for acceleration describes this more under the heading Avoid Generating MEX Functions if Built-In MATLAB Functions Dominate Run Time.
The likely reason for the small slowdown is that calling a MEX function has some overhead. Because the body of sum_it is so simple, that overhead is dominating the small execution time.
If you have a larger application that you would like to accelerate, then I would suggest following the steps on that documentation page that describe using the profiler to identify the bottlenecks in your code. Once those are identified, then you can determine if they are good candidates for acceleration via MATLAB Coder and follow the steps described to generate code for those small portions.

Catégories

En savoir plus sur MATLAB Coder dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by