Changes between Initial Version and Version 4 of Ticket #2958


Ignore:
Timestamp:
11/08/18 13:11:09 (12 months ago)
Author:
bburlacu
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #2958

    • Property Status changed from new to reviewing
    • Property Owner changed from bburlacu to gkronber
    • Property Summary changed from Native interpreter for symbolic expression trees to Vectorized/batch-mode interpreter for symbolic expression trees
  • Ticket #2958 – Description

    initial v4  
    1 A symbolic expression tree interpreter in native code (C++) can offer a significant speed advantage due to more mature backends (msvc, gcc) and features like auto-vectorization and loop unrolling.
     1This ticket explores the possibility of employing batching and vectorisation techniques (ie. using dedicated datatypes from `System.Numerics`) to speed up the interpretation of symbolic expression trees.
     2
     3Batching consists in allocating a small buffer for each instruction and performing operations on the whole buffer (instead of individual values for each row in the dataset).
     4
     5Vectorisation additionally involves using SIMD (Single Instruction Multiple Data) CPU instructions to speed up batch processing.
     6
     7=== Managed (C#) interpreter
     8
     9Batch processing using the `Vector<double>` class in `System.Numerics` allows us to achieve a 2-3x speed improvement compared to the standard linear interpreter.
     10
     11=== Native interpreter
     12
     13A tree interpreter in native code (C++) can offer a significant speed advantage due to more mature backends (msvc, gcc) and features like auto-vectorization and loop unrolling.
    214
    315Preliminary results show 5-10x speed improvement compared to the linear tree interpreter. We should also investigate the potential benefit of integrating fast math libraries such as [https://github.com/dpiparo/vdt vdt] ('''v'''ectorize'''d''' ma'''t'''h]) to increase computation speed.