Matlab compiler resulting ".exe" file size and "cudnn64_*.dll"
8 次查看(过去 30 天)
显示 更早的评论
I'm recently used Matlab Compiler mcc command to create a standalone executable (there's no MCR installed included). And found that the resulting " .exe" size is somewhat too large --- 289 MB. I do not feel myself comfortable, when I need to pass an exe like this to my colleague - he might say something bad about Matlab :) .
I known the ` -N` switch, that allows to prevent including not-actually-needed toolboxes. It doesn't help. The toolboxes I do need here are: Parallel Processing and Image Processing.
The ".exe" files were not that big before, so I've decided to try several Matlab versions, and unpack each " .exe" generated. I've immediately noticed that the largest file inside is " cudnn64_*.dll".
Results:
release exe size cudnn size cudnn_name
------- -------- ---------- ---------------
R2018b 289 MB 324 MB "cudnn64_7.dll"
R2017b_Update9 230 MB 284 MB "cudnn64_7.dll"
R2017b_noUpdates 81 MB 75 MB "cudnn64_5.dll"
R2016b 32.2MB 0 MB *no such file*
So, " cudnn*.dll" plays a major role in wasting space here.
I do not use this ".dll" in this project, actually. I wonder why Matlab thinks I do. So, I've temporarily renamed it to ".dll__", and re-compiled my ".exe". And now the resulting ".exe" got significantly smaller (29MB in R2017b_noUpdates, which looks more-or-less OK). And it still works. Maybe this approach would help someone else.
My questions are:
- So.. Any idea how to improve this even further, without too much effort?
- There is a copy of this dll in the MCR installation itself (the same, byte-to-byte, except for "R2017b_Update9" --- there's just no MCR updates available currently) . Why include it both here and there? Why R2016b is "smarter", and does not not include this unnecessary dll? Is this regression a bug?
0 个评论
采纳的回答
Lipi Vora
2019-5-20
Starting R2019a, the cudnn64_*.dll is not packaged in the CTF by default.
For previous releases, please see bug report:
更多回答(2 个)
Daniel
2020-1-23
Hi,
I noticed that using R2019a, I can replace Halide.dll with a 0-byte dummy file in the executable, to reduce file size. I cannot remove it from the archive since MATLAB checks for the presence of the file, but I can replace it with a dummy file of size zero, and the executable still runs.
I used 7-zip to manipulate the archive/executable.
If compilation isn't done too often, this might be an acceptable solution.
Best,
Daniel
1 个评论
Daniel
2020-1-23
Forgot to mention: the executable was built with !mcc from the MATLAB command line, using Microsoft Visual C++ 2017, in case the specifics matter.
Sitra
2018-11-23
I'm facing the same thing
I think Mathworks should seriously focus on this BIG TECHNICAL ISSUE. Many programmers when they reach to this point, they will force to re-program their code from scratch using other programming languages (such as Python with pyqt) to avoid large .exe applications as we face with MATLAB
I have designed many great GUIs using MATLAB, but still I cannot compile them to my friends and community because they will start questioning me regarding this unncessary file size! Is it logical to design a simple GUI (like displaying a "Hello World" message only) to end up with a very large file!! If I program the same code using qt with C++ or pyqt with Python, it will be just fee kilobytes files size, automatically without diving into a mysterious codes with mcc -xx; Am I correct?
This is a big boundary and obstacle that should be addressed as one of the highest priority problems that need to be solved immediately
I hope my concern reaches Mathworks to let us benefiting from a great and smart language like MATLAB
Thank you so much
2 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 MATLAB Runtime 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!