SPO600 Project Stage 1

For the final project in the SPO600 course, I have to find an open-source project to implement it with the new ARM SVE2 instructions. Regarding open source projects, the first place that appears in my mind is GitHub, so I decided to look for one on GitHub. In Lab 6, I have implemented a C program from Lab 5 using SVE2 instructions, and this affects my decision to find similar open-source projects on GitHub.


As recommended, I should look for an open-source project that is at library level and do processing on large data sets. To start with researching for a project, I went to the trending tab on GitHub, and it showed a huge list (100 pages) of C repositories. I filtered out the list by sorting it by its popularity, and I thought I should choose a project that does not have too many stars because if I choose a project that has many stars, there is less work to do with it because there are already many people have involved in the project. Thus, I went to the last pages of the list to find one. At last, I found a project that compresses jpeg images. It calls jpeg-compressor (https://github.com/richgel999/jpeg-compressor). 


The project uses Public Domain and Apache 2.0 licenses. Looking at the commits to find if the project has any SIMD optimizations, I found it has SSE2, which is equivalent to SVE2, but an Intel version (luckily, I gonna have work to do). Take a look at the project’s structure and read it readme; there are two main files that do encoding and decoding images (jpgd.cpp and jpge.cpp). Going through the code, I found many functions that work with arrays of data which is very similar to what I have done in Lab 6 and in the SVE2 intrinsic documentary. 


In stage 2 of the SPO600 final project, I will try to implement those functions using the ARM SVE2 intrinsic method.

This blog is continue to be updated...

Comments

Popular posts from this blog

SPO600 Lab 2

SPO600 Lab 1

SPO600 Lab 3