DEV Community

Smit Gabani
Smit Gabani

Posted on

SPO 600 Project : Auto-vectorization with iFunc - Stage 1

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.

  1. Get input
  2. Parameters
  3. Linker function
  4. Functions for different modules
  5. will figure out in the future.

The initial process will produce output similar to gcc compiler.

gcc -c func.c -o func.o
Enter fullscreen mode Exit fullscreen mode

Challenges

Calling the linking stage multiple times during building for different modules.

Latest comments (0)