Math Vector Library is a high performance, industry-quality C, C++ and Fortran function library providing high performance math subroutines on vectors. The library is heavily vectorized and specifically tuned to leverage performance increases from Single-Instruction-Multiple-Data (SIMD) processor instructions on all supported platforms.
The library supports both execution on normal and strided vectors, with any vector argument having an own stride that can be set. Multiple backends exist for various processor feature levels of any targeted architecture and where applicable an OpenMP® based version is available as well. As such this library is an excellent choice for digital signal processing (DSP), artificial intelligence (AI), 3D computer graphics, shader runtimes, seismological and high-performance computing applications.
A scalar version of the library is also included. This library uses the same function implementations as the Math Vector Library and will as such yield the same accuracy as the vector counterpart. This is useful to ensure consistency of calculations in an application developed.
The library has been optimized for a multitude of computer architectures providing a true write-once compile-everywhere paradigm.
NEW An experimental version of the library with GPU offloading for AMD GCN and NVIDIA NVPTX is also available. You can learn more on the dedicated Math Vector Library GPU page.
Functionality
Also have a look at the documentation for an exhaustive list of functionality.
- Base functionality
- Square and cube roots: normal and reciprocal
- Trigonometric functions: normal, inverses, in degrees, scaled by π
- Hyperbolic functions: normal and inverses
- Exponentials: normal, base-2, minus-1
- Logarithms: normal, base-2, base-10, plus-1
- Special functions: complementary and normal error function, bessel functions of the first and second kinds, log-gamma
- Rounding: floor, ceil, truncate
- Miscellaneous: reciprocal, absolute value, euclidean distance
- Complex Numbers: square root, power, conjugate, projection exponentiation, logarithm, argument, normal and hyperbolic trigonometric functions
- Machine Learning
- Activation Functions (incl. first derivatives): Sigmoid, ReLU, Tanh, Softplus, Softsign, Gaussian, GELU, SiLU, MISH, PReLU and SeLU
Support
- Community Support: (free)
- Email support provided through a public user’s mailing list.
- Support Contract: (yearly subscription):
- Installation and deployment support
- Private email support
- Processor model specific builds
Availability
The following platforms are currently supported. Optimized builds for specific processor extensions such as SSE and AVX or specific processors are available.
Primary Platforms offer the highest performance and hand-optimized functions. These are our main development targets.
- Linux
- x86 (SSE2)
- x86_64 (multiversioning 1))
- aarch64 (ARMv8a, ARMv8.4a, ARMv9a)
- PowerPC64 (little and big endian, Power 8, 9 and 10, multiversioning 1))
- RISC-V 64bit (RV64IG)
- Windows
- x86 (SSE, SSE2)
- x86_64 (AVX, AVX2)
Secondary Platforms still offer quite high-performance but are not our main development targets.
- Linux
- armhfp (ARMv7a, ARMv8a both w/ and w/o NEON)
- MIPS (little and big endian, MIPS2, MIPS32r6)
- MIPS64 (little and big endian, MIPS3, MIPS4)
- z/Arch s390x (arch6, arch11, arch12, arch13)
1) Library versions with multiversioning contain optimized variants of every function for every applicable instruction set architecture variant. The most appropriate variant is chosen on the first call to the subroutine. Variants include different instruction set extensions such as AVX and AVX2 on x86_64 or the target processor such as Power8 and Power9 on PowerPC64. This allows the library to be easily deployed.
If you purchase a support contract we can furthermore produce specialized builds for specific processor models of the supported architectures.
Pricing
Pricing is calculated as developer seat which corresponds to a single software developer developing with the product and runtime which corresponds to the product being deployed on a machine.
A runtime license must be purchased for every computer the product is being deployed on, a developer license must be purchased for every developer who works with the product. At least one developer seat and one runtime license are required.
Type of License | Price per Machine | Price per User | |
---|---|---|---|
Developer Seat | 7500 EUR | ||
Runtime | 200 EUR | ||
Runtime (High-Volume) | Contact Sales |
- Support +20% of the total license fees for the product (developer seat(s) + runtimes) for the the customer annually.
- Academic, Non-Commercial Pricing: 40% discount.
For specialized requirements such as high-volume runtime licenses contact sales so we can work out a solution.
Order Information
Please contact a sales representative for inquiries.
Product and Service Numbers
Number | Description |
---|---|
SA-00001-010 | Math Vector Library 1.0, Developer Seat |
SA-00002-010 | Math Vector Library 1.0 (Linux, x86, x86_64/amd64), Runtime |
SA-00003-010 | Math Vector Library 1.0 (Microsoft Windows, x86, x86_64/amd64), Runtime |
SA-00004-010 | Math Vector Library 1.0 (Linux, PowerPC64le/PowerPC64el), Runtime |
SA-00005-010 | Math Vector Library 1.0 (Linux, AArch64), Runtime |
SA-00006-010 | Math Vector Library 1.0 (Linux, ARMhfp), Runtime |
SA-00007-010 | Math Vector Library 1.0 (Linux, RISC-V 64bit), Runtime |
SA-00008-010 | Math Vector Library 1.0 (Linux, MIPS/MIPS64), Runtime |
SA-00009-010 | Math Vector Library 1.0 (Linux, s390x), Runtime |
SS-00004-100 | Math Vector Library Support Contract (1 year) |