5.1.3 : The compilation



Let's compile. First we have to go into the build directory and call cmake program :

cmake ..

-- The C compiler identification is GNU 8.3.0

-- The CXX compiler identification is GNU 8.3.0

-- Check for working C compiler: /usr/bin/cc

-- Check for working C compiler: /usr/bin/cc -- works

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

-- Detecting C compile features

-- Detecting C compile features - done

-- Check for working CXX compiler: /usr/bin/c++

-- Check for working CXX compiler: /usr/bin/c++ -- works

-- Detecting CXX compiler ABI info

-- Detecting CXX compiler ABI info - done

-- Detecting CXX compile features

-- Detecting CXX compile features - done

-- ENV{CONDA_DEFAULT_ENV} does not exist

-- Configuring done

-- Generating done

-- Build files have been written to: XXX/build



Then we can call make to compile and run the examples (it may takes few minutes depending on your system, compiler, computer, etc) :

make plot_all

Scanning dependencies of target asterics_hpc

[ 2%] Building CXX object AstericsHPC/CMakeFiles/asterics_hpc.dir/asterics_alloc.cpp.o

[ 5%] Building CXX object AstericsHPC/CMakeFiles/asterics_hpc.dir/timer.cpp.o

[ 8%] Building CXX object AstericsHPC/CMakeFiles/asterics_hpc.dir/asterics_random.cpp.o

[ 11%] Linking CXX shared library libasterics_hpc.so

[ 11%] Built target asterics_hpc

Scanning dependencies of target tableImpl_O0

[ 14%] Building CXX object ParticlePropagation/TableImplementation/CMakeFiles/tableImpl_O0.dir/main.cpp.o

[ 17%] Building CXX object ParticlePropagation/TableImplementation/CMakeFiles/tableImpl_O0.dir/table_particle.cpp.o

[ 20%] Linking CXX executable tableImpl_O0

[ 20%] Built target tableImpl_O0

Scanning dependencies of target tableImpl_O2

[ 23%] Building CXX object ParticlePropagation/TableImplementation/CMakeFiles/tableImpl_O2.dir/main.cpp.o

[ 26%] Building CXX object ParticlePropagation/TableImplementation/CMakeFiles/tableImpl_O2.dir/table_particle.cpp.o

[ 29%] Linking CXX executable tableImpl_O2

[ 29%] Built target tableImpl_O2

Scanning dependencies of target tableImpl_O3

[ 32%] Building CXX object ParticlePropagation/TableImplementation/CMakeFiles/tableImpl_O3.dir/main.cpp.o

[ 35%] Building CXX object ParticlePropagation/TableImplementation/CMakeFiles/tableImpl_O3.dir/table_particle.cpp.o

[ 38%] Linking CXX executable tableImpl_O3

[ 38%] Built target tableImpl_O3

Scanning dependencies of target tableImpl_O1

[ 41%] Building CXX object ParticlePropagation/TableImplementation/CMakeFiles/tableImpl_O1.dir/main.cpp.o

[ 44%] Building CXX object ParticlePropagation/TableImplementation/CMakeFiles/tableImpl_O1.dir/table_particle.cpp.o

[ 47%] Linking CXX executable tableImpl_O1

[ 47%] Built target tableImpl_O1

Scanning dependencies of target tableImpl_Ofast

[ 50%] Building CXX object ParticlePropagation/TableImplementation/CMakeFiles/tableImpl_Ofast.dir/main.cpp.o

[ 52%] Building CXX object ParticlePropagation/TableImplementation/CMakeFiles/tableImpl_Ofast.dir/table_particle.cpp.o

[ 55%] Linking CXX executable tableImpl_Ofast

[ 55%] Built target tableImpl_Ofast

Scanning dependencies of target classImpl_O1

[ 58%] Building CXX object ParticlePropagation/ClassImplementation/CMakeFiles/classImpl_O1.dir/main.cpp.o

[ 61%] Building CXX object ParticlePropagation/ClassImplementation/CMakeFiles/classImpl_O1.dir/Particle.cpp.o

[ 64%] Linking CXX executable classImpl_O1

[ 64%] Built target classImpl_O1

Scanning dependencies of target classImpl_O0

[ 67%] Building CXX object ParticlePropagation/ClassImplementation/CMakeFiles/classImpl_O0.dir/main.cpp.o

[ 70%] Building CXX object ParticlePropagation/ClassImplementation/CMakeFiles/classImpl_O0.dir/Particle.cpp.o

