Updates on my GSoC project: week 18 May
Since last week, I have started working on GSoC project. The objective is to put mlpack code on any device with very low resources. I have considered Raspberry pi as a starting point since I have one running as a home server. Raspberry pi’s (RPI) uses arm processors which is different from intel, amd processors which uses (x86_64). Today x86_64 is the main-stream architecture that is found on my laptop on any desktop computer. Considering that my Raspberry pi 3 uses armv8 architecture, this means that we need to cross-compile every source code file composes mlpack_knn starting from mlpack and ending by all dependencies.
To follow the updates on this project, I have started a pull request which can be found here
Raspberry Pi is a good starting point. However, during the next weeks we will add support for different types of embedded systems.
There are several points have been achieved last week:
- Set up a table of different possible devices to support.
- Cross compile mlpack, and its dependencies (armadillo, OpenBLAS, Boost)
- Cross compile mlpack knn, and statically link it to mlpack and other dependencies.
- Reduce binary size from ~100 MB (compiled with profile symbols) on my machine into 4.76 MB on Raspberry Pi
- Finally, I was able to run mlpack_knn on my Raspberry Pi 3.
For the next week, I will be writing small software using mlpack for my RPI :).
If you have any suggestions or any embedded system, old devices you would like to have mlpack running on it, leave a comment on my pull request, catch me on IRC or send an email to mlpack mailing list.