Mais je vous ai dit que je n'avais pas personnellement investigué en détail les optimisation et options de compilations
Bon, j'ai fait quelques tests supplémentaires quand même. Effectivement g77 et gfortran sont par défaut sans optimisation alors que ifort a -O2 par défaut.
J'ai donc testé plusieurs options pour chaque. Voici les meilleurs résultats pour chaque. ( avec -O3 c'est le mieux en fait).
measurement date = 08/12/11
log file = bench_g77.log
machine = 2* (Xeon5430 4*2.66 GHz), Linux 2.6.18-8.el5 x86_64 (g77 3.4.6)
compile with [ g77 -O3 ]
program weight ref.time time[sec] time/ref ref/time
( 1) matvec 8 296.00 21.44 0.0724 13.8040
( 2) matvecz 4 279.00 10.66 0.0382 26.1677
( 3) leqs4h 3 256.00 7.65 0.0299 33.4772
( 4) leqs1k 3 279.00 17.76 0.0636 15.7112
( 5) jacobi11 3 261.00 16.45 0.0630 15.8692
( 6) jacobi1h 3 124.00 10.32 0.0832 12.0132
( 7) runge 8 204.00 12.03 0.0590 16.9618
( 8) intgl4 4 300.00 19.43 0.0648 15.4377
( 9) mathfnc1 2 123.00 5.38 0.0438 22.8455
(10) mathfnc2 2 226.00 16.49 0.0730 13.7053
(11) intosc 2 236.00 5.76 0.0244 41.0007
(12) intpi3 2 122.00 5.32 0.0436 22.9410
(13) permute1 2 23.00 1.27 0.0550 18.1818
(14) permute2 2 54.00 1.28 0.0237 42.2535
(15) permute3 2 228.00 2.36 0.0104 96.4875
weighted arithmetic average of (ref/time) = 23.17
weighted geometrical average of (ref/time) = 20.01
1/weighted arithmetic average of (time/ref) = 18.32
fMark = 20.01
measurement date = 08/12/11
log file = bench_gfortran.log
machine = 2* (Xeon5430 4*2.66 GHz), Linux 2.6.18-8.el5 x86_64 (GNU Fortran 95 (GCC) 4.1.1 20070105 (Red Hat 4.1.1-52))
compile with [ gfortran -O3 ]
program weight ref.time time[sec] time/ref ref/time
( 1) matvec 8 296.00 16.81 0.0568 17.6117
( 2) matvecz 4 279.00 8.95 0.0321 31.1906
( 3) leqs4h 3 256.00 6.02 0.0235 42.5461
( 4) leqs1k 3 279.00 15.41 0.0552 18.1098
( 5) jacobi11 3 261.00 9.82 0.0376 26.5703
( 6) jacobi1h 3 124.00 4.06 0.0327 30.5569
( 7) runge 8 204.00 9.67 0.0474 21.1027
( 8) intgl4 4 300.00 29.93 0.0998 10.0227
( 9) mathfnc1 2 123.00 5.33 0.0433 23.0726
(10) mathfnc2 2 226.00 15.57 0.0689 14.5151
(11) intosc 2 236.00 4.86 0.0206 48.5797
(12) intpi3 2 122.00 4.87 0.0399 25.0565
(13) permute1 2 23.00 1.36 0.0592 16.8869
(14) permute2 2 54.00 1.37 0.0254 39.3873
(15) permute3 2 228.00 2.32 0.0102 98.1912
weighted arithmetic average of (ref/time) = 27.19
weighted geometrical average of (ref/time) = 23.75
1/weighted arithmetic average of (time/ref) = 21.34
fMark = 23.75
measurement date = 08/12/11
log file = bench_ifort.log
machine = 2* (Xeon5430 4*2.66 GHz), Linux 2.6.18-8.el5 x86_64 (ifort 10.1.008)
compile with [ ifort -O3 ]
program weight ref.time time[sec] time/ref ref/time
( 1) matvec 8 296.00 15.64 0.0528 18.9258
( 2) matvecz 4 279.00 8.75 0.0314 31.8894
( 3) leqs4h 3 256.00 5.71 0.0223 44.7944
( 4) leqs1k 3 279.00 14.63 0.0524 19.0743
( 5) jacobi11 3 261.00 8.89 0.0340 29.3720
( 6) jacobi1h 3 124.00 3.03 0.0245 40.8701
( 7) runge 8 204.00 8.53 0.0418 23.9128
( 8) intgl4 4 300.00 6.21 0.0207 48.2781
( 9) mathfnc1 2 123.00 1.53 0.0125 80.1825
(10) mathfnc2 2 226.00 3.77 0.0167 59.8834
(11) intosc 2 236.00 4.40 0.0187 53.5876
(12) intpi3 2 122.00 4.63 0.0379 26.3727
(13) permute1 2 23.00 0.92 0.0398 25.1092
(14) permute2 2 54.00 1.03 0.0191 52.3763
(15) permute3 2 228.00 2.36 0.0104 96.4467
weighted arithmetic average of (ref/time) = 37.07
weighted geometrical average of (ref/time) = 32.96
1/weighted arithmetic average of (time/ref) = 29.84
fMark = 32.96
On ne gagne pas grand chose entre -O2 et -O3 pour gfortran, g77 et ifort (0.2 sur le fMark).
On voit encore que ifort est plus rapide.
Kevin Kofler (./44) :
Quant aux paquetages non disponibles pour RHEL, va voir https://fedoraproject.org/wiki/EPEL et http://rpmfusion.org/ .
Merci! J'avais juste rpmforge jusqu'à présent, mais il y a peu de packages pour x86_64.el5