[ 73%] Linking CXX executable classImpl_O0

[ 73%] Built target classImpl_O0

Scanning dependencies of target classImpl_O3

[ 76%] Building CXX object ParticlePropagation/ClassImplementation/CMakeFiles/classImpl_O3.dir/main.cpp.o

[ 79%] Building CXX object ParticlePropagation/ClassImplementation/CMakeFiles/classImpl_O3.dir/Particle.cpp.o

[ 82%] Linking CXX executable classImpl_O3

[ 82%] Built target classImpl_O3

Scanning dependencies of target classImpl_Ofast

[ 85%] Building CXX object ParticlePropagation/ClassImplementation/CMakeFiles/classImpl_Ofast.dir/main.cpp.o

[ 88%] Building CXX object ParticlePropagation/ClassImplementation/CMakeFiles/classImpl_Ofast.dir/Particle.cpp.o

[ 91%] Linking CXX executable classImpl_Ofast

[ 91%] Built target classImpl_Ofast

Scanning dependencies of target classImpl_O2

[ 94%] Building CXX object ParticlePropagation/ClassImplementation/CMakeFiles/classImpl_O2.dir/main.cpp.o

[ 97%] Building CXX object ParticlePropagation/ClassImplementation/CMakeFiles/classImpl_O2.dir/Particle.cpp.o

[100%] Linking CXX executable classImpl_O2

[100%] Built target classImpl_O2

[ 9%] Built target asterics_hpc

[ 15%] Built target classImpl_O3

Scanning dependencies of target run_classImpl_O3

[ 18%] Run classImpl_O3 program

Particle propagation with class

evaluateClassParticlePropagation : nbElement = 1000, cyclePerElement = 38.733 cy/el, elapsedTime = 38733 cy

evaluateClassParticlePropagation : nbElement = 2000, cyclePerElement = 38.588 cy/el, elapsedTime = 77176 cy

evaluateClassParticlePropagation : nbElement = 3000, cyclePerElement = 41.5933 cy/el, elapsedTime = 124780 cy

evaluateClassParticlePropagation : nbElement = 5000, cyclePerElement = 43.8132 cy/el, elapsedTime = 219066 cy

evaluateClassParticlePropagation : nbElement = 10000, cyclePerElement = 45.0812 cy/el, elapsedTime = 450812 cy

[ 18%] Built target run_classImpl_O3

[ 25%] Built target tableImpl_O1

Scanning dependencies of target run_tableImpl_O1

[ 27%] Run tableImpl_O1 program

Table Particle implementation

initTableParticle : seed = 1575964982

evaluateMoveParticle : nbElement = 1000, cyclePerElement = 44.236 cy/el, elapsedTime = 44236 cy

initTableParticle : seed = 1575964982

evaluateMoveParticle : nbElement = 2000, cyclePerElement = 43.9555 cy/el, elapsedTime = 87911 cy

initTableParticle : seed = 1575964982

evaluateMoveParticle : nbElement = 3000, cyclePerElement = 43.863 cy/el, elapsedTime = 131589 cy

initTableParticle : seed = 1575964983

evaluateMoveParticle : nbElement = 5000, cyclePerElement = 43.831 cy/el, elapsedTime = 219155 cy

initTableParticle : seed = 1575964983

evaluateMoveParticle : nbElement = 10000, cyclePerElement = 43.836 cy/el, elapsedTime = 438360 cy

[ 27%] Built target run_tableImpl_O1

[ 34%] Built target tableImpl_O0

Scanning dependencies of target run_tableImpl_O0

[ 36%] Run tableImpl_O0 program

Table Particle implementation

initTableParticle : seed = 1575964985

evaluateMoveParticle : nbElement = 1000, cyclePerElement = 151.471 cy/el, elapsedTime = 151471 cy

initTableParticle : seed = 1575964986

evaluateMoveParticle : nbElement = 2000, cyclePerElement = 151.496 cy/el, elapsedTime = 302992 cy

initTableParticle : seed = 1575964987

evaluateMoveParticle : nbElement = 3000, cyclePerElement = 151.351 cy/el, elapsedTime = 454054 cy

initTableParticle : seed = 1575964988

evaluateMoveParticle : nbElement = 5000, cyclePerElement = 151.927 cy/el, elapsedTime = 759635 cy

initTableParticle : seed = 1575964991

