mmesiti / complex_benchmarks

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Complex multiplication benchmarks

End to end usage, for the impatient:

  1. Create a cflags.mk file and set the variable CFLAGS=... in it (see cfkags.mk.example).
  2. Run
    make dataviz
        

    which does the following:

    1. Creates and initializes 2 arrays of complex numbers, represented either with c99 complexes, or with pairs of values (but the re part and the im part are stored in different arrays, in a “SoA”-like fashion).
    2. runs 7 different types of complex-complex multiplication, using either c99 complexes or the split “SoA” version, multiple times, for many values of the array size. In the main() you can:
      • change the size of the array;
      • change the step at which new sizes are tried.
    3. Collects the data
    4. Reformats the data in a nicer table (wide format instead of long)
    5. Plots it.

Example results

CoreI5-3220M@2.60GHz

Bandwidth estimate on my laptop for each case as a function of the result array size. Compiled with gcc 10.2, -O3 -mavx.

./CoreI5-3220M@2.60GHz.png

XeonGold6152@2.19GHz

Bandwidth estimate for each case as a function of the result array size on a single core of a Skylake processor. Compiled with icc 2020.0, -fno-alias -O3 -xHost.

./XeonGold6152@2.19GHz.png

About


Languages

Language:C 86.9%Language:Python 10.8%Language:Makefile 2.4%