Speed up Matlab Xin Sheng Zhou Matlab MATrix LABoratory Started - - PowerPoint PPT Presentation
Speed up Matlab Xin Sheng Zhou Matlab MATrix LABoratory Started - - PowerPoint PPT Presentation
Speed up Matlab Xin Sheng Zhou Matlab MATrix LABoratory Started in the late 1970s Matrix manipulation Plotting of data Implementation of algorithms Creation of user interface Interfacing with other languages, such as C
Matlab
MATrix LABoratory
Started in the late 1970s Matrix manipulation Plotting of data Implementation of algorithms Creation of user interface Interfacing with other languages, such as C and
Fortran
Slower, but reducing programming effort
Java
Java based
Appeared in 1995 Run on Java Virtual
Machine
Compile once, run
everywhere
Inherited slower than
C/C++
Currently (February 2012),
microbenchmarks show Java 7 is approximately 1.5 times slower than C
Code 1
Preallocating arrays
Preallocating arrays
Looking for larger memory Moving data
Preallocating arrays
Looking for larger memory Moving data
Preallocating arrays
Preallocating a non-double matrix
A = int8(zeros(100)); A = zeros(100, 'int8');
Changing a variable’s data type or dimension
Another case: assigning real and complex
numbers
Using appropriate logical operators
Large if…else… block, consider
switch…case…
Code 2
Vectorizing loops
Profiling
Measure where a program spends time
Case study
Low density parity check decoder
Block decoding Block length: 106 Generate parity check matrix Decoding
Resource used for block length 10^6 and 10^7
LDPC Code
H*cT=0 For code ½, block length 106
H: Matrix (0.5*106,106) C: Row vector, size 106
Encoding: c=s*G
s: row vector, size 0.5*106 G: matrix, (0.5*106,106) Get G from H is not easy Instead, generate parity check bits p=A-1Bs
H=[A B], c=[p s]
Matlab’s matrix multiplication and inversion cannot be used since it is
based on double value and encoding is based on GF(2)
Solution: Custom matrix inversion and multiplication on GF(2) Inversion is slow, and A-1 is required to be saved When block length > 105, saving is also slow Since H is sparse, sparse matrix format should be used. However, A-1 is
not sparse
Other ways…
Parallel computing
Multi-threaded GPU Multi-machine
MEX file Matlab Compiler
Summary
Preallocating arrays Vectorizing loops Profiling