evaluateMoveParticle : nbElement = 10000, cyclePerElement = 152.02 cy/el, elapsedTime = 1520199 cy

[ 36%] Built target run_tableImpl_O0

[ 43%] Built target tableImpl_O2

Scanning dependencies of target run_tableImpl_O2

[ 45%] Run tableImpl_O2 program

Table Particle implementation

initTableParticle : seed = 1575964996

evaluateMoveParticle : nbElement = 1000, cyclePerElement = 29.816 cy/el, elapsedTime = 29816 cy

initTableParticle : seed = 1575964996

evaluateMoveParticle : nbElement = 2000, cyclePerElement = 28.8875 cy/el, elapsedTime = 57775 cy

initTableParticle : seed = 1575964997

evaluateMoveParticle : nbElement = 3000, cyclePerElement = 28.4767 cy/el, elapsedTime = 85430 cy

initTableParticle : seed = 1575964997

evaluateMoveParticle : nbElement = 5000, cyclePerElement = 28.487 cy/el, elapsedTime = 142435 cy

initTableParticle : seed = 1575964997

evaluateMoveParticle : nbElement = 10000, cyclePerElement = 29.0249 cy/el, elapsedTime = 290249 cy

[ 45%] Built target run_tableImpl_O2

[ 52%] Built target tableImpl_O3

Scanning dependencies of target run_tableImpl_O3

[ 54%] Run tableImpl_O3 program

Table Particle implementation

initTableParticle : seed = 1575964999

evaluateMoveParticle : nbElement = 1000, cyclePerElement = 9.516 cy/el, elapsedTime = 9516 cy

initTableParticle : seed = 1575964999

evaluateMoveParticle : nbElement = 2000, cyclePerElement = 9.583 cy/el, elapsedTime = 19166 cy

initTableParticle : seed = 1575964999

evaluateMoveParticle : nbElement = 3000, cyclePerElement = 9.78167 cy/el, elapsedTime = 29345 cy

initTableParticle : seed = 1575964999

evaluateMoveParticle : nbElement = 5000, cyclePerElement = 9.8128 cy/el, elapsedTime = 49064 cy

initTableParticle : seed = 1575964999

evaluateMoveParticle : nbElement = 10000, cyclePerElement = 10.982 cy/el, elapsedTime = 109820 cy

[ 54%] Built target run_tableImpl_O3

[ 61%] Built target tableImpl_Ofast

Scanning dependencies of target run_tableImpl_Ofast

[ 63%] Run tableImpl_Ofast program

Table Particle implementation

initTableParticle : seed = 1575965000

evaluateMoveParticle : nbElement = 1000, cyclePerElement = 11.483 cy/el, elapsedTime = 11483 cy

initTableParticle : seed = 1575965000

evaluateMoveParticle : nbElement = 2000, cyclePerElement = 11.1025 cy/el, elapsedTime = 22205 cy

initTableParticle : seed = 1575965000

evaluateMoveParticle : nbElement = 3000, cyclePerElement = 11.083 cy/el, elapsedTime = 33249 cy

initTableParticle : seed = 1575965000

evaluateMoveParticle : nbElement = 5000, cyclePerElement = 11.3234 cy/el, elapsedTime = 56617 cy

initTableParticle : seed = 1575965000

evaluateMoveParticle : nbElement = 10000, cyclePerElement = 11.8726 cy/el, elapsedTime = 118726 cy

[ 63%] Built target run_tableImpl_Ofast

[ 70%] Built target classImpl_O1

Scanning dependencies of target run_classImpl_O1

[ 72%] Run classImpl_O1 program

Particle propagation with class

evaluateClassParticlePropagation : nbElement = 1000, cyclePerElement = 40.184 cy/el, elapsedTime = 40184 cy

evaluateClassParticlePropagation : nbElement = 2000, cyclePerElement = 41.8835 cy/el, elapsedTime = 83767 cy

evaluateClassParticlePropagation : nbElement = 3000, cyclePerElement = 43.293 cy/el, elapsedTime = 129879 cy

evaluateClassParticlePropagation : nbElement = 5000, cyclePerElement = 44.5964 cy/el, elapsedTime = 222982 cy

evaluateClassParticlePropagation : nbElement = 10000, cyclePerElement = 45.7717 cy/el, elapsedTime = 457717 cy

[ 72%] Built target run_classImpl_O1

[ 79%] Built target classImpl_O0

