SPO 600 Project : Auto-vectorization with iFunc - Stage 1
Smit Gabani
Posted on December 9, 2022
Objective:
The GCC compiler introduced the ‘ifunc’ extension to allow developers to create programs that can use advanced SIMD, SVE2, etc.
Our project is base on the use of ifunc and advanced SIMD, SVE2.
The goal for this project is to produce a proof-of-concept tool that will take code that meets specific conditions and automatically build it with ifunc
capability to select between multiple, autovectorized versions of a function, to take advantage of the best SIMD implementation available on the CPU on which the code is running.
For a single instruction to be completed for multiple data unit different architecture have different SIMD implementations like advance SIMD, SVE and SVE2.
The tool designed by us will build 3 implementation for function.c
file which wil have only one function.
The language I will be using: C
I am comfortable coding and understanding pyton code and I know python has many library that I can use. The reason I an not using C or C++ is that I am not sure I can complete the project if I face any troble while working with C++. But at last I decided to work with C
Overall Operation - Approach
I am some what confused no how to approach the problem.
Lets divide the working of the program into steps.
- Get input
- Parameters
- Linker function
- Functions for different modules
- will figure out in the future.
The initial process will produce output similar to gcc compiler.
gcc -c func.c -o func.o
Challenges
Calling the linking stage multiple times during building for different modules.
Posted on December 9, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.