Linux Assemblycollection of fast libraries

About LinAsm project


What is LinAsm?

LinAsm is collection of very fast and SIMD optimized libraries, are written in pure assembly language (FASM) for x86-64 Linux systems.

The main goal of the project was acceleration of data analysis and time series processing. Then project grew up to much more, then just data analysis. Now it covers common and wide used algorithms for array manipulations: searching, sorting, arithmetic and vector operations, unit conversions; fast math and statistic functions; numbers and time converting algorithms; finite impulse response (FIR) digital filters; spectrum analysis algorithms, Fast Hartley transformation; CPU cache friendly abstract data types (ADT) and much more.



LinAsm project is completely written in pure assembly language, called FASM, for 64-bit Linux systems. The libraries use x86‭ specific SIMD extensions to accelerate the main algorithms, and give you all the power, that your processor theoretically can give.‭ LinAsm is not portable outside x86-64 platform, and even will not work with ‬32-bit Linux systems.‭ ‬I guess it is not a big problem nowadays.‭ ‬Right‭?

The libraries are cache friendly (use cache hints) and prefetch data from RAM into CPU cache, if this is possible. This accelerate access to container's data in LinAsm abstract data types.



LinAsm libraries can give you significant speed improvement from 2 to 5 times (and even more) for intensive data manipulation, searching and sorting algorithms and computation tasks. I wrote benchmarks, which compare LinAsm functions with their GNU libc analogs and STL templates, for functions which have them. LinAsm is not GNU C library replacement, and most functions which are provided by the libraries are unique, and have no analogs in C library. So these tests cover only narrow set of the LinAsm functions.

Check the benchmarks to see the real speed up factor you can get from modern CPUs.


Documentation and support

For detailed description of the library functions, their parameters and linker options‭ please revise associated web site section called "Documentation".

Installation procedure, package structure and brief information about Flat Assembler can be found in the‭ "Support‭" section.

In case of questions, patches to the code and interesting algorithms, please feel free to send me an email. My contacts are in the "Contacts" section.

Found a bug in LinAsm code? Send a ticket to official bug tracker.


Future plans

In future I am planning to extend this library with more Digital Signal Processing (‬DSP‭) primitives. I have already developed digital FIR filters and now I am working on spectral analysis and nonlinear filters.‭ ‬It will give you an ability to use the whole power of DSP in your applications.‭

Another big task is to rewrite library functions to utilize AVX extensions of modern processors instead of SSE extensions which are used now in the library code. There is no specific terms when this will be done.

Copyright 2012-2016 Jack Black. All rights reserved.