Inastemp supports SX-Aurora Vector Engine

Inastemp, intrinsics as template, is a basic library to use vectorization easily in C++ thanks to template and Intrinsics. Now it supports vector intrinsics for Vector Engine provided by llvm-ve, in addition to intrinsics for X86 SSE/AVX/AVX512, PowerPC ALTIVEC, ARM SVE.

With inastemp, you can write highily vectorized code by using C++ template without writing intrinsics directory. It means that you don’t have to learn platform-specific intrinsics and your code runs on various platforms.

Berenger Bramas, author of inastemp, says:

This library allows to write codes like that:

====================
z = something()
a = VecType::If(cond1).Then( z )
    .ElseIf(cond2).Then([&](){
        VecType x = func(z)
        return x;
    })
    .Else([&](){
        return z*4;
    });
=====================
res = VecType::IfElse(a < b , c, d + 10.);
=====================

So it makes it possible to vectoize codes very easily, and use banches with some kind of abstract vector type (which is very convenient for researchers in physics/applied mathematics that create codes and who do not want to use intrinsics and low level things).

Also, it is compatible with most X86 extensions (AVX, AVX512, …) and ARM SVE, and now Aurora.

He also says:

I use it in a fast multipole method package that I will try to execute on AURORA soon. (I also use it in some other packages in biophysics).

We are looking forward to seeing his result!


See also