Scanning dependencies of target run_classImpl_O0

[ 81%] Run classImpl_O0 program

Particle propagation with class

evaluateClassParticlePropagation : nbElement = 1000, cyclePerElement = 574.118 cy/el, elapsedTime = 574118 cy

evaluateClassParticlePropagation : nbElement = 2000, cyclePerElement = 574.928 cy/el, elapsedTime = 1149856 cy

evaluateClassParticlePropagation : nbElement = 3000, cyclePerElement = 574.27 cy/el, elapsedTime = 1722810 cy

evaluateClassParticlePropagation : nbElement = 5000, cyclePerElement = 574.826 cy/el, elapsedTime = 2874129 cy

evaluateClassParticlePropagation : nbElement = 10000, cyclePerElement = 574.93 cy/el, elapsedTime = 5749304 cy

[ 81%] Built target run_classImpl_O0

[ 88%] Built target classImpl_O2

Scanning dependencies of target run_classImpl_O2

[ 90%] Run classImpl_O2 program

Particle propagation with class

evaluateClassParticlePropagation : nbElement = 1000, cyclePerElement = 38.854 cy/el, elapsedTime = 38854 cy

evaluateClassParticlePropagation : nbElement = 2000, cyclePerElement = 40.3875 cy/el, elapsedTime = 80775 cy

evaluateClassParticlePropagation : nbElement = 3000, cyclePerElement = 41.5513 cy/el, elapsedTime = 124654 cy

evaluateClassParticlePropagation : nbElement = 5000, cyclePerElement = 43.9868 cy/el, elapsedTime = 219934 cy

evaluateClassParticlePropagation : nbElement = 10000, cyclePerElement = 45.1992 cy/el, elapsedTime = 451992 cy

[ 90%] Built target run_classImpl_O2

[ 97%] Built target classImpl_Ofast

Scanning dependencies of target run_classImpl_Ofast

[100%] Run classImpl_Ofast program

Particle propagation with class

evaluateClassParticlePropagation : nbElement = 1000, cyclePerElement = 39.401 cy/el, elapsedTime = 39401 cy

evaluateClassParticlePropagation : nbElement = 2000, cyclePerElement = 40.7995 cy/el, elapsedTime = 81599 cy

evaluateClassParticlePropagation : nbElement = 3000, cyclePerElement = 42.2547 cy/el, elapsedTime = 126764 cy

evaluateClassParticlePropagation : nbElement = 5000, cyclePerElement = 43.8818 cy/el, elapsedTime = 219409 cy

evaluateClassParticlePropagation : nbElement = 10000, cyclePerElement = 45.1365 cy/el, elapsedTime = 451365 cy

[100%] Built target run_classImpl_Ofast

Scanning dependencies of target run_all

[100%] Built target run_all

[ 7%] Built target asterics_hpc

[ 12%] Built target classImpl_O3

[ 14%] Built target run_classImpl_O3

[ 19%] Built target classImpl_O1

[ 21%] Built target run_classImpl_O1

[ 26%] Built target classImpl_O0

[ 28%] Built target run_classImpl_O0

[ 33%] Built target classImpl_O2

[ 35%] Built target run_classImpl_O2

[ 40%] Built target classImpl_Ofast

[ 42%] Built target run_classImpl_Ofast

Scanning dependencies of target plot_classImplO0123fast

[ 43%] Call gnuplot classImplO0123fast

[ 52%] Built target plot_classImplO0123fast

[ 57%] Built target tableImpl_O1

[ 59%] Built target run_tableImpl_O1

[ 64%] Built target tableImpl_O0

[ 66%] Built target run_tableImpl_O0

[ 71%] Built target tableImpl_O2

[ 73%] Built target run_tableImpl_O2

[ 78%] Built target tableImpl_O3

[ 80%] Built target run_tableImpl_O3

[ 85%] Built target tableImpl_Ofast

[ 87%] Built target run_tableImpl_Ofast

[ 87%] Built target run_all

Scanning dependencies of target plot_tableVsClassImplO023

[ 89%] Call gnuplot tableVsClassImplO023

[ 89%] Built target plot_tableVsClassImplO023

Scanning dependencies of target plot_tableImplO0123fast

[ 91%] Call gnuplot tableImplO0123fast

[100%] Built target plot_tableImplO0123fast

Scanning dependencies of target plot_all

[100%] Built target plot_all



Ok, the compilation is done, let's see the results.