VecLib DSP Libraries

VecLib DSP Libraries

 

VecLib is a large set of routines offering high-performance, optimised implementations of vector elementwise functions.

The library contains 4576 functions of 2, 3, or 4 operands, real or complex, scalar or vector.

The functions have the following forms:

r[i] = a[i] op1 b[i], i = 1, ..., N

r[i] = a[i] op1 (b[i] op2 c[i]), i = 1, ..., N

r[i] = (a[i] op1 b[i]) op2 c[i], i = 1, ..., N

r[i] = (a[i] op1 b[i]) op2 (c[i] op3 d[i]), i = 1, ..., N, where

 

  • each of op1, op2, and op3 can be +, -, × or ÷
  • each of a, b, c, and d can be real or complex, scalar or vector
  • the vectors can be strided independently.

 

Library Contents

Functions of 2 operands:

  • Contains all possible combinations of real, complex, scalar or vector arguments.
  • A total of 110 independent functions, 128 functions in all.

Real functions of 3 operands:

  • Contains all possible combinations of real scalar or real vector arguments.
  • A total of 149 independent functions, 336 functions in all.

Complex functions of 3 operands:

  • Contains all possible combinations of complex scalar and complex vector arguments.
  • A total of 1263 independent functions, 3024 functions in all.

Real vector functions of 4 operands:

  • Contains all possible combinations of real vector arguments.
  • A total of 62 independent functions, 64 functions in all.

Complex vector functions of 4 operands:

  • Contains all possible combinations of complex vector arguments.
  • A total of 805 independent functions, 1024 functions in all.

Naming Convention

VecLib is a large library, but using it is simplified by the systematic naming convention. Function names are made up of the components describing the function:

  • brackets ( and ) are denoted b
  • operations +, -, × and ÷ are denoted pmt, and d, respectively
  • real vector or matrix operands are denoted r
  • complex vector or matrix operands are denoted c
  • conjugated complex vector or matrix operands are denoted j
  • real scalar operands are denoted R
  • complex scalar operands are denoted C
  • conjugated complex scalars are denoted J
  • functions for vectors start v
  • functions for matrices start m
  • transposed matrix inputs are denoted T
  • transposed and conjugated matrix inputs are denoted H
  • operands marked for cache removal have l appended to them.

Here are a few examples of function names: r, a, b, c are vectors, ß (beta) is a scalar.

Function Name Action Comment
vrpbrmrb r[i] = a[i] * (b[i] - c[i]) all parameters real
vcpbjmjb r[i] = a[i] + (b[i]' - c[i]') all parameters complex
vcpbrtJb r[i] = a[i] + (b[i] * ß') r, a and beta are complex, b is real

 

Implementations

  • ARM A53, A57, and A72
  • PPC T2080
  • PPC T2081
  • PPC T4240
  • Intel AVX512
  • Intel Phi
  • Intel AVX2
  • Intel AVX
  • Intel SSE

 


Print   Email