Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build for minimum size #1845

Closed
hedaoyuan opened this issue Apr 21, 2017 · 3 comments · Fixed by #4509
Closed

build for minimum size #1845

hedaoyuan opened this issue Apr 21, 2017 · 3 comments · Fixed by #4509

Comments

@hedaoyuan
Copy link
Contributor

hedaoyuan commented Apr 21, 2017

Paddle bin

当前通过CMake最小编译出来的Paddle预测程序大小是7.38M。其中预测程序链接时依赖的库如下。

Library size
libpaddle_cuda.a 30496
libpaddle_function.a 718998
libpaddle_gserver.a 6753326
libpaddle_network.a 118668
libpaddle_pserver.a 1192704
libpaddle_trainer_lib.a 915834
libpaddle_math.a 3100042
libpaddle_utils.a 279696
libpaddle_parameter.a 1009290
libpaddle_api.a 349126
libpaddle_proto.a 1549498
libgflags.a 197254
libglog.a 189138
libz.a 112010
libprotobuf.a 4323004
libopenblas.a 3279128

减小Paddle bin大小的方法

  1. 预测程序去掉对libpaddle_trainer_lib.a, libpaddle_pserver.a和libpaddle_network.a的依赖;
  2. 预测程序去掉对libpaddle_function.a和libpaddle_gserver.a的whole archive;
  3. 其他Library szie分析;
  4. strip等方法
@helinwang
Copy link
Contributor

不知道在android上面用的话能不能先gzip一下.so再存到app里,读取的时候解压一下放在cache文件夹里,以后就不用再解压了。

@hedaoyuan
Copy link
Contributor Author

Paddle Function

关于减小Paddle bin大小中的第2点。目前Paddle中占大多数的是计算相关的代码,主要编译在libpaddle_gserver.a, libpaddle_function.a和libpaddle_math.a里面。其中libpaddle_gserver.a, libpaddle_function.a是whole archive,而math中的计算函数主要都实现在了BaseMatrix.cu, Matrix.cpp.cpp里面,也是相当于whole archive。
所以,进一步减少Paddle bin大小的方法,需要将这些计算函数每一个都实现成一个独立的Function,并独立编译,然后根据预测模型依赖的Function,链接出包含最小计算功能的Paddle bin。

@hedaoyuan
Copy link
Contributor Author

不知道在android上面用的话能不能先gzip一下.so再存到app里

Android里面打包成apk时是会对.so进行压缩的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

Successfully merging a pull request may close this issue.

2 participants