some questions about matlab coder
이전 댓글 표시
Hi
I am doing my senior project on 5G simulations in matlab. We are doing the QAM using precoder and some modulation functions. We want to convert the code we have into C or C++. We used the matlabe code gen and we converted to C. We were surprised by how slow the C code is compared to matlab. It takes 260 sec for C to run one trial while only 90 sec on matlab. One of the thing we did is set the code gen to use dynamic allocation instead of static. I am looking for some recommendation or suggestions on how to produce a fast enough C code. Is that possible or we have to write the code fro scratch. Thanks
댓글 수: 3
Walter Roberson
2018년 4월 25일
Generally speaking:
- fixed point code can take longer than floating point (but fixed point can be used on devices that have no floating point unit)
- code that does calculations on sufficiently large arrays often ends up calling multithreaded high-performance libraries that use all of the cores. Generated C/C++ code does not call those libraries and so operates single-core. You can use https://www.mathworks.com/help/matlab/ref/maxnumcompthreads.html to test to see if this is the reason the generated code is slower (that is, by restricting your MATLAB to one thread.)
Ryan Livingston
2018년 4월 27일
편집: Ryan Livingston
2018년 4월 27일
MATLAB Coder added the ability for the generated code to call LAPACK in R2016a:
and FFTW in R2017b:
Using these will give you optimized linear algebra and FFT routines respectively.
Walter Roberson
2018년 4월 27일
Thanks for the update, Ryan.
답변 (3개)
Ji Lee
2018년 4월 25일
2 개 추천
Reducing the usage of dynamic memory allocation is one of the general optimization strategies one can start with when trying to improve the performance of generated code. We do have a useful documentation section that describes various optimizations and patterns. I've linked it below. Included in the first several topics linked from this section is a discussion on variable sizing and dynamic memory allocations.
카테고리
도움말 센터 및 File Exchange에서 MATLAB Coder에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!