oneAPI Construction Kit

oneAPI Construction Kit is a suite of software enabling developers to easily expose the performance of their hardware though open standards.

Todo

CA-3718: Things to help when implementing Mux, but not CL/VK, such as compiler passes in utils and Abacus.

Document not in scope for end of October.

Abacus

Abacus is oneAPI Construction Kit’s kernel library implementing the builtins required for compute languages, including all the math functions required by OpenCL. Abacus implements half, float, and double floating-point functions to the high precision requirements needed for conformance. It provides specialized implementations for both scalar and vector data types, allowing optimized algorithms to be used for vector architectures.

Software conversions between the OpenCL Types are also provided by Abacus, including the rounding and saturating variants defined for OpenCL explicit conversions.

Tip

If a device contains hardware capable of performing a subset of builtin operations, then the ComputeMux Compiler should use a more performant hardware specific implementation for the relvant maths builtins in place of the Abacus software implementation.

Requirements

Abacus relies on the IEEE-754 format in its implementation, and on the add (+), subtract (-), and multiply (*) operations being correctly rounded. These are the minimum capabilities for a device to use the software maths library. Abacus avoids using division (/) operations in its algorithms, as it is typically expensive.

Hardware support for denormal numbers is not required, although a feature of Abacus is that it does work with denormals. Abacus will avoid denormal numbers in intermediate calculations if they are not available.

Vector hardware is not a requirement to support Abacus, the ComputeMux Compiler implementation will be able to transform the Abacus vector algorithms as appropriate for the hardware.

See also

Floating-Point Requirements defines the expectations on a device when supporting floating-point types.

Configurable

A mechanism for setting compile time flags exists in Abacus for the ComputeMux target to report that Optimization Options have been set, or that the device implements a lower precision profile of the high level heterogeneous language. These configurations allow Abacus to provide more optimal algorithms for implementing the builtins to the ComputeMux target.