Απλό CPU benchmarking με Python (μαθητική εργασία)

Προβληματισμός, προτάσεις και λύσεις για "αναβάθμιση" του Η/Υ σε εργαλείο παραγωγικότητας!
Λειτουργικά συστήματα, Backup/Recovery, χρήση του hardware I/O.
Απάντηση
Άβαταρ μέλους
GeorgeVita
Διαχειριστής
Δημοσιεύσεις: 624
Εγγραφή: 04 Σεπ 2013, 21:51
Ονομα: Γιώργος
Επικοινωνία:

Απλό CPU benchmarking με Python (μαθητική εργασία)

Δημοσίευση από GeorgeVita »

Απλό CPU benchmarking με Python (μαθητική εργασία)
Για μαθητική εργασία στο μάθημα της τεχνολογίας κάναμε ένα μικρό benchmarking με απλό πρόγραμμα σε Python το οποίο ελέγχει αν ένας αριθμός είναι πρώτος από το 2 έως το 20000. Για να είναι πιο αντικειμενικές οι μετρήσεις μας bootάραμε κάθε Η/Υ με το ίδιο Live-USB (KNOPPIX) και τρέξαμε το πρόγραμμα χωρίς δίκτυο κλπ. Σίγουρα πήραμε "σχετικές" μετρήσεις αφού τα συστήματα είχαν διαφορετική σύνθεση hardware, αλλά ήταν αποδεκτό για μια εισαγωγική σχολική εργασία.

Πρόγραμμα
Το πρόγραμμα εκτελεί 10 φορές ένα loop μετρήσεως πρώτων αριθμών, καταγράφει το χρόνο εκτέλεσης κάθε επανάληψης και στο τέλος μας δείχνει το μέσο όρο και τον βέλτιστο χρόνο.

Κώδικας: Επιλογή όλων

#sbench.py
import time
#---------------------------------------------
l=[]
repetition=10
average=0
for i in range (repetition):
	start=time.time()
	x=1	
	while True:
		x=x+1
		y=2
		while True:
			if x%y==0:
				if x==y:
					break
				else:
					break
			else:
				y=y+1
		if x >=20000:
			break
	end=time.time()
	duration=end-start
	print i+1,"/",repetition,"{:.3f}".format(duration)
	l.append(duration)
l.sort()
for c in range (repetition):
	average=average+l[c]
print "average:","{:.3f}".format(average/repetition)
print "best is:","{:.3f}".format(l[0])
Επειδή η πρόσβασή μας σε Η/Υ ήταν περιορισμένη, λάβαμε βοήθεια από μέλη του adslgr.com/forum που έκαναν μερικές μετρήσεις στα δικά τους συστήματα. Τους ευχαριστούμε και από εδώ!

Μετρήσεις
Ο τελικός πίνακας μετρήσεων μαζί με τον δείκτη απόδοσης Passmark (https://www.cpubenchmark.net):

Κώδικας: Επιλογή όλων

                                    Χρόνος εκτ.            Δείκ.Απόδοσης                 Ελεγχος;
                        Live or      sbench.py               PassMark    α/α κατάταξης  Χρόνος επί
Επεξεργαστής            Install   M.O. Ταχύτερος  Πυρήνες Συνολ. 1 πυρ.  Εμείς PassMark  PassMark

XEON E5-2623 v3 @3.00GHz   I     2.332     2.213     4     9097   1847     1      8        4087
i5-4300M @2.60GHz          I     2.280     2.264     2     4388   1794     2      9        4062
i7-6700 @3.40GHz           I     2.302     2.267     4    10038   2160     3      3        4897
i5-3570K @3.40GHz          I     2.314     2.270     4     7148   2028     4      7        4604
i7-6700 @3.40GHz           L     2.288     2.275     4    10038   2160     5      4        4914
i5-4590 @3.30GHz           I     2.378     2.356     4     7225   2113     6      5        4978
i7-4770K @3.50GHz          I     2.498     2.422     4    10114   2255     7      2        5462
i7-4790K @4.00GHz          I     2.457     2.434     4    11197   2530     8      1        6158
XEON E5-1660 v4 @3.20GHz   I     2.793     2.764     8    16334   2102     9      6        5810
XEON E5-2680 v4 @2.40GHz   I     2.901     2.901    14    19905   1772    10     10        5141
A10-8750 @3.60GHz          I     3.321     3.097     4     5177   1637    11     12        5070
A10-8750 @3.60GHz          L     3.866     3.683     4     5177   1637    12     13        6029
i5-4200M @2.50GHz          L     3.875     3.871     2     4031   1647    13     11        6376
Core2 Quad Q9550 @3.64GHz  I*    3.906     3.906     4     5157   1544    14     15        6031
i3-2100 @3.10GHz           L     4.540     4.084     2     3661   1583    15     14        6465
i7-860 @2.80GHz            L     4.615     4.605     4     5059   1226    16     17        5646
Core2Duo Ε8400 @3.00GHz    L     4.735     4.733     2     2163   1252    16a    16a       5925
i5 M460 @2.53GHz           L     4.782     4.774     2     2334   1070    17     18        5108
VM XEON E5-2660 v2 @2.2GHz VM    4.911     4.795     4    11161   1417    18     16        6795
Core2Duo T7250 @2.00GHz    L     6.160     6.156     2     1112    710    19     19        4371
Pentium E1400 @2.00GHz     L     6.724     6.722     2     1042    693    20     20        4658
Core2Duo T5670 @1.80GHz    L     6.811     6.780     2     1009    655    21     22        4441
Pentium T3200 @2.00GHz     L     6.827     6.824     2     1032    679    22     21        4633
Pentium 4 @2.80GHz         L    13.145    13.118     1      323    629    23     23        8251
Atom N270 @1.60GHz         L    24.624    24.590     1      270    235    24     24        5779
Atom N550 @1.50GHz         L    26.203    26.183     2      515    230    25     25        6022
                                    
                        I*=overclocked
Στις μετρήσεις "L" σημαίνει boot Live-USB ενώ "Ι" εγκατάσταση κάποιου λειτουργικού linux.


Νεότερες μετρήσεις που δεν μπήκαν στην κατάταξη:

Κώδικας: Επιλογή όλων

                                    Χρόνος εκτ.            Δείκ.Απόδοσης                 Ελεγχος;
                        Live or      sbench.py               PassMark    α/α κατάταξης  Χρόνος επί
Επεξεργαστής            Install   M.O. Ταχύτερος  Πυρήνες Συνολ. 1 πυρ.  Εμείς PassMark  PassMark

Celeron E3200 @2.40GHz     L     5.713     5.710     2      839    970     -      -        5541
i5-8250U @1.60GHz          L     2.543     2.542     4     5900   1914     -      -        4865
i5-8250U @1.60GHz          I     2.036     2.022     4     5900   1914     -      -        3870
i7-8550U @1.80GHz          L     1.877     1.874     4     5925   2054     -      -        3849
i5-10210U @1.60GHz         L     2.060     2.017     4     6126   2180     -      -        4491
i5-12400 @4.40GHz          L     1.244     1.241     6    19456   3536     -      -        4399
i5-9600K @3.70GHz          L     1.471     1.470     6    10710   2750     -      -        4043
Συμπεράσματα
Με απλή ανάγνωση των μετρήσεων βλέπουμε μια γενική συμφωνία στον α/α κατάταξης των επεξεργαστών μεταξύ των δοκιμών μας (Live-USB) και του δείκτη PassMark. Παρόλα αυτά, ο δείκτης PassMark δεν αντικατοπτρίζεται ευθέως στην ταχύτητα εκτέλεσης του απλού προγράμματός μας, δηλαδή μια μεγάλη διαφορά στο δείκτη PassMark δε σημαίνει αντίστοιχη επιτάχυνση στην ολοκλήρωση του προγράμματος. Αυτό ίσως να συμβαίνει λόγω μετάφρασης Python ή στο setup των Η/Υ από το Live-USB.

Χρησιμότητα
Προσωπικά χρησιμοποιώ αυτούς τους πίνακες σε συνδυασμό με τα τεχνικά χαρακτηριστικά του motherboard για φθηνές αναβαθμίσεις σε παλαιά συστήματα φίλων. Για παράδειγμα, το σύστημα που αναφέρω στις μετρήσεις με τον επεξεργαστή "Pentium E1400 @2.00GHz" αναβαθμίστηκε με €10 (CPU και κάρτα μνήμης από ebay) σε αυτό που αναφέρεται ως "Core2Duo Ε8400 @3.00GHz" βελτιώνοντάς την απόδοσή του κατά 30% (έτρεξε το sbench.py σε 4.733" από 6.722").
pez
Δημοσιεύσεις: 936
Εγγραφή: 03 Ιούλ 2016, 01:51
Ονομα: pez
Τοποθεσία: eu
Επικοινωνία:

Re: Απλό CPU benchmarking με Python (μαθητική εργασία)

Δημοσίευση από pez »

- Ενδιαφέρον. Μάλιστα, τις μέρες αυτές σκεπτόμουνα το ίδιο ζήτημα : )
Έτσι, αφού παρατηρήσω πρώτα πως το τεστ μάλλον αφορά μόνον την
ALU της CPU, παρά *και* την FPU, να σας προτείνω να δοκιμάσουμε και
το ενσωματωμένο τεστ της maxima, που "κανονικά" θα πρέπει να
χρησιμοποιεί και την FPU αφού αναζητεί λάθη, πέραν από τα
"αναμενόμενα", όπως τα λέει, με συνολικά 11,106 επί μέρους δοκιμές
αλγορίθμων - από δεν ξέρω πόσα "πακέτα" μαθηματικών - ενώ
χρονομετρεί ταυτόχρονα την εκτέλεσή τους, για να δώσει στο τέλος,
μεταξύ άλλων, και συνολικούς χρόνους ολοκλήρωσης - ό,τι κι αν
σημαίνουν οι χρόνοι αυτοί : ) - όπως, είναι για παράδειγμα, και το PC
με την γνωστή, "δήθεν παρωχημένη CPU" : ) , όπου είχαμε, κάτω από
W10P64N1703:

Maxima 5.39.0_2_g5a49f11_dirty 
using Lisp SBCL 1.3.12
...
(%i1) Running tests in rtest_rules: 
...
2 tests failed out of 11,106 total tests.

Evaluation took:
  191.985 seconds of real time
  187.500000 seconds of total run time 
 (177.937500 user, 
  9.562500 system )
 [Run times consist of 
  5.350 seconds GC time, and 
  182.150 seconds non-GC time.]
  97.66% CPU
  19,383 forms interpreted
  12,354 lambdas converted
  597,856,779,520 processor cycles
  23,164,754,456 bytes consed

= https://sourceforge.net/projects/maxima/files/

- Πέτρος Ζιμουρτόπουλος
Απάντηση

Επιστροφή στο “Ο Η/Υ ως εργαλείο παραγωγικότητας!”