hi all,

> "nova-simd" is a C++ header-only template library for taking advantage
> of SIMD instructions in the kind of DSP processes used in audio
> processing (i.e. not just basic stuff like vectorised mul+add and loop
> unrolling, but also some more audio-specific things like ramps,
> distortions, etc).

few comments: the idea of nova.simd is to provide a templated vec<>
class, which represents a short vector (aka simd register) and that is a
building block for algorithms ... independent from the hardware: the
idea is to be able to write the same code but target altivec, sse, avx,
neon or any other possible simd instruction set.

on top of this, there are algorithms, like some vectorized libm
algorithms, but also some horizontal ones like summing of squares or
finding the (absolute) peak of a signal. the algorithm part of the
library makes use of expression templates, to formulate linear ramps
(instead of a scalar or a vector as argument, one can specify a scalar
and a slope).

regarding numbers, it is somewhat hard to say and it *really* depends on
the use case, the instruction set and to some degree on the CPU. e.g.
for sse vec<float> will contain 4 elements, for avx 8 elements ... iac,
nova.simd expects a reasonably well optimizing compiler, as it highly
depends on inlining tiny functions. handwritten assembly code may still
be faster, but lacks the abstraction (especially the portability) ...

regarding arm/neon, i have no idea how it performs, as i've been using a
CPU emulator to develop the library.

cheers,
tim

--
dupswapdrop -- the music-dsp mailing list and website:
subscription info, FAQ, source code archive, list archive, book reviews, dsp 
links
http://music.columbia.edu/cmc/music-dsp
http://music.columbia.edu/mailman/listinfo/music-dsp

Reply via email to