Boost logo

Boost :

Subject: Re: [boost] cache size runtime detection
From: Andy Thomason (a.thomason_at_[hidden])
Date: 2015-08-19 19:15:40


I would love to see a comprehensive SIMD library similar to
those on game consoles.

> namespace boost::sys_info::cpu {
>
> enum class feature_tag
> {
> // Arch-specific values
> sse, sse2...
> _count
> };
>

Do not forget the CPUID support for lzcnt and popcnt, the two most
important instruction classes in searching - especially genetics.

It is worth noting that there is some good idiom support and generic
vector support in Clang, GCC and SNC (playstation) which makes it easy
to write SSE and NEON code without using intrinsics.

eg.

vector float a, b, c;
float d;

// lane based ops.
c = a + b;

// permutes
a = (vector float){ a[0], a[1], b[2], b[3] };

// scalar ops
c = a * d;

// vector/scalar combinations
c = a * b[0];

Loop vectorisation is another method of writing vector code
provided __restrict is used liberally.

// should resolve to one instruction.
for (int i = 0; i != 4; ++i) {
   c[i] = a[i] * b[i];
}

Andy.

---
This email has been checked for viruses by Avast antivirus software.
http://www.avast.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk