This document describes the ABLAS library — a lightweight basic linear algebra subroutines library with SSE2 support. The ABLAS library is used by programs that are parts of ALGLIB project to speed up the linear algebra algorithms. At the moment only C++ version of ALGLIB can use ABLAS. However, in the future it is planned to add ABLAS into ALGLIB versions based on other languages.
The library is written on Pascal. The compiler used - FreePascal (version 2.2.0 was used for compiling). Current library version supports only Win32.
The ABLAS library is distributed under BSD license. It is distributed as precompiled binary files and as source code. These files may be downloaded from ABLAS page: http://www.alglib.net/projects/ablas/ (or http://alglib.sources.ru/projects/ablas/ in Russian).
The library supports vector operations with double precision real numbers. Their elements should be allocated in memory sequentially with no spaces between them. Such vectors correspond to one-dimensional arrays and rows in 2D arrays in most high-level languages. The following operations are available:
ASMDotProduct1ASMMove1ASMMoveS1ASMMoveNeg1ASMAdd1ASMAddS1ASMSub1ASMMulS1Each operation allows the following implementation types, chosen automatically depending on the processor and operands:
To be able to use ABLAS programs with ALGLIB library, two actions are required. First, set in the compiler options (or define with the define directive) the AP_WIN32 symbol. This symbol notifies the ALGLIB package that it is working under Windows and can use the corresponding operating system functions to find and load additional libraries. Second, put the library file (ablas.dll) in the same directory as your program executable. After these two steps the library will be detected and loaded automatically.
At the moment there are no ABLAS interfaces for other programming languages.