gstvrmrlpz / energy

Energy consumption of EC implementations in several programming languages
GNU General Public License v3.0
1 stars 0 forks source link

We need to have measures for every run separately #11

Closed JJ closed 2 months ago

JJ commented 3 months ago

If we want to compute statistical differences, we can't obtain measures for all runs at the same time

https://github.com/gstvrmrlpz/energy/blob/9e1f6f97ee1271fc14c44824bd10ace9d4d3498e/c%2B%2B/makefile#L55

This does not allow you to run parametric or non parametric tests for the difference between two different measures.

gstvrmrlpz commented 3 months ago

Si lo crees necesario se puede imprimir los resultados individuales, pero el análisis de los datos se complicará. Se puede hacer hacer así:

gustavo@pccito:~/escritorio/as/practicas/13$ perf stat -r 10 -- ls > /dev/null

 Performance counter stats for 'ls' (10 runs):

              0,72 msec task-clock                       #    0,663 CPUs utilized               ( +- 10,42% )
                 0      context-switches                 #    0,000 /sec                      
                 0      cpu-migrations                   #    0,000 /sec                      
                99      page-faults                      #  137,953 K/sec                       ( +-  0,46% )
         2.639.052      cycles                           #    3,677 GHz                         ( +-  1,43% )
           923.051      stalled-cycles-frontend          #   34,98% frontend cycles idle        ( +-  1,40% )
         2.221.838      instructions                     #    0,84  insn per cycle            
                                                  #    0,42  stalled cycles per insn     ( +-  0,62% )
           491.015      branches                         #  684,211 M/sec                       ( +-  0,58% )
            48.519      branch-misses                    #    9,88% of all branches             ( +-  1,20% )

          0,001082 +- 0,000113 seconds time elapsed  ( +- 10,44% )

gustavo@pccito:~/escritorio/as/practicas/13$ man perf-stat
gustavo@pccito:~/escritorio/as/practicas/13$ perf stat -r 10 --table -- ls > /dev/null

 Performance counter stats for 'ls' (10 runs):

              0,67 msec task-clock                       #    0,657 CPUs utilized               ( +-  7,98% )
                 0      context-switches                 #    0,000 /sec                      
                 0      cpu-migrations                   #    0,000 /sec                      
                99      page-faults                      #  148,433 K/sec                       ( +-  0,43% )
         2.607.110      cycles                           #    3,909 GHz                         ( +-  0,48% )
           913.535      stalled-cycles-frontend          #   35,04% frontend cycles idle        ( +-  0,61% )
         2.206.354      instructions                     #    0,85  insn per cycle            
                                                  #    0,41  stalled cycles per insn     ( +-  0,16% )
           487.764      branches                         #  731,314 M/sec                       ( +-  0,17% )
            48.027      branch-misses                    #    9,85% of all branches             ( +-  0,48% )

         # Table of individual measurements:
         0,0017538 (+0,0007380) #########
         0,0011634 (+0,0001476) ###
         0,0009054 (-0,0001103) ###
         0,0009092 (-0,0001065) ###
         0,0009002 (-0,0001156) ###
         0,0009072 (-0,0001086) ###
         0,0009074 (-0,0001083) ###
         0,0009034 (-0,0001123) ###
         0,0009018 (-0,0001139) ###
         0,0009056 (-0,0001102) ###

         # Final result:
         0,0010157 +- 0,0000859 seconds time elapsed  ( +-  8,46% )
JJ commented 3 months ago

Si lo crees necesario se puede imprimir los resultados individuales, pero el análisis de los datos se complicará. Se puede hacer hacer así:

Hay que hacer el análisis de datos que hay que hacer, claro. Y complicarlo lo que sea necesario.


gustavo@pccito:~/escritorio/as/practicas/13$ perf stat -r 10 -- ls > /dev/null

 Performance counter stats for 'ls' (10 runs):

              0,72 msec task-clock                       #    0,663 CPUs utilized               ( +- 10,42% )
                 0      context-switches                 #    0,000 /sec                      
                 0      cpu-migrations                   #    0,000 /sec                      
                99      page-faults                      #  137,953 K/sec                       ( +-  0,46% )
         2.639.052      cycles                           #    3,677 GHz                         ( +-  1,43% )
           923.051      stalled-cycles-frontend          #   34,98% frontend cycles idle        ( +-  1,40% )
         2.221.838      instructions                     #    0,84  insn per cycle            
                                                  #    0,42  stalled cycles per insn     ( +-  0,62% )
           491.015      branches                         #  684,211 M/sec                       ( +-  0,58% )
            48.519      branch-misses                    #    9,88% of all branches             ( +-  1,20% )

          0,001082 +- 0,000113 seconds time elapsed  ( +- 10,44% )

El problema es que esto no me sirve. Necesito el tiempo y la energía para cada una de las ejecuciones, para poder calcular diferencias significativas.

gustavo@pccito:~/escritorio/as/practicas/13$ man perf-stat gustavo@pccito:~/escritorio/as/practicas/13$ perf stat -r 10 --table -- ls > /dev/null

Performance counter stats for 'ls' (10 runs):

          0,67 msec task-clock                       #    0,657 CPUs utilized               ( +-  7,98% )
             0      context-switches                 #    0,000 /sec                      
             0      cpu-migrations                   #    0,000 /sec                      
            99      page-faults                      #  148,433 K/sec                       ( +-  0,43% )
     2.607.110      cycles                           #    3,909 GHz                         ( +-  0,48% )
       913.535      stalled-cycles-frontend          #   35,04% frontend cycles idle        ( +-  0,61% )
     2.206.354      instructions                     #    0,85  insn per cycle            
                                              #    0,41  stalled cycles per insn     ( +-  0,16% )
       487.764      branches                         #  731,314 M/sec                       ( +-  0,17% )
        48.027      branch-misses                    #    9,85% of all branches             ( +-  0,48% )

     # Table of individual measurements:
     0,0017538 (+0,0007380) #########
     0,0011634 (+0,0001476) ###
     0,0009054 (-0,0001103) ###
     0,0009092 (-0,0001065) ###
     0,0009002 (-0,0001156) ###
     0,0009072 (-0,0001086) ###
     0,0009074 (-0,0001083) ###
     0,0009034 (-0,0001123) ###
     0,0009018 (-0,0001139) ###
     0,0009056 (-0,0001102) ###

Ah, mira. Pero también haría falta la energía. Me da igual si se ejecuta de forma independiente o si la herramienta lo da individualmente. Esto da solo los segundos, parece; haría falta también la energía de los MSR.

gstvrmrlpz commented 3 months ago

tienes razón, habría que realizar ejecuciones independientes porque --table solo lista individualmente los tiempos y no el resto de eventos

gstvrmrlpz commented 2 months ago

hecho hace tiempo