If you need to speed up your matlab code this is this something for you. This is NOT a replacement for the "MATLAB Compiler" but a great complement. It can do some optimizations that MATLAB compiler or JIT does not by compiling m-files or MATLAB expressions.
Expressions that operates element by element on large arrays can be much faster if it operates more local. By compiling the expression with a C-compiler it can perform all operation on each element before going to next element.
MATLAB normally executes one operation at a time on all elements before going on to next operator. ITERATOR generates (and compiles) c-source with the expression and all interfacing between MATLAB and the expression. ITERATOR supports converting a MATLAB expression with scalar only operations, "SCALARLAB", but it lets that expression iterate over all elements in all arrays and thereby getting it vectorized. This makes ITERATOR excellent to vectorize algorithms which that normally is impossible to vectorize in an efficient way.
As the operation works more localy the bad effect of memory bandwidth limitation (in ordinary MATLAB) is decreased and the performances of the CPU is better used. This makes it succesfull to use threads and multiple CPUs on at least the more complex expressions. With options to ITERATOR you can use multiple CPUs mostly without any changes to your expressions.
iterator R=mypyt(A,B) R=sqrt(A.*A B.*B)
And you can then use it with:
Multi cpu support are also simple, example:
iterator -cpu 4 R=mypyt(A,B) R=sqrt(A.*A B.*B)
Gives a function that used 4 CPUs with help of threads for large arrays.
Put the iterator line in beginning of your scripts. It will only re-compile the function if its changed.
· MATLAB Release: R12.1