End to end usage, for the impatient:
- Create a
cflags.mk
file and set the variableCFLAGS=...
in it (seecfkags.mk.example
). - Run
make dataviz
which does the following:
- Creates and initializes 2 arrays of complex numbers,
represented either with c99 complexes, or with pairs of values
(but the
re
part and theim
part are stored in different arrays, in a “SoA”-like fashion). - 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 themain()
you can:- change the size of the array;
- change the step at which new sizes are tried.
- Collects the data
- Reformats the data in a nicer table (wide format instead of long)
- Plots it.
- Creates and initializes 2 arrays of complex numbers,
represented either with c99 complexes, or with pairs of values
(but the
Bandwidth estimate on my laptop for each case
as a function of the result array size.
Compiled with gcc 10.2, -O3 -mavx
.
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
.