PDA

View Full Version : System Stability Tester!


Pages : [1] 2

MrSeanKon
03-01-2005, 01:47
Με αφορμη τις ιδεες του φιλτατου Darthmoul :039: αλλα και τη συνδρομη των circular, emnezia σκεφτομαι να επεκτεινουμε απο κοινου τα Tools ωστε να κανουν κι ελεγχο ευσταθειας του συστηματος.

Οποιος αλλος θελησει να βοηθησει ειναι ευσπροσδεκτος προφανως.

Βασικα τα O/c Tools δεν υποστηριζουν SSE, SSE2, 3dNow! αλλα αυτο δεν ειναι προβλημα αφου οι υπολογισμοι γινονται αστραπη.
Ηδη ο Darthmoul σας παρεχει το προγραμμα του.
Το προγραμμα θα ξεκινησει οπως το SuperPi αρχικα και θα το επεκτεινουμε στο μελλον.
Eνας σχετικα γρηγορος αλγοριθμος του π=3.14159... ειναι του Ramanujan βεβαια το PiFast χρησιμοποιει κι εναν αναδρομικο αλγοριθμο που ειναι ο ταχυτερος αλλα εχει ζορι να τον κωδικοποιησουμε (οπως και τη μεθοδο Ramanujan).
Το e=2.718281... μπορει να υπολογιστει πολυ γρηγορα με τη σειρα Taylor κι εκανα αναλυση του σφαλματος αυξανει εκθετικα η συγκλιση απο το 26ο ορο και μετα.
Αυτα μπορω να σας τα δειξω αργοτερα.
Θα ηθελα Darthmoul να αναλαβεις τo τμημα του προγραμματισμου οπου να βαλεις το ταλεντο σου για να κανουμε βελτιστο οptimized αλλα και τσιτωμα μεχρι αηδιας και να γονατιζει με τη μια το συστημα.
Το μαθηματικο τμημα θα το αναλαβω εγω και μπορει να βοηθησει κι o emnezia φυσικα εκει.
Ο circular θα δωσει το χερι βοηθειας οπου μπορει!
Αντε να φτιαξουμε κατι καλο σταδιακα και να κανουμε ΒΑΝ :073: το Prime95!
To μονο προβλημα που θα αντιμετωπισουμε τον πρωτο καιρο ειναι οτι εχω καποιες ανοικτες υποχρεωσεις συνεπως απο τη μια ισως θεωρησετε οτι βιαστηκα να κανω την αρχη ομως σιγα σιγα θα προχωρησουμε το θεμα θελει και προετοιμασια δεν ειναι ευκολο.
Προτεινω να ξεκινησουμε με τον υπολογισμο του e πρωτα που ειναι ευκολοτερος.
Ο emnezia εχει επισης τα καταλληλα μαθηματικα πακετα (προφανως τα εχω κι εγω) :003: :080: οπου θα υπολογιζουμε εκ των προτερων τους αριθμους αυτους με μπολικα δεκαδικα ψηφια κι ανα τακτα χρονικα διαστηματα να γινεται ο ελεγχος αν τα παραχθεντα ψηφια συμφωνουν με το αποτελεσμα.
Για να μην πηζουμε με πολλους ελεγχους Darthmoul βαλε να ανοιγουν πολλα παραλληλα threads! :041:
Το Mathematica τον χρησιμοποιει για τεραστιους ακεραιους...
Η να βαλουμε απειρη ακριβεια σε floating point και να μην μπλεξουμε με ακεραιους?

Περιμενω τις αντιδρασεις σας. :)

DarthMoul
03-01-2005, 02:40
Λοιπόν Sean, να τα βάλουμε κάτω ένα, ένα. Ο έλεγχος ευστάθειας πρέπει να περιλαμβάνει πίεση σε CPU και RAM. Και ο έλεγχος ευστάθειας της CPU με την σειρά της, θα πρέπει να περιλαμβάνει πίεση σε FPU και CU/ALU. Για να προκαλέσεις την maximum πίεση στην CPU θα πρέπει να εκμεταλλευτείς πλήρως ότι ικανότητα έχει για out-of-order execution. Αν το σύστημα σου είναι SMT/SMP χρειάζεσαι υποχρεωτικά threads. Αποφάσισε εσύ τι ακριβώς χρειάζεσαι και εγω μπορώ να σου γράψω κομμάτια κώδικα σε ansi C για να κάνεις την δουλειά που θέλεις ώστε να μην έχουμε πρόβλημα με την Borland C που χρησιμοποιείς. Υπόψην ότι εγώ αφενός δεν έχω Borland C για να κάνω δοκιμές, και αφετέρου δεν ξέρω αν θα δουλέψουν τα POSIX threads libraries for windows της redhat. Με Intel C, Microsoft C και GNU C πάντως δουλεύουν. Ο builder που χρησιμοποιείς είναι free;

Επίσης σκέψου σοβαρά το ενδεχόμενο να πάνε τα tools opensource. Είναι ζήτημα δεοντολογικό αλλά και πρακτικό. Εκτός και αν σκοπεύεις στο μέλλον να τα πουλήσεις, οπότε θα πρέπει να μιλήσουμε για τα ποσοστά μας . :p

ΥΓ. Τα προϊόντα της Borland ήταν καλά στην εποχή τους. Για τα σημερινά δεδομένα, η ποιότητα του κώδικα που παράγουν δεν είναι και η καλύτερη. Σίγουρα μπορούμε να δουλέψουμε και με αυτή, αλλά ίσως να ήταν καλύτερο να κάνουμε port τα tools σε κάτι πιο μοντέρνο.

MrSeanKon
03-01-2005, 02:50
Οχι τα Tools φτιαχθηκανε χαρη στις ιδεες του nitza666 και προφανως δεν προκειται να πουληθουν. :018:
Ξεκινησα καποτε για το χαβαλε αυτο το προγραμμα και με το διαβα του χρονου εχωσα χρηματα και χρονο κι επεκταθηκε παρα πολυ.
Θα ειναι παντοτε freeware τι να τα κανω τα πολλα χρηματα κακο θα μου κανουν και ξερεις το γιατι νομιζω. :040:
Δεν εχω τη διαθεση να κερδισω κατι τα εχω γραμμενα αυτα στα ***** οπως και τις δοξες απλα παλαβιαρικα ατομα ψαχνω.
Oσο για το opensource δεν εχει νοημα γιατι τι να τον κανεις τον κωδικα ως επι των πλειστων χρησιμοποιει μακροσκελεις τυπους τους οποιους εγω τους υπολογιζω με Katsumoτροπους :044: ......
Το πως εγω υπολογιζω τις παραμετρους αυτες ή τις πιθανοτητες ευστοχιας ειναι εννοιες που αναλυονται σε βιβλια Ανωτερων Μαθηματικων LOL περισσοτερο ταλαιπωριεμαι μερικες φορες στο μαθηματικο τμημα παρα στο programming... :096:
Τι να σου λεει ενας τυπος του στυλ msf=1.956*expl(4.53,3.156)+vcore*logl(5.45*vcore_d iff)....
Εδωσα ενα τμημα ενος μακροσκελη τυπου προφανως ειναι αχρηστο αφου ενδιαμεσα πριν δωσω τις σχεσεις εχω κανει ενα σωρο υπολογισμους με τα Maple, Mathematica.
Μονο τη μεθοδο των ελαχιστων τετραγωνων εχω γραψει απο την αρχη κι αυτη βρισκεται ευκολα σε opensource καθως και τον απλο αλγοριθμο του Jacobi.
Επισης ενα μεγαλο τμημα του κωδικα ειναι ολο μπλα μπλα μπλα μπλα ανοιξε το ταδε ComboBox κλεισε το αλλο κοψε το Label κλπ...
Προφανως δεν προκειται να δωσω με τιποτα τον κωδικα για τα wallpapers (θα σου πω το γιατι αν θες μεσω υ2υ).. :044:

Τωρα τι εννοεις με το "Ο builder που χρησιμοποιείς είναι free; " :101:
Αν εννοεις την Borland C++ Builder ειναι ρ2ρ :050:
Παντως την εχει κι ο circular αυτη.
Ομως το να γραψεις σε ANSI C κωδικα χμ θα υποστηριζονται τα SSE, SSE2, 3dNow?
Στην τελικη ας γινει πρωτα σε console mode και μετα το κανουμε σε Windows περιβαλλον θα το φτιαξει ο circular στη C#...
Στο προγραμμα που διανεμεις μπορουμε να ξεκινησουμε εστω απο εκει αρχικα?
Καταρχας κανεις stability testing?
Δηλαδη τα δεκαδικα ψηφια που υπολογιζονται τα ελεγχεις??
Bεβαια το κακο ειναι οτι πρεπει να υπολογισεις 10^Ν ορους για να βρεις Ν δεκαδικα ψηφια του π=3.14159 με τη σειρα Taylor ενω η αντιστοιχη σειρα απαιτει Ν ορους για να βρεις Ν δεκαδικα ψηφια του e=2.71...
Oποτε αν ειναι να περιμενουμε πολυ χρονο για να τσεκαρει το επομενο ψηφιο ***** γιαυτο ειπα περι Ramanujan αρχικα (αν κι ειναι λιγο πικρα ο αλγοριθμος αυτος μαλλον θα τον ΒΑΝ θα χρησιμοποιησουμε αλλη μεθοδο)...
Eπισης θα ηθελα τα φωτα σου στο εξης ζητημα:
Κανοντας χρηση απειρων δεκαδικων ψηφιων θα χρησιμοποιει το προγραμμα μνημη ή οχι τοσο πολυ???
Με την priority τι θα κανουμε??
Στο δικο σου προγραμμα δεν εχεις βαλει priority ακομη...
Δες ας πουμε τον CPU Stretcher οπου βαζοντας τον σε Highest Priority κολλανε ολα ασχετα αν δεν ειναι βελτιστος ομως δε θελω 100% τσιτωμα σου ανελυσα τη φιλοσοφια του σε αλλο thread.

DarthMoul
03-01-2005, 03:46
To pctbench δεν είναι stability tester. Είναι performance benchmark. Φυσικά και ελέγχω την ορθότητα του αποτελέσματος, το οποίο όμως γνωρίζω εκ προϊμίου. Αν δεν δώσει σωστό αποτελέσμα χτυπάει error.

Αν θέλετε να το χρησιμοποιήσετε σαν βάση για τον tester δεν είναι δύσκολο. Αφαιρείται τα printouts, βάζεται κάποιες συναρτήσεις μέσα σε ατέρμονο loop και είναι έτοιμο. Πάντως σε C# δεν θα πάει εύκολα κυρίως λόγω των threads που χρησιμοποιεί. Θα χρειαστείτε C υποχρεωτικά, εκτός και να παίξετε μόνοι σας με threads σε C#. May the force be with you :003:

Τα SSE/SSE2/SSE3 και 3dnow/3dnowext έχουν νόημα όταν κάνεις benchmarking. Όταν κάνεις stability test είναι παντελώς άχρηστα γιατί στην πραγματικότητα είναι microcode. Δηλαδή software το οποίο ο κατασκευαστής έκανε build-in μέσα στην CPU για να κάνει βέλτιστη αξιοποίηση πόρων και για συγκεκριμένες διαδικασίες. Πχ mp3 encoding/decoding. Θα σε σύμφερε να τα χρησιμοποιήσεις μόνο αν έχεις ανυσματικές διαδικασίες που χρησιμοποιούν πολύ μνήμη. Αλλιώς άστα. Εγώ στο pctbench δεν τα χρησιμοποίησα γιατί το θέλω να είναι multiplatform. Οι σοβαροί compilers, αναγνωρίζουν που θα αποδόσει η χρήση τους και τα προσθέτουν μόνοι τους. Μπορείς να τα χρησιμοποιήσεις με ANSI C χωρίς πρόβλημα, αρκεί ο compiler να έχει ενσωματωμένο το αντίστοιχο API.

Αν διάβασες το readme του pctbench γράφω πως οι σειρές Taylor αντενδείκνυνται για παραγωγικούς αλγορίθμους. Είναι πολύ αργές, και σίγουρα θα χτυπήσουν overflow από κάποιο σημείο και μετά. Για benchmarking και stability tests πάντως δεν θα έχεις πρόβλημα. Υπολόγισε 15 δεκαδικά ψηφία και βάλε ένα loop ή ένα χρονόμετρο για να κάνει αυτή την δουλειά συνέχεια. Κάθε φορά έλεγχε αν υπολόγισε το αποτέλεσμα σωστά και είσαι οκ!

Τώρα για να πας σε άλλο αλγόριθμο για υπολογισμό απείρων δεκαδικών, όπως το super pi, εκεί θέλεις μνήμη. Το super Pi χρησιμοποιεί ένα byte κάθε δύο ψηφία και τα αναπαριστά με κώδικα BCD.

Το ζήτημα του priority είναι platform dependent. Μπορώ να σου απαντήσω τι θα έκανες σε unix. Για τα windows μάλλον θα σε βοηθήσει ο circular. Εγώ στην θέση σου δεν θα τα πείραζα πάντως. Σκέψου μόνο ότι παραβιάζεις την προτεραιότητα του filesystem. Aν τελικά το κάνεις, δώστο σαν επιλογή από τον χρήστη και βάλε πολλά disclaimers και warnings.

circular
03-01-2005, 12:46
Λοιπόν παιδιά, πάμε ένα ένα.

@Sean: Όπως σου ξαναείπα αν το κάνουμε τελικά σε C# δεν ξέρω αν υπάρχει τρόπος να ζητήσεις από τον compiler να σου παράγει κώδικα βελτιστοποιημένο για SSE2-3/3Dnow κλπ. Τα εκτελεσιμα που παράγονται από τη C# είναι σε μια ενδιάμεση μορφή και μεταγλωττίζονται για τη μηχανή σου Just In Time για να εκμεταλλευτούν τις όποιες δυνατότητες έχει αυτή. Όσο για μεγάλους αριθμούς έχω κλάσεις σε C++ και σε C# που ειναι ουσιαστικά μεγάλοι binary αριθμοί άπειρου μήκους με καλή απόδοση (μόνο η διαίρεση και η αφαίρεση μας τα χαλάνε λίγο από άποψη πολυπλοκότητας) ώστε να μη χρειάζεται να χρησιμοποιούμε BCD ή άλλες μαιμουδιές.

@DarthMoul: Ο μεταγλωττιστής της borland είναι δωρεάν όπως και ο εκσφαλματωτής της (τσ, τσ, που'σαι Καβουρα να δεις τι θυμάμαι! ) αλλά όχι ανοιχτού κώδικα. Τα threads στη C# είναι απλούστατα και μπορείς να ορίσεις προτεραιότητες με μια γραμμή κώδικα και δυναμικά, αλλά για να θέσεις προτεραιότητα Realtime πρέπει να έχεις δικαιώματα διαχειριστή στο μηχανημα. Όσο για το Platform independence μην ξεχνάς το mono :D

Επίσης μην ξεχνάτε πως υπάρχουν και άλλοι τρόποι να μελετήσουμε τη σταθερότητα του επεξεργαστή, πχ επαλήθευση ψηφιακών υπογραφών (just an idea!)

MrSeanKon
03-01-2005, 14:30
DarthMoul το ξερω οτι η σειρα Taylor ειναι για τον π**τσο για τον υπολογισμο του π=3.14159... και το απεδειξα θεωρητικα (μια ανισωση λυνεις)...
Επαναλαμβανω οτι υπαρχουν αλλες καλυτεροι μεθοδοι για να φθασουμε στο πολυποθυτο αποτελεσμα γρηγορα αλλα και συναμα να μην προγραμματισουμε υπερβολικα.
Η σειρα Taylor κανει μονο για τον υπολογισμο του e=2.71...
Aρα εκ των προτερων μπορω να τρεξω τα Maple, Mathematica και να εχω υπολογισει τους αριθμους αυτους με διαφορα δεκαδικα ψηφια (π.χ. 1Μ, 2Μ, 4Μ) κλπ και να κανω ανα τακτα χρονικα διαστηματα ελεγχο των τελευταιων δεκαδικων ψηφιων αν ειναι ΟΚ γιατι δεν εχει και πρακτικη σημασια DarthMoul να περιμενεις να κανει 10^15 oρους και να τσεκαρεις αν το 15ο δεκαδικο ψηφιο που υπολογισε η Taylor αν ειναι το σωστο.

Χαιρομαι ομως σε αυτο που ειπες DarthMoul! :031:
Δηλαδη οτι βασικα πρεπει να τσιτωσουμε την FPU για stability test κι οχι τα SSE, SSE2 κλπ αρα κι η αναθεματισμενη Borland C++ Builder αρκει για να πεταξει τα ματια εξω στον επεξεργαστη και να τα δει κωλυομενα (αν και δεν ευσταθει δοκιμιακα η εκφραση αυτη εντουτοις χρησιμοποιειται). :033:
Kι αυτο γιατι με καιει???
Διοτι ηδη παρεχω τα Tools και τον CPU Stretcher ξεχωριστα ειναι καπου σπασ**δικο να δινω ξεχωριστα προγραμματα οποτε μελλοντικα οταν θα στρωσει ο CPU Stability Tester θα τον ενσωματωσω στο κυριως πακετο.

circular μπραβο πολυ καλη η ιδεα σου θα το επεκτεινουμε στο μελλον!
Βεβαια αναθεμα αν καταλαβα τι εννοεις θα μας τα εξηγησεις. :102:
Το ειδες ρε διαολε πεταξες πολυ καλη ιδεα! ;)
Κι ησουν λιγο διστακτικος στην αρχη!

Δυστυχως η ***** ο Ρ4 που εχω θα με ταλαιπωρησει στους μαμουθ υπολογισμους λογω της αδυναμης FPU τεσπα θα βαζω διπλα και τετραπλα πακετα υπολογισμων για να αναβει το ΗΤ. :036:
Ομως εχω να σας αναφερω κατι αλλο:
Οταν καποιοι μαθηματικοι υπολογισμοι εκτελεστουν εσφαλμενα τοτε θα προκυψει ενα μουφα αποτελεσμα.
Αν το ξανατρεξουμε για δευτερη φορα και ξαναβγαλει μουφες τοτε το λαθος δε θα ειναι το ιδιο ;)
Aυτο το εχω δει ιδιως στο Mathematica οποτε θα μας διευκολυνει στην υλοποιηση του αλγοριθμου.

Darthmoul αν εχεις καποια links με κωδικα στη C για arbitrary precision ποσταρησε τα.

Αντε θα το κανουμε ΒΑΝ το Prime95 στο μελλον!
Oλα ΒΑΝ ρε! :077:

DarthMoul
03-01-2005, 15:28
Και 10πλά πακέτα να τρέξεις σε P4, τους ίδιους χρόνους θα πάρεις. Το Hyperthreading δεν αποδίδει όταν 2 ή περισσότερα threads διεκδικούν τον ίδιο πόρο, πχ την FPU.

Κώδικα για arbitrary precission σε C θα βρεις σε καμμιά βιβλιοθήκη όπως η GMP. Μπορώ να σου δώσω links. Το 90% όμως θα είναι γραμμένο σίγουρα σε assembly. Καλύτερα φτιάξτο μόνος σου σε C και πέρασε μου τα sources για hand optimizations.

MrSeanKon
13-01-2005, 12:30
Λοιπον ψαχνοντας δεξια κι αριστερα για λιγο δε βρηκα κατι αξιολογο που να :067: παρει...
Μου εδωσε κι ο circular μια κλαση για Big Integers αλλα με μπερδεψε χειροτερα... :101:

Βρηκα δυο προγραμματα ετοιμα γραμμενα στη C κιολας μικρου μεγεθους (260 κι 160 γραμμες) αλλα ομως οταν τα ετρεξα παρηχθησαν λαθη μετα απο καποιο σημειο.
Επισης δε χρησιμοποιουσαν arbitrary precision αλλα υπολογιζαν το π=3.14 με μεθοδους διαφορων κι υπολοιπων οποτε δεν εκαναν και χρηση της μνημης.
Tελος παντων εψαξα κι αλλου περισσοτερο κι επιτελους βρηκα εναν πολυ καλυτερο αλγοριθμο (του Borwein) σε ταχυτητα απο οτι αυτος του Ramanujan και λιγο πιο απλος στο να τον προγραμματισουμε συγκριτικα με αλλες μεθοδους.
Κατα 99% πιστευω οτι και το προγραμμα SuperPi χρησιμοποιειε τον ιδιο.
Κανει χρηση επαναληπτικων μεθοδων κι απο χθες καθησα κι αναλυω το ρημαδι για να δω πως λειτουργει κλπ...
Να μελετησω μετα απο ποσες επαναληψεις παραγονται τα σωστα δεκαδικα ψηφια...
Οταν ολοκληρωσω τη μελετη μπορω να σας τον αναλυσω πληρως.
Και να σας δωσω τις ιδεες πως διαολο μπορουμε να τσεκαρουμε και που κλπ...
Ομως αυτες τις αναθεματισμενες :040: ρουτινες για το arbitrary calculation ποιος θα τις φτιαξει?? :040:
Γιατι ειναι αγγουρια απο οτι βλεπω και ξερετε οτι απο προγραμματισμο δεν κατεχω πολυ το αντικειμενο.
Συνεπως Darthmoul πιστευω να εχεις καποιες ρουτινες γραμμενες που να κανουν αυτες τις πραξεις.
Αν μπορεσεις να γραψεις και καποιες προσθετες (ΟΚ με το πασσο σου) που να υπολογιζουν καποια εξτρα πραγματα εχει καλως αλλιως χλωμο το βλεπω να το κανω μονος.
Μπορω να σε βοηθησω και στο beta testing φυσικα μια και το προγραμμα θα κολλαει προφανως σε o/c καταστασεις αλλα και στο Μαθηματικο τμημα οπου θα εχεις αποριες.
Το κακο εινια οτι μπορω να υλοποιησω ενα μινι προγραμμα του π=3.14 σε Mathematica αλλα μεχρι να εξαγει τα αποτελεσματα θα περνανε αιωνες!
LOL βλεπω να ξαναπαιρνω AMD.... :033:

DarthMoul
13-01-2005, 12:48
Βρεις τον αλγόριθμο που θέλεις και δώσε μου links. Θα τον μελετήσω, θα κάνω δοκιμές και θα σε ρωτήσω. Θα το φτιάξω από το μηδέν σε ansi C για να το περάσει και ο δικός σου compiler, χωρις χρήση sse κλπ. Θα κάνω και ένα εκτεταμένο profiling με τα profiling tools της digital στον alpha ώστε να έχουμε καλές επιδόσεις ανεξάρτητα από το optimization level του compiler και θα παίξουμε έτσι. Το πρόβλημα είναι ότι εγώ δεν είμαι μαθηματικός και μπορεί χρειαστώ κάποια βοήθεια. Χωρίς βιασύνη και σιγά σιγά θα τα καταφέρουμε. It will be ready when it will be ready.

MrSeanKon
13-01-2005, 12:57
Thanks DarthMoul καπως ετσι θα γινει μαλλον η δουλεια.
Το ενα χερι νιβει το αλλο και τα δυο μαζι το προσωπο. :)
Oποτε θα αρχισω με το μαλακο να κανω αναλυση του αλγοριθμου κι ο,τι παρατηρησεις screen captures θα εχω θα τα βαλω σε ενα Word file.
Οταν ολοκληρωθει θα το ανεβασω εδω με ποστ για να το παρετε εσυ κι ο circular.
OK oυτε κι εγω ειμαι Μαθηματικος στο επαγγελμα (χομπυστας ειμαι).
Ομως τα προγραμματα που εχω θα μας βοηθησουν το μεγιστο μια και τα χρησιμοποιω επι 12 χρονια.
Θαρρω οτι αρχικα ας γινει σε κονσολα μορφη μετα οταν θα μου εξηγησετε με το circular τι κανει σε καποια σημεια που δε θα καταλαβαινω μπορουμε να το κανουμε σε Windows ή το κανει κι ο circular σε τελικη αναλυση αν θα ειναι λιγο αγγουρι.
Απλα αν το κανω εγω σε Windows (με τη βοηθεια σας) θα ενσωματωθει καποτε στο πακετο των Tools και να μην ειναι χωρια ενα σωρο προγραμματα.
Τεσπα αυτο ειναι μια λεπτομερεια ειδομεν.
Μενει να βρω δυο αλγοριθμους οπου υπολογιζουν με επαναληψη τετραγωνικες ριζες κι αντιστροφους αν κι εχω γρατσουνισει στο χαρτι καποιες ιδεες...

DarthMoul
13-01-2005, 13:25
Διευκρίνησε κάτι,
α. θα χρειαστουν arbitrary precission υπολογισμοί;
β. θέλεις να γίνουν όλα αυτά multithreaded;
Και έχε στο μυαλό σου ότι το εργαλείο της Borland που χρησιμοποιείς δεν είναι για πολλά, πολλά λόγω παλαιότητας.

MrSeanKon
13-01-2005, 13:33
Ναι θα χρειαστουν οπωσδηποτε τεραστιοι δεκαδικοι=arbitrary precision αυτο εννοουσα στα υ2υ που ανταλλαξαμε.
Ομως μια και θα αναλυσω τον αλγοριθμο θα ξερεις εκ των προτερων ποσα δεκαδικα ψηφια περιπου θα πρεπει να χρησιμοποιησεις.
Υπομονη στο ζητημα αυτο λιγακι θα σου στειλω βημα προς βημα τη μαθηματικη αναλυση τουλαχιστον για να αρχισουμε απο μια μηδενικη βαση και να μην ψαχνομαστε.
Χμ απο οτι βλεπω ισως χρειαστει να βαλουμε λιγο αναλυση Fourier μεσα θα το ψαξω κι αυτο.
Εκτος κι αν εχεις δικη σου μεθοδο πως μπορεις να πολλαπλασιασεις δυο τεραστιους αριθμους.

Οσο για το β ερωτημα σου θα προτεινα (αν και δεν ξερω κατα ποσο θα σε κουρασει) να μη γινει αρχικα.
Αν ομως δεν ισχυει κανε το! :)

DarthMoul
13-01-2005, 13:38
Ναι θα χρειαστουν οπωσδηποτε τεραστιοι δεκαδικοι=arbitrary precision αυτο εννοουσα στα υ2υ που ανταλλαξαμε.
Ομως μια και θα αναλυσω τον αλγοριθμο θα ξερεις εκ των προτερων ποσα δεκαδικα ψηφια περιπου θα πρεπει να χρησιμοποιησεις.
Υπομονη στο ζητημα αυτο λιγακι θα σου στειλω βημα προς βημα τη μαθηματικη αναλυση τουλαχιστον για να αρχισουμε απο μια μηδενικη βαση και να μην ψαχνομαστε.
Χμ απο οτι βλεπω ισως χρειαστει να βαλουμε λιγο αναλυση Fourier μεσα θα το ψαξω κι αυτο.
Εκτος κι αν εχεις δικη σου μεθοδο πως μπορεις να πολλαπλασιασεις δυο τεραστιους αριθμους.

Οσο για το β ερωτημα σου θα προτεινα (αν και δεν ξερω κατα ποσο θα σε κουρασει) να μη γινει αρχικα.
Αν ομως δεν ισχυει κανε το! :) Θα πρέπει να κατασκευάσουμε arbitrary precission ρουτίνες, ή μπορούμε να χρησιμοποιήσουμε έτοιμες βιβλιοθήκες;
Το αν θα γίνει εύκολα multithreaded θα το ξέρω αφού μελετήσω αυτά που θα πεις. Το ζήτημα είναι ότι εσύ θα έχεις προβλήματα με τον builder αν θελήσεις ποτέ να ενσωματώσεις, είτε arbitrary precission libraries, είτε posix thread libraries.

MrSeanKon
13-01-2005, 13:46
Αν εχεις ετοιμες τις ρουτινες ποιος ο λογος να μην τις χρησιμοποιησεις??
Για να γλυτωσεις χρονο και κοπο.

Για να γινω σαφεστερος:
Χρειαζομαστε τις εξης:
1) Υπολογισμου τετραγωνικης ριζας.
2) Υπολογισμου αντιστροφου (το 1/χ π.χ.).
3) Πολλαπλασιασμου.
4) Προσθεσης.

Αν δεν απατωμαι την 2 και την 4 πρεπει να τις εχεις ηδη στο benchmark που μοιραζεις ηδη.

DarthMoul
13-01-2005, 13:56
Αν εχεις ετοιμες τις ρουτινες ποιος ο λογος να μην τις χρησιμοποιησεις??
Για να γλυτωσεις χρονο και κοπο.

Για να γινω σαφεστερος:
Χρειαζομαστε τις εξης:
1) Υπολογισμου τετραγωνικης ριζας.
2) Υπολογισμου αντιστροφου (το 1/χ π.χ.).
3) Πολλαπλασιασμου.
4) Προσθεσης.

Αν δεν απατωμαι την 2 και την 4 πρεπει να τις εχεις ηδη στο benchmark που μοιραζεις ηδη. Στο bench δεν κάνω καθόλου arbitrary υπολογισμούς. Χρησιμοποιώ τους standard data types του compiler. Το απόγευμα που θα πάω σπίτι, θα κοιτάξω να βρω συναρτήσεις για arbitrary υπολογισμό όλων των παραπάνω.

ΥΓ. Αν οι συναρτήσεις που θα βρω είναι opensource / GPL υποχρεωτικά όλο το project πρέπει να πάει opensource.

MrSeanKon
13-01-2005, 21:39
Α ΟΚ γιατι ειχα μια παρεξηγημενη αντιληψη οτι εκανες arbitrary precision στο benchmark...
ΟΚ για το opensource LOL αφου το θες αλλα ειπαμε οτι η Pro Edition δεν προκειται να μοιραστει σε κανεναν :098: τωρα μην σκαλιζεις αλλο τα ειπαμε μεσω υ2υ παλιοτερα. :040:
Στην τελικη αναλυση μπορουμε να δωσουμε σε διανομη αν καποτε τα βαλω σε Borland το τμημα εκεινο του κωδικα οπου θα εχουμε παρει ιδεες αλλα θα βαλουμε κι εξτρα κωδικα ελεγχου εννοειται.
Αυτο θα γινει σε attachment στο thread με τα on line manuals.
Ομως στο ξαναλεω οτι ο κυριος κωδικας εχει μεσα πολυπλοκους τυπους και το πως υπολογιζονται δεν τον περιγραφω με σχολια λογικη Μαυρου Κουτιου θα μου πεις ως προγραμματιστης το δεχομαι και προχωρω.
Για να κανω αναλυση πως υπολογισα εκεινα τα μακρυναρια ειναι θεμα καθαρων Μαθηματικων.

Tελικως μετα απο 10000 ζορια θα ανεβασω ενα δειγμα του αλγοριθμου για τον υπολογισμο του π=3.14.
Μελετηστε τον και θα τα πουμε. :023:
Θα αποδειξω πειραματικα στο μελλον οτι για 64Μ δεκαδικα ψηφια απαιτουνται 25 βροχοι.
Βλεπετε οτι ο Ιαπωνας δεν επεκτεινε το προγραμμα LOL στα ***** μας εμεις γιατι ειμαστε εδω ετσι Darth+circular? :002:
Oσο για το SuperPi εννοει οτι το 16Κ ισουται με 16*1000 κι οχι 16 * 1024 καθως και το 1Μ=1024*1024 κι οχι 1000*1000.
Αυτο σας το λεω γιατι εκανα χθες πολλαπλο τσεκαρισμα των εξοδων που εβγαζαν τα SuperPi και PiFast κι ειδα οτι τα δεκαδικα ψηφια εχουν αυτο το πληθος. :D

Σκεφθειτε οτι σε AMD συστηματα τα 32Μ ειναι βαρυ τσιτωμα και σε μερικες περιπτωσεις εφαμιλο του Prime95. :108:
Σε Intel οχι αλλα ελπιζω Darth να κανεις πολυ καλη δουλεια με τα φακιρικα σου και να το κανεις και για Intel εξισου βαρυ.
Αναλογιστειτε και το αλλο:
Αν βαλουμε να κανει και 64Μ δεκαδικα ψηφια τοτε θα βαρυνει ακομη περισσοτερο!
Στο μελλον Darth θα κανει 128Μ δεκαδικα ψηφια, 256Μ κι ουτω καθεξης αναλογα με τη συνολικη διαθεσιμη μνημη που θα εχουν κατα μεσο ορο τα PC μας.
Οποτε κοβω μετρημενες τις μερες του Prime95! :106:
Κι αυτο γιατι πολλες φορες στον Α64 εβλεπα να ολοκληρωνει κανονικα 16Μ υπολογισμους αλλα στα 32Μ πεταγε αμεσως λαθη.

Ολα ΒΑΝ ρε!
Oι ελληνες Μαθηματικοι μελετησαν το π=3.14 καιρος λοιπον να συνεχισουμε κι εμεις!

1) Εισαγωγή
Υπάρχουν διάφορες μέθοδοι για τον υπολογισμό του π=3.14.. κι η καθεμία έχει τα δικά της μειονεκτήματα/πλεονεκτήματα.
Ένας ταχύς αλγόριθμος αλλά και συνάμα απλός σχετικά σε κωδικοποίηση είναι αυτός του Borwein.
Έχει διπλάσια ταχύτητα σύγκλισης από ότι η σειρά Ramanujan ενώ το πλήθος των πράξεων είναι λιγότερο.
Η ταχύτερη μέθοδος υπολογισμού του π=3.14.. είναι με τη μέθοδο Chudnovsky αλλά κι αυτή έχει πολυπλοκότητα κωδικοποίησης.
To πρόγραμμα PiFast χρησιμοποιεί και τις δύο μεθόδους για benchmarking.
Επομένως το πρόγραμμα CPU Stability Tester θα χρησιμοποιήσει τη μέθοδο Borwein για να γλυτωσουμε τον υπολογισμου του Ν! (το παραγοντικο δηλαδη 1*2*3*4*....)


2) Aρχικοποιηση
Χρησιμοποιεί τρεις μεταβλητές: τις χ, π, ψ.
Αρχικά θέτουμε:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3291

όπου θα πρέπει να υπολογιστούν με την ανάλογη ακρίβεια οι παράμετροι αυτοί.
Κι εννοώ ότι αν π.χ. θέλουμε να υπολογίσουμε το π=3.14 με 1000 δεκαδικά ψηφία τότε εσωτερικά θα πρέπει να γίνουν οι πράξεις με λίγο μεγαλύτερο πλήθος δεκαδικών ψηφίων.
Αυτά θα φανούν παρακάτω.

MrSeanKon
13-01-2005, 22:20
3) H επαναληπτικη μεθοδος

Στη συνέχεια υπολογίζονται διαρκώς οι ποσότητες:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3293

για i=0,1,2,….,n και τελικά για κατάλληλο n η ποσότητα Πi τείνει στο 3.14…
Ας δοκιμάσουμε να τρέξουμε τους δύο πρώτους βρόχους χρησιμοποιώντας δέκα δεκαδικά ψηφία ακρίβεια.
Άρα θα έχουμε:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3295

και στη συνέχεια:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3296

οπότε στον επόμενο βρόχο οι παράμετροι θα είναι:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3297

Αξίζει να παρατηρήσουμε ότι μέχρις εδώ το π έχει υπολογιστεί με οκτώ δεκαδικά ψηφία ακριβώς μια κι η ακριβής τιμή του είναι π=3.14159265…

MrSeanKon
13-01-2005, 22:30
4) Ερευνώντας τον αλγόριθμο

Ας μελετήσουμε περαιτέρω τις άνωτερω σχέσεις.
Με την παραδοχή ότι μετά από ένα πλήθος επαναλήψεων n θα συγκλίνει στο πολυπόθητο αποτέλεσμα αυτό σημαίνει ότι δε θα διαφέρει κατά ένα πλήθος δεκαδικών ψηφίων από την παράμετρο η παραμετρος Πi απο τη Πi+1.
Πράγματι συγκρίνοντας τα βλέπουμε ότι έχουν τα τρία πρώτα δεκαδικά ψηφία παρόμοια.
Άρα όταν θα έχουμε βρει «πολλά δεκαδικά ψηφία» οι παράμετροι αυτές δε θα διαφέρουν αισθητά.
Κοιτάζοντας τη δεύτερη σχέση του τρίτου εδαφίου μπορούμε να εξάγουμε τα εξής αποτελέσματα:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3298

Κάνοντας τις πράξεις μπορούμε να πειστούμε ότι τα Xi+1, Yi θα τείνουν στη μονάδα κι αυτό είναι το κριτήριο σύγκλισης όπου θα σταματούν οι υπολογισμοί. :045:
Ειδικα το Υi θα εχει την ιδια ταξη σφαλματος με το p που υπολογιζουμε (δειτε παρακατω το 35ο ποστ μου).
Στη συνέχεια δίνω κάποιες φωτογραφίες τρέχοντας τον αλγόριθμο στο Mathematica.

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3301

Η εικόνα αυτή είναι οι πράξεις που κάναμε χειρωνακτικά παραπάνω και πράγματι φαίνεται ότι υπολογίστηκαν οκτώ δεκαδικά ψηφία ακριβώς. :003:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3302

Εδώ έκανε συνολικά 18 βρόχους κι υπολογίστηκαν 715318 ψηφία σωστά (δειτε και το 35ο ποστ για περισσοτερες λεπτομερειες).
Για θεωρείστε το πρόγραμμα SuperPi (εκείνο του Γιαπωνέζου).
Είμαι σχεδόν σίγουρος ότι χρησιμοποιεί τον ίδιο αλγόριθμο για να υπολογίζει το π=3.14. :059:
Προσέξτε την επόμενη φωτογραφία:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3303

Φαίνεται ότι εκτελεί 18 βρόχους κι υπολογίζει το π=3.14 με 512Κ ψηφία δηλαδή 512*1024=524288.
Παραπάνω απέδειξα ότι με 18 βρόχους υπολογίστηκαν 715318 ψηφία σωστά άρα μέσα είμαστε.
Γιατί 524288 < 715318 OK? :116:
Η ταχύτητα σύγκλισης του αλγορίθμου είναι τετραγωνικής τάξεως περίπου δηλαδή αν κάνουμε 19 επαναλήψεις θα αναμένεται να υπολογίσουμε 715318*2=1430636 ψηφία σωστά ή έστω κάπου εκεί κοντά.
Αν τρέξετε το πρόγραμμα του Γιαπωνέζου θα δείτε ότι για 1Μ δεκαδικά ψηφία =10242 =1048576 κάνει 19 βρόχους!
Συνεπώς μέχρι και 32Μ υπολογισμούς μπορούμε με τη βοήθεια του προγράμματος αυτού να γνωρίζουμε το πλήθος των επαναλήψεων.
Ας το δούμε κάνοντας κι extrapolation του πειραματικού τύπου που δώσαμε (παρολο που ειναι επικινδυνο οταν ξεφευγουμε):

Για 715318 ψηφία --> 18 βρόχοι.
Για 2*715318 ψηφία --> 19 βρόχοι.
Για 4*715318 ψηφία --> 20 βρόχοι.
Για 8*715318 ψηφία --> 21 βρόχοι.
Για 16*715318 ψηφία --> 22 βρόχοι.
Για 32*715318 ψηφία --> 23 βρόχοι.
Για 64*715318 ψηφία --> 24 βρόχοι.
Για 128*715318 ψηφία --> 25 βρόχοι.

LOL αν το τρέξετε για 32Μ = 32 * 10242 = 33554432 ψηφία θα δείτε ότι τρέχει 24 βρόχους!
Ε το ίδιο δε λέω παραπάνω??
Φυσικά και λέω το ίδιο αφού 32*715318 < 32Μ ενώ 64*715318 > 32Μ.
Suckzzz! :098:
Για τους 25 βροχους περιμενετε μεχρι να ολοκληρωσει το μαμουθ προτζεκτ ο Celeron αχ ποσο μου λειπει η AMD οπου ο Α64 ειχε τριπλασια ταχυτητα σε σχεση με τον Prescott σε τετοιους υπολογισμους..
ΗΤ θελαμε ας μας μεινει τωρα... :064:

DarthMoul
13-01-2005, 23:01
Να ρωτήσω κάτι; Για να πάρω ακρίβεια 1000 δεκαδικών, πόσους όρους χρειάζομαι;

MrSeanKon
13-01-2005, 23:06
Προσεξε:
Μην μπερδευεσαι με τη σειρα Taylor εκεινη ειναι αθροισμα ορων.
Εδω καμια σχεση.
Το n που ειδες παραπανω ειναι το πληθος των επαναληψεων.
Τωρα ποσους βροχους χρειαζεσαι για να βρεις 1000 δεκαδικα ψηφια δε θυμαμαι πρεπει να παω σπιτι και να ξανατρεξω το προγραμμα.
Παντως δεν προτεινω να κανει τοσο μικρους υπολογισμους.
Γιατι καθε φορα που θα τελειωνει ενα βροχο εμεις εκ των προτερων αφου θα ξερουμε τι πρεπει να εχει υπολογισει θα τσεκαρουμε εκει το τελικο αποτελεσμα κι αν δεν ειναι το αναμενομενο θα μας πεταει μυνημα οτι εγινε *****.
Κι αυτο στο λεω γιατι σε ενα υπερτσιτσωμενο συστημα Darth πεταει λαθη πριν καν μπει στους βροχους.
Στο σταδιο της αρχικοποιησης οπου πεταει ενα μυνημα "Not converge at SQRT" ή καπως ετσι...
Δηλαδη??
Προσπαθησε το προγραμμα του Γιαπωνεζου να υπολογισει την τετραγωνικη ριζα του δυο αρχικα αλλα τζιφος.
Συνεπως αν το προγραμμα μας εχει μενου με 1Κ, 2Κ, 10Κ, 128Κ, 256Κ, 512Κ, 1Μ, 2Μ, 4Μ, 8Μ, 16Μ, 32Μ θα μπλεξουμε πολυ με τους ελεγχους και θα πηξουμε αμφοτεροι.
Γιαυτο λεω ΒΑΝ σε μικρους υπολογισμους που ετσι κι αλλιως δεν πετανε λαθη.
Να ξεκινησουμε απο το πατροπαραδοτο 1Μ μετα να παμε στα 4Μ, 8Μ, 16Μ, 32Μ κι αν τα βρουμε με τη μνημη παμε και στα 64Μ.

Για μεγιστη ασφαλεια προτεινω οταν θες ας πουμε σωνει και καλα υπολογισμους Ψ δεκαδικων ψηφιων να χρησιμοποιειται εσωτερικα Ψ+100 δεκαδικα ακριβεια.
Μπορω να σου παραθεσω κι αλλα αποτελεσματα επ' αυτου.
Θα στηριχθουμε σε πειραματικα αποτελεσματα μη χαλιεσαι τον Η/Υ τον εχω για τετοιες δουλειες.
Το να κανουμε αναλυση σφαλματων σε κατι τετοιο και να ψαξω να βρω σχεσεις ειναι ακρως επιπονο και θα χασω τη μπαλα.
Επομενως ως ηθισται πονηρος ο βλαχος :106: θα αναλαβει το πειραματικο για να σου λυσει την απορια.
Θα ξερεις εκ των προτερων Darth την ασφαλη precision που θα πρεπει να χρησιμοποιησεις εσωτερικα μη μου φοβασαι τα Katsumi Labs θα παρουν φωτια! :023:

DarthMoul
13-01-2005, 23:15
Και κάτι ακόμα. Πως θα υπολογίσω το 1/ν χωρίς να κάνω διαίρεση; Και τετραγωνική ρίζα θα χρειαστώ. Επίσης κοίταξε αν υπάρχει τρόπος να γίνει κάτι από αυτά τα δύο με μικρές διαιρέσεις, δηλαδή μέσα στο range ενός float, γιατί όπως το βλέπω και πάει to ζήτημα θα πετάξουμε όλοι τους athlon και θα πάρουμε pentium :086:

MrSeanKon
13-01-2005, 23:24
Ο αντιστροφος ενος δεκαδικου αριθμου αλλα κι η τετραγωνικη ριζα υπολογιζονται με επαναληπτικες μεθοδους αναλογες.
Θα κανω στο μελλον update και θα σου δειξω το πως μπορουν να υλοποιηθουν.
Εχεις ομως αλλες αποριες στη γενικη μεθοδο που παρεθεσα?
Βεβαια ειναι λιγο νωρις να μου το πεις τωρα ισως ΟΚ θα ξανατσεκαρω το thread στο μελλον.

DarthMoul
13-01-2005, 23:27
Ο αντιστροφος ενος δεκαδικου αριθμου αλλα κι η τετραγωνικη ριζα υπολογιζονται με επαναληπτικες μεθοδους αναλογες.
Θα κανω στο μελλον update και θα σου δειξω το πως μπορουν να υλοποιηθουν.
Εχεις ομως αλλες αποριες στη γενικη μεθοδο που παρεθεσα?
Βεβαια ειναι λιγο νωρις να μου το πεις τωρα ισως ΟΚ θα ξανατσεκαρω το thread στο μελλον.Αφού θα πάμε υποχρεωτικά σε arbitrary precission που θα φτιάξουμε μόνοι μας, αυτό που χρειάζομαι είναι το 1/n το sqrt και πολύ profiling στον κώδικα, πριν μπω στο ψητό. Τα υπόλοιπα στην υλοποίηση θα είναι αστεία. Στην βελτιστοποίηση θα ζορίσει γιατί δεν υπάρχει καλός profiler για C++ και πρέπει να τα κάνω όλα σε C :086:

MrSeanKon
13-01-2005, 23:33
Darth μισο να σε ρωτησω κατι....
Και θελω να με διαφωτησεις...
Ο απωτερος στοχος μας δεν ειναι να υπολογιζει ταχυτατα το π=3.14 οπως το PiFast αλλα να κανει ο,τι κανει ομως να γινει ευαισθητο.
Δηλαδη ας κανει και το διπλασιο χρονο να βρει τα ψηφια απο οτι θα επρεπε αρκει να τσιτωνει μεγιστα το συστημα.

Οσο για την εκδοση που θα χρησιμοποιησεις C ή C++ κι αυτο το αφηνω σε εσενα αυτο ελειπε να σου θεσω περιορισμους.
Απλα με το μαλακο να γινουν ολα.
Οταν νιωσεις πιο ανετα βαζεις και πολλαπλα threads κι ο,τι αλλο θες!
Και τα Tools δε βγηκανε οπως ειναι τωρα σιγα - σιγα τα βελτιωσα κι ακομη θα τα βελτιωνω στο μελλον.

Ειπα και παραπανω ας γινει σε κονσολα μορφη να εξυπηρετησει εσενα πρωταρχικα και μετα θα δουμε πως θα βγει και σε Windows και μπιχλιμπιδια.
Αυτα ειναι λεπτομερειες.

emnezia
14-01-2005, 00:05
To καλύτερο πιστεύω για να δουλέψει σαν stability θα είναι να κάνει όσο το δυνατόν περισσότερους υπολογισμούς (=πράξεις) και παράλληλα να τσιτώνει εν μέρει και την fpu του επεξεργαστή ώστε να στρεσσάρεται το σύστημα.
Οπότε η μέθοδος που θα επιλεγεί πρέπει να οδηγεί σε πολλές πράξεις (Διαιρέσεις αν είναι δυνατόν που δίνουν τα περισσότερα λάθοι πιστεύω) και σε μεγάλα βήματα.

MrSeanKon
14-01-2005, 00:10
Βασικα η διαιρεση ειναι ο πιο χρονοβορα πραξη σε x86 (ας με διορθωσει καποιος αν παιζει κατι αλλο σε αλλη πλατφορμα) κι ειδικα αν αναλογιστουμε οτι θα εκτελουνται πραξεις με εκατομμυρια δεκαδικα ψηφια.
Οι αλγοριθμοι οπως ειδες emnezia ειναι επαναληπτικου τυπου αρα θα γινει αυτο μη φοβασαι.
Χμ :033: θα προτεινα στο DarthMoul να βαλει και λιγο spamming κωδικα μεσα :098: να που εδω το spam δε sucks! :040: στα ενδιαμεσα βηματα για να κανει περισσοτερο χρονο η cpu ετσι ρε παιδι μου ο απωτερος στοχος ειναι να υπολογιζει αλλα δε θα ηταν καλη ιδεα να της τραβαμε την προσοχη για λιγο? :050:
Θα ηθελα μια και μπηκες για λιγο στο χορο να ξανακοιταξεις τα τρια ποστ που εκανα στην προηγουμενη σελιδα με τη γενικη ιδεα του αλγοριθμου υπολογισμου του π=3.14 και να διορθωσεις/παρατηρησεις κατι αν εχεις.

DarthMoul
14-01-2005, 00:29
Αν ανεβάσεις το FSB στον θεό, και εγώ δίνω χρόνο στην μνήμη 300 κύκλους για να μου φέρει τα δεδομένα, ο taskmanager θα δείχνει 100%, αλλά η μνήμη θα δουλεύει όπως δουλεύει idle. Αν δεν κάνω out-of-order execution και εκτεταμένη χρήση παραλληλισμών, ποτέ δεν θα χρησιμοποιήσω ταυτόχρονα όλες τις μονάδες εκτέλεσης της CPU. Με άλλα λόγια αυτά που λετε, θέλουν overoptimized κώδικα. Είναι σαν να μου λετε ότι δοκιμάζετε τις αντοχές του αυτοκινήτου, με τον κινητήρα στις 7000 στροφές, αλλά καλύπτοντας απόσταση 50 χλμ την ώρα επειδή κάνετε ζικ-ζακ. Στον δρόμο όταν οδηγείς δεν κάνεις ζικ-ζακ. Ευθεία πας και τα χώνεις. Αυτές είναι οι πραγματικές συνθήκες. Το πρόγραμμα θα γίνει όσο καλύτερο μου επιτρέπει ο χρόνος μου και θα έχει κάπου και ένα χρονόμετρο έτσι για δούμε τι ψάρια πιάνουμε :031:

Το ζήτημα είναι πως έτσι όπως πάει δεν θα παίξει καθόλου η FPU, γι αυτό ρώτησα αν υπάρχει αλγόριθμος για το 1/ν ή για την ρίζα που να χρησιμοποιεί διαιρέσεις μέσα στο εύρος των 64 bits ή το πολύ των 96 bits.

ΥΓ. H διαίρεση είναι η πιο αργή στα x86 cisc zombies που μας φορτώνουν με το ζόρι. Σε RISC επεξεργαστές είναι η πιο γρήγορη πράξη. Στους EPIC, όπως ο Itanium είναι ακόμα πιο γρήγορη από τους RISC παρόλο που ουσιαστικά δεν υπάρχει καν FPU. (Αλγόριθμος Newton/Raphson σε βάθος τριών επιπέδων, ΙΒΜ 1958. Software Rulez!!!)

MrSeanKon
14-01-2005, 00:50
Το ζήτημα είναι πως έτσι όπως πάει δεν θα παίξει καθόλου η FPU, γι αυτό ρώτησα αν υπάρχει αλγόριθμος για το 1/ν ή για την ρίζα που να χρησιμοποιεί διαιρέσεις μέσα στο εύρος των 64 bits ή το πολύ των 96 bits.


Οταν θα ειμαι ετοιμος θα σας δωσω ο,τι μπορεσω να βρω απο καποια βιβλια που εχω υποψιν.
Μακαρι ο circular να σε βοηθησει περισσοτερο στο ζητημα αυτο αν κρινεις οτι δεν θα σου κανει δουλεια το υλικο που θα λαβεις απο εμενα.
Τεσπα ειπαμε με το μαλακο ολα θα γινουν.
Κανενα προγραμμα δεν ειναι τελειο.
Ετσι κι αλλιως δε μας βιαζει κατι.

emnezia
14-01-2005, 00:52
Για fpu θα μπορούσε όπως λέει ο Sean να μπει ένα μικρό κωμάτι κώδικα που να την τσιτάρει ελαφρά. Με την μνήμη δεν ξέρω αν χρειάζεται τόσο σε stability προγράμματα. Ο επεξεργαστής είναι πιστεύω αυτός που πρέπει να ζοριστεί.
Η διαίρεση -αφού σε x86 μηχανήματα θα αποσκοπεί το πρόγραμμα- συμφέρει αφού θέλουμε όσο το δυνατόν πιο αργές πράξεις (=> περισσότεροι υπολογισμοί - διορθώστε με αν κάνω λάθος).
Πάντως αυτό που λες για την διαίρεση μου φαίνεται αστείο για την αρχιτεκτονική των χ86 (στο πανεπιστήμιο και καλά μας μαθαίνουν πως να αποφεύγουμε διαρέσεις για να πετύχουμε καλύτερους χρόνους)

DarthMoul
14-01-2005, 01:25
Για fpu θα μπορούσε όπως λέει ο Sean να μπει ένα μικρό κωμάτι κώδικα που να την τσιτάρει ελαφρά. Με την μνήμη δεν ξέρω αν χρειάζεται τόσο σε stability προγράμματα. Ο επεξεργαστής είναι πιστεύω αυτός που πρέπει να ζοριστεί.
Η διαίρεση -αφού σε x86 μηχανήματα θα αποσκοπεί το πρόγραμμα- συμφέρει αφού θέλουμε όσο το δυνατόν πιο αργές πράξεις (=> περισσότεροι υπολογισμοί - διορθώστε με αν κάνω λάθος).
Πάντως αυτό που λες για την διαίρεση μου φαίνεται αστείο για την αρχιτεκτονική των χ86 (στο πανεπιστήμιο και καλά μας μαθαίνουν πως να αποφεύγουμε διαρέσεις για να πετύχουμε καλύτερους χρόνους)Αργές πράξεις => Αρχιτεκτονική της συμφοράς. Αυτό που σας έλεγαν στο πανεπιστήμιο ήταν σωστό αλλά μόνο για τα x86 πτώματα. Και γενικότερα για τους cisc επεξεργαστές στους οποίους είχε ξεμείνει και το μυαλό αυτών που σας τα έλεγαν. Το Alpha Architecture Handbook, πχ, στο κομμάτι για το optimization συνιστά την χρήση floats και ιδιαίτερα της πραγματικής διαίρεσης γιατί είναι τρεις φορές πιο γρήγορη από την ακέραια. Αστείοι είναι αυτοί που σου λένε το αντίθετο. Και για του λόγου το αληθές στην αναφορά που έκανα στον Itanium που είναι EPIC:
Εδώ είναι ένας Opteron στα 2.2 GHz:
http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=2341
Και εδώ ένας Itanium στο 1.4 GHz:
http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=2430

Κοίταξε πόσο κάνει ο ένας για τον υπολογισμό του pi και πόσο ο άλλος. Είναι υπολογισμός με σειρά taylor και 100% FPU. Με τον Itanium στα 2/3 στης συχνότητας του Opteron. Και οι δύο CPU της ίδιας εργοστασιακής αξίας. Τα συμπεράσματα για την ποιότητα του hardware που σου πουλάνε, δικά σου :)

emnezia
14-01-2005, 01:46
Χαχα τόσο μεγάλη διαφορά δεν την περίμενα!

Πάντως αναφορικά με την ταχύτητα στο πρόγραμμα που συζητάμε δεν νομίζω να έχει τόσο σημασία το να δώσει όσο γίνεται γρηγορότερα το αποτέλεσμα αλλά να έχει όσο γίνεται περισσότερη δουλειά στον επεξεργαστή. Σκοπός είναι να εντοπίσουμε την αστάθεια του συστήματος, οπότε πρέπει να μας δώσει όσο γίνεται πιο γρήγορα λανθασμένο αποτέλεσμα σε κάποιο νούμερο που περιμέναυμε.
Οπότε το να υπολογίζει γρηγορότερα το pi πιθανότατα να μας δίνει σε κάθε περίπτωση σωστό αποτέλεσμα. Ενώ αντίθετα αν το οδηγήσουμε μέσα από ένα μεγάλο σύνολο πράξεων τότε ίσως να δώσει γρηγορότερα λάθος που είναι και το ζητούμενο.
Βέβαια όλα αυτά είναι στην θεωρία, στην πράξη ίσως να κάνω λάθος και τελικά να μην δίνει έτσι λανθασμένο αποτέλεσμα.

DarthMoul
14-01-2005, 08:43
Ο επεξεργαστής κάνει περισσότερη δουλειά, όταν έχει τα μικρότερα latencies.
Σε κάθε άλλη περίπτωση κοίτα στην υπογραφή μου :)
Σε wait state καμμιά CPU δεν βγάζει λάθος.

DarthMoul
14-01-2005, 09:59
Αναφορικά με το post #18 και των αριθμό των loops που χρειάζονται για να επιτευχθεί ακρίβεια συγκεκριμένου αριθμού ψηφίων.

Όπως τα λες εκεί εγώ κατάλαβα πως αν έχουμε D αριθμό ψηφίων, και ψάχνουμε το πλήθος Ν των loops που χρειαζόμαστε, τότε θα πρέπει να λύσουμε την ανίσωση 2^Ν >= D.

Άρα λογαριθμόντας και τα δύο μέρη της ανίσωσης με βάση το 2 έχουμε το N να είναι ισο με το λογάριθμο με βάση 2 του D.

Δεν είμαι μαθηματικός οπότε επιβεβαίωσε το για να προχωρήσω.

Από μια πρόχειρη ματιά που έριξα ο υπολογισμός των Π και Y μπορεί να γίνει εν παραλλήλω aka multithreaded. Για να αποδόσει σε SMT μηχανές που τα δύο threads μοιράζονται το ίδιο cache, θα πρέπει ο αλγόριθμος να επιτυγχάνει state-of-the-art cache efficiency και τα ψηφία μέσα στις arbitrary μεταβλητές να τηρούνται με αντίστροφη σειρά για να έλαχιστοποιηθούν τα cache misses και να αποφύγουμε το data prefetch όσο γίνεται. Από τις SMP μηχανές, όσες έχουν NUMA , όπως ο Opteron (σε linux όχι windows), θα σκίσουν. Οι Xeon θα βουλιάξουν σε κάθε περίπτωση.

Επίσης multithreaded μπορεί να γίνει και η arbitrary πράξη του πολλαπλασιασμού όχι ιδιαίτερα δύσκολα, αλλά αν πάμε εκεί μιλάμε για πολύ σκληρό rock, η μέση μηχανή θα κολλήσει, αν δεν κρεμάσει το λειτουργικό σας από το βάρος. Μήπως έχεις πρόσβαση σε κανένα Blue Gene/L να κάνουμε ένα stability test εκεί; :)

Όσον αφορα τώρα τα παραπάνω ψηφία που θα χρειαστούμε για να πετύχουμε την επιθυμητή ακρίβεια. Θεωρητικά ίσως να είναι αρκετά τα 100 που λες. Στην πράξη είναι τα διπλάσια μειον ένα, αφού η αριστερή ολίσθηση που επιβάλλει ο πολλαπλασιασμός, με κάτι μικρότερο από το διπλάσιο θα προκαλέσει overflow.

Αφού δεν θα χρησιμοποιήσουμε sse, οι Pentium θα αδικηθούν πολύ :(
Το 1/sqrt(x) με FPU κοστίζει όσο τέσσερα 1/sqrt(x) με sse. Επιπλέον με την χρήση sse μπορείς επιλεκτικά να παρακάμψεις το cache και να το κρατήσεις καθαρό από data που προσπελαύνονται μόνο μία φορά. Έτσι το υποχρεώνεις να φιλοξενεί data που υπόκεινται σε πολλαπλές προσπελάσεις και τα cache misses μειώνονται στο ελάχιστο.

MrSeanKon
14-01-2005, 17:33
1) Πληθος βροχων και δεκαδικα ψηφια

Στη συνεχεια θα παραθεσω καποιες φωτο με τα αποτελεσματα που εξαγονται αναλογα με το πληθος των βροχων.
Εγραψα λιγο πιο συνοπτικα τον κωδικα εντολων για να φαινονται ολα μαζεμενα.
Στην φωτο που ακολουθει φαινεται η εξοδος κανοντας δυο βροχους και με χρηση εννεα δεκαδικων ψηφιων ακριβειας.

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3312

Προσεξτε οτι η αριθμηση ξεκιναει απο το ενα κι οχι απο το μηδεν κι αυτο το εκανα για τον προφανη λογο μια και το πληθος των αριθμων απο 1 εως και n (συμπεριλαμβανων κι αυτων) ειναι n.
Eτσι αν n=12 σημαινει οτι κανουμε 12 βροχους κλπ.
Το σφαλμα που εκτυπωνεται ισουται με αυτο που βλεπετε επειδη η εσωτερικη ακριβεια ειναι μικροτερη απο οσο θα επρεπε.
Για προσεξτε την επομενη φωτο:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3313

Παρατηρειστε το σφαλμα που ειναι της ταξης του 10^-9 αλλα η ακριβεια ειναι 10 δεκαδικα ψηφια.
Ας βαλουμε παραπανω δεκαδικα ψηφια 11 τωρα:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3314

Aχρηστα ειναι!
Το οτι μας εβγαλε το ιδιο αποτελεσμα δε σημαινει κατι αφου εβαλα την παραμετρο //Ν οπου στρογγυλοποιει την εξοδο του σφαλματος αν δεν υπηρχε τοτε θα ειχαμε περισσοτερα και παραπανισια δεκαδικα ψηφια.
Δειχνω και μια αλλη φωτο με τον ελαχιστο αριθμο ακριβειας που απαιτουνται για να γινουν υπολογισμοι ΟΚ με τρεις βροχους:
Εδω το πρωτο δεκαδικο ψηφιο του σφαλματος ειναι μικροτερο του πεντε αλλα βλεπουμε οτι χρειαζονται 21 δεκαδικα ψηφια.

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3315

Συμπερασματα
Aν θελουμε με τον αλγοριθμο αυτο (χωρις να μπλεξουμε με αναλυση σφαλματων και σχεσεις) να ξερουμε ποση ακριβεια πρεπει να εχουμε τουλαχιστον εσωτερικα στις πραξεις τοτε αν στο περας των βροχων υπολογιζονται Ψ δεκαδικα ψηφια του π πρεπει να χρησιμοποιειται ακριβεια Ψ+2.
Ε για να 100% ασφαλεια ας βαλουμε κατι παραπανω κι ΟΚ (π.χ. Ψ+10 δεκαδικα ψηφια).

MrSeanKon
14-01-2005, 17:39
2) Πληθος δεκαδικων ψηφιων ανα βροχο

Eδω θα απαντηθει το ερωτημα που εθεσε ο DarthMoul παραπανω.
Στη φωτο που ακολουθει δειχνω την εξοδο της παραμετρου p που εμεις υπολογιζουμε εν συγκρισει με την πραγματικη τιμη του π.
Ειναι μετα το περας δυο βροχων.

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3316

Eνω η επομενη ειναι μετα το περας τριων βροχων:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3317

Συμπερασμα
Ο εκθετης του σφαλματος μειον 2 μας λεει ποσα ειναι τα δεκαδικα ψηφια σε καθε περιπτωση.
Κι εννοω τα ψηφια μετα την υποδιαστολη.
Προσεξτε οτι στην πρωτη φωτο τα δεκαδικα ψηφια ηταν 7 (9-2) αλλα στη δευτερη 8 (19-1) ομως το πρωτο ψηφιο του σφαλματος εκει ειναι το 1 < 5 vs 7 > 5.
Γιαυτο λοιπον επειδη μπορει να παιζει το πρωτο ψηφιο μεταξυ της μοναδας και του εννεα για να μην παραζαλιζουμε το θεμα τα δεκαδικα ψηφια ειναι εκθετης μειον 2 σε καθε περιπτωση.


Σε γενικες γραμμες τα δεκαδικα ψηφια διπλασιαζονται σε καθε βημα (στο περιπου) κι αυτο το ειχα δειξει σε προηγουμενο ποστ.
Δε θα παραθεσω πολλες φωτο αλλα μονο μια με τα μεχρι του παροντος αποτελεσματα μια και το τρεξιμο ολων αυτων ειναι χρονοβορο...
Oταν μελετηθει για περισσοτερα δεκαδικα ψηφια (αρκει να μη φαει κανενα κολλημα το PC) θα κανω edit το post αυτο και θα σας ενημερωσω να το ξαναδιαβασετε.
Aρα DarthMoul απαντηθηκε αυτο που με ρωτησες "Ποσους ορους χρειαζομαι για να βρω το π=3.14 με 1000 δεκαδικα ψηφια".
Χρειαζονται 9 βροχοι αλλα LOL το π=3.14 δε θα υπολογιστει μονο με 1000 δεκαδικα ψηφια αλλα με 1391 (ισως να ειναι και 1392) τεσπα ειναι αδυνατο να κατσω και να τα μετραω με τις ωρες!
Στην τελικη αν πεταξει λαθη αυτα θα ειναι τα τελευταια ψηφια και σταδιακα θα πανε προς τα πρωτα.
Εννοω οτι ο ελεγχος π.χ. με 9 βροχους θα γινεται στο 1380ο, 1381ο, 1382ο ψηφιο κ.ο.κ. δηλαδη στην τελευταια δεκαδα κι οχι απο την αρχη αλλιως ζητω που καηκαμε.
Τεσπα αυτο μπορει να μελετηθει ενδελεχως οταν βγει στον αερα το προγραμμα θα μονταρουμε περισσοτερο τον κωδικα ελεγχου.

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3329

Eπισης παρατηρειστε κατα ποσο διαφερουν απο τη μοναδα οι αλλες δυο παραμετροι x, y.
Για το y ισχυει το κριτηριο που ειπα πριν ενω η ταξη σφαλματος του x ειναι περιπου τοση οσα τα δεκαδικα ψηφια που εξαγονται με το προηγουμενο βημα με αλλα λογια ο εκθετης του x ειναι περιπου το μισο του y.
Δινω μια εικονα με 22 βροχους.

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3319

Τελος οποιος εχει το Mathematica (εσυ emnezia π.χ.) ας κατεβασει το attachment *.rar file οπου εχει ολους τους υπολογισμους και καλη συνεχεια!

MrSeanKon
14-01-2005, 17:43
Θα ηθελα να κανω καποιες συγκεντρωτικες ερωτησεις/παρατηρησεις (κυριως σε σενα DarthMoul απευθυνομαι) αλλα ας απαντησουν κι οι αλλοι ή να συμπληρωσουν...
LOL αν πεταξω καμμια κοτσανα να δειξετε τη δεουσα κατανοηση ειπαμε προγραμματισμο τωρα στα γεραματα αρχιζω να μαθαινω και δεν σκοπευω να γινω expert.. :D

1) Aφου το προγραμμα θα γραφει σε καποια εκδοση της C που ειναι το προβλημα για να μετατραπει σε C++ Builder?
Ειλικρινα δεν καταλαβαινω το γιατι....
Η εκδοση που εχω ειναι υπερσυνολο της ANSI C, Unix C κλπ κι οι εντολες που θα χρησιμοποιηθουν θα ειναι κοινες...
Eκ πρωτης οψεως το κυριοτερο προβλημα που βλεπω για μενα ειναι να κατανοησω εις βαθος τον κωδικα για να τον μετατρεψω σε C++ Builder...
2) Τα SSE, SSE2, 3dNow! δεν προκειται να μας βοηθησουν να στραγγαλισουμε περισσοτερο τον επεξεργαστη ωστε να εξαγει λαθη το ταχιστο (αυτο καταλαβα).
Επομενως δε χρειαζεται να μεταγλωττιστει με ειδικους compilers μια κι ο απωτερος στοχος του ειναι να ειναι οσο γινεται ευαισθητο κι οχι η ταχυτητα.
Αρα μου κανει κι η Builder μια χαρα τη δουλεια ή κανω λαθος?
3) Λογω της χρησης arbitrary precision θα αναγκαστουμε να χρησιμοποιησουμε και τη μνημη του συστηματος...
Θα παιζει χρηση προσωρινων αρχειων ή οχι?
Προτεινω το οχι για να μην μπλεκεται μεσα κι ο σκληρος δισκος αν συνολικα η μνημη δεν επαρκει για να τρεξει το προγραμμα θα πεταει το αναλογο μυνημα και ΒΑΝ..
4) Η συντριπτικη πλειοψηφια των χρηστων εχει x86 επεξεργαστες επομενως εκει πρεπει να στοχευει το προγραμμα.
Οποτε επαφιεται σε σενα Darth να το επεκτεινεις αργοτερα σε αλλες αρχιτεκτονικες στο μελλον....
5) Αφου δεν ασχολιεσαι με το o/c Darth μηπως αυτο θα ειναι ενα μειονεκτημα για σενα?
Δηλαδη πως θα ξερεις οτι βελτιωσες την ευαισθησια του προγραμματος?
ΟΚ κανενα προβλημα μπορεις να βασιστεις σε μενα 10000000% για beta testing μη φοβασαι γιαυτο ειπα περι x86 αρχιτεκτονικης...
6) Σε ποια περιπτωση θα εξαγονται γρηγοροτερα τα σφαλματα?
Αν τρεχω ας πουμε δυο threads των 16Μ ή ενα των 32Μ?
Η θα το δουμε στην πραξη καλυτερα?
Οταν τρεχει πολλαπλα threads τοτε δεν αυξανεται κι η χρησιμοποιουμενη μνημη εν σχεση με ενα thread?
7)Τα πολλαπλα threads ωφελουν μονο Intel συστηματα?
Και δεν αναφερομαι για θεματα ταχυτητων αλλα εννοω οτι με πολλαπλα threads θα τσιτωθει περισσοτερο ενας Intel?
Αρα να γινει πιο επιρρεπης σε λανθασμενους υπολογισμους = το πολυποθητο αποτελεσμα.
8) Σχετικα με την priority που θα τρεχει το προγραμμα?
Θα εχει επιλογη να την αλλαζει ή θα το κανουμε χειρωνακτικα μεσω Task Manager πριν ξεκινησουν οι υπολογισμοι?
Δες Darth τον CPU Stretcher και τρεξε τον για λιγο να καταλαβεις ακριβως τι εννοω.
Και μετα λες οτι η Builder C++ ειναι απαρχαιωμενη!
Που να γραψω εγω κωδικα σε σκετη C για να αλλαζω τα priorities θελω καμμια δεκαρια χρονια να φθασω σε τετοιο επιπεδο (κι αμφιβαλω αν το καταφερω)...

DarthMoul
14-01-2005, 19:11
1) Αν δουλεύει με posix threads, και σίγουρα κάποια στιγμή θα δουλεύει, δεν ξέρω τι θα κάνει ο builder. Υποψιάζομαι πάντως πως δεν θα δουλέψει. Δεν σου εξηγώ τον λόγο γιατί μετά θα μου λες για κινέζικα.
2)Αν δεν χρησιμοποιήσω sse/sse2 (3dnow sucks) ο builder σου κάνει. Δεν πειράζει. Θα τα βάλω μετά σε μια δική μου έκδοση και θα το κάνω bench. Απλά έλπιζα να πετύχω με έναν σμπάρο 2 τριγώνια.
3)Στην αρχή θα παίζουμε μόνο με RAM. Αργότερα θα δούμε αν θα βάλουμε και disk overlays.
4)Καλά αυτό άστο σε εμένα. Ούτως η άλλως σε Alpha θα γραφεί, και θα γίνει port σε x86 μετά :)
5)Δεν θα ξέρω. Αλλά αν το πρόγραμμα είναι πλήρως παραμετρικό δεν χρειάζεται να ξέρω. Θα αυξάνεις τις παραμέτρους μέχρι να δεις που σε κρεμμάει. Τελικά αν κρεμάσει πρώτα το λειτουργικό και όχι το hardware είσαι σταθερός :)
6)Τα σφάλματα θα εξάγονται πιο γρήγορα όταν θα τρέχεις ένα multithreaded των 32M. Για κάθε thread να υπολογίζεις ότι χρειάζεσαι σχεδόν άλλη τόση μνήμη αλλά περιστασιακά. Το ζήτημα με τα threads είναι περίπλοκο. Ο αλγόριθμός που έδωσες σηκώνει μεχρι δύο. Ο arbitrary πολλαπλασιασμός σηκώνει τόσα, όση η ακρίβεια που θέλεις :)
Αν θέλεις ακρίβεια 10 ψηφίων, εγώ μπορώ να σου ανοίξω μέχρι 10 χ 2 threads. Φυσικά και default να είσαι θα κρεμμάσεις αλλά λέμε τώρα :033:
7) Τα πολλαπλά threads προκαλούν πίεση σε registers, cache, μνήμη, δίσκους και γενικότερα ότι χρησιμοποιεί το πρόγραμμα σου.
8) Η αλλαγή του priority θέλει χρήση system call του λειτουργικού, δηλαδή των windows. Εγώ από linux δεν μπορώ να το κάνω αυτό. Θα το κάνει κάποιος που έχει windows :)

emnezia
14-01-2005, 19:36
Σχετικά με την χρήση σκληρου το καλύτερο αποτέλεσμα (σαν ευστάθεια) θα είναι η πλήρη χρήση μνήμης. Ο σκληρός μπορεί να χρησιμοποιηθεί για να βλέπουμε σε πια στιγμή κόλλησε (ίσως να έχει σημασία αργότερα για την μελέτη της κατάρρευσης - που ξέρεις μπορεί να έχει σημασία ανάλογα με το overclock για να υπολογίζεις που θα είσαι σταθερός - βέβαια αργότερα αυτά!)
Για το priority μπορεί να γίνει και με "μπακαλέ" τρόπο βάζοντας μία μικρή ρουτίνα καθυστέρησης για χχχ msec ανάμεσα στους υπολογισμούς. Έτσι κι αλλιώς φαντάζομαι το πρόγραμμα θα τραβάει τρομερούς πόρους άρα στο default του θα είναι σαν να τρέχει realtime (ή κάνω λάθος;!)
Για το (7) που ρωτά ο Sean δεν κατάλαβα. Ο intel λογικά στρεσσάρετε περισσότερο από AMD λόγω HT;

DarthMoul
14-01-2005, 19:42
Σχετικά με την χρήση σκληρου το καλύτερο αποτέλεσμα (σαν ευστάθεια) θα είναι η πλήρη χρήση μνήμης. Ο σκληρός μπορεί να χρησιμοποιηθεί για να βλέπουμε σε πια στιγμή κόλλησε (ίσως να έχει σημασία αργότερα για την μελέτη της κατάρρευσης - που ξέρεις μπορεί να έχει σημασία ανάλογα με το overclock για να υπολογίζεις που θα είσαι σταθερός - βέβαια αργότερα αυτά!)
Για το priority μπορεί να γίνει και με "μπακαλέ" τρόπο βάζοντας μία μικρή ρουτίνα καθυστέρησης για χχχ msec ανάμεσα στους υπολογισμούς. Έτσι κι αλλιώς φαντάζομαι το πρόγραμμα θα τραβάει τρομερούς πόρους άρα στο default του θα είναι σαν να τρέχει realtime (ή κάνω λάθος;!)
Για το (7) που ρωτά ο Sean δεν κατάλαβα. Ο intel λογικά στρεσσάρετε περισσότερο από AMD λόγω HT;Φυσικά και θα έχει log με synchronous disk transfers. Τουλάχιστον μέχρι να βγει σε stable έκδοση. Μετά θα δούμε τι θα κάνετε.

Ο P4/HT στρεσσάρετε (και μετριέται) ΜΟΝΟ με multithreading. Αλλιώς παίζεις το chip 70% maximum.

MrSeanKon
15-01-2005, 17:32
Nαι αυτό εννοούσα emnezia αλλά με πρόλαβε ο DarthMoul :077: και σου απάντησε ήδη!

Πάμε παρακάτω...
To Μathematica έχει έναν αρκετά αναλυτικό οδηγό μεθόδων υπολογισμού του π=3.14.
Το αντίστοιχο demo notebook μπορείτε να το δείτε αν ακολουθήσετε τα βήματα των ακόλουθων εικόνων:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3325

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3326

και στη συνέχεια αν πατήσετε με το δεξί πλήκτρο του ποντικιού (εκεί που δείχνει το λευκό βελάκι) θα ξεδιπλωθούν οι οδηγίες.

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3327

Εκεί θα δείτε και τις τάξεις των σφαλμάτων που δίνει η κάθε μέθοδος αλλά και μία παραλλαγή της προτεινόμενης μεθόδου Borwein (πολυπλοκότερη όμως σε υλοποίηση).
Στο ίδιο συμπέρασμα καταλήγει και το demo notebook ότι η επαναληπτική μέθοδος Borwein διπλασιάζει χονδρικώς το πλήθος των δεκαδικών ψηφίων ανά βρόχο.
Πάντως μία καλύτερη εκτίμηση είναι αυτή που δείχνει η επόμενη φωτογραφία:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3328

DarthMoul
21-01-2005, 22:06
Εγώ αντιμετωπίζω το εξής πρόβλημα. Και αυτό λέγεται διαίρεση. Η καλύτερη μέθοδος που υπάρχει από την 10ετία του 1960 είναι η μέθοδος Newton Raphson. Δεν θα αναλύσω τώρα τους λόγους γιατί δεν θα καταλάβετε και πολλά. Πάμε κατ'άρχήν να δούμε πως δουλεύει.
Η μέθοδος Newton Raphson υπολογίζει το 1/f με τον παρακάτω βρόγχο:

x2 = (2 * x1) - (f * x1^2);
x1 = x2;

Οσο περισσότερες φορές εκτελείται ο βρόγχος, τόσο μεγαλύτερη ακριβεια πετυχαίνουμε. Στο τέλος του βρόγχου μέσα στο x2 πέρνουμε σαν αποτέλεσμα το 1/f.
Το πρόβλημα είναι η αρχική τιμή του x1. Αυτή η τιμή πρέπει να είναι οπωσδήποτε μικρότερη του 1/f. Αν είναι μεγαλύτερη, τα πάντα τινάζονται στον αέρα. Όσο πιο κοντά στο 1/f είναι αρχική τιμή του x1, τόσο μεγαλύτερη ακρίβεια πετυχαίνουμε με τον ίδιο αριθμό βρόγχων.
Παλιότερα στα mainframes που δούλευα υποχρεωτικά με 16 bits ή λιγότερα, φτιάχναμε lookup tables για το x1. Δηλαδή βλέπαμε το εύρος των τιμών του f, και με ένα step κατασκευάζαμε έναν πίνακα τιμών για το x1. Έτσι πετυχαίναμε ακρίβεια πολλών δεκαδικών σε ελάχιστο χρόνο.

Άρα για το πρόβλημα μας, ή θα πρέπει να βρούμε το εύρος όλων των παρονομαστών για να φτιάξω lookup table, ή να δείξετε κάποια μέθοδο που να προσεγγίζω ικανοποιητικά το 1/f χωρίς να το ξεπερνάω και σχετικά γρήγορη

:)

MrSeanKon
21-01-2005, 22:47
Άρα για το πρόβλημα μας, ή θα πρέπει να βρούμε το εύρος όλων των παρονομαστών για να φτιάξω lookup table

:017: Μπορεις να το εξηγησεις αυτο παραπανω?
Οσο για τη μεθοδο του Newton θα την κοιταξω περισσοτερο σπιτι.
Στην τελικη αν δεν απατωμαι ολοι οι αριθμοι πρεπει να εχουν θετικο παρονομαστη οποτε μπορεις να ξεκινησεις με αρχικη τιμη ως x1=0 φυσικα οσο μεγαλυτερος θα ειναι ο παρονομαστης τοσο γρηγοροτερη συγκλιση θα εχουμε.
Η μεθοδος αποκλινει οταν δεν πληρουνται καποιες συνθηκες (εχουν σχεση με την παραγωγο κλπ)...

DarthMoul
21-01-2005, 23:03
Αν θέλω να υπολογίσω το 1/1.21 το αποτέλεσμα που θα πάρω με ακρίβεια 6 ψηφείου θα είναι 0,826646. Αν θέσω το χ1 ίσο με 0,83 την πάτησα. Δεν δουλεύει τίποτα. Αν το θέσω ίσο με 0,80 θα προσεγγίσω μεγαλύτερη ακρίβεια με τον ίδιο αριθμό βρόγχων από ότι αν το θέσω ίσο με 0,5. Για να μην χάνω χρόνο με παραπάνω βρόγχους κάνω έναν πίνακα.

Αν υποθέσουμε ότι οι πιθανές τιμές του παρονομαστή είναι από 1..2, τότε ο πίνακας θα πρέπει να περιέχει όλες τις τιμές από 1.1, 1.2, 1.3...2.0 και δίπλα το 1/f με ακρίβεια εκατοστού.
Όταν θα έρθει η ώρα του υπολογισμού με 1Μ ψηφία, αντί να κάθομαι να ψάχνω εκείνη την ώρα το κατάλληλο χ1, θα ανατρέχω στον πίνακα και θα χρησιμοποιώ το 1/f που με εξυπηρετεί. Στο παράδειγμά μας, για το 1/1.21 το x1 θα ήταν το 1/1.3 με ακρίβεια εκατοστού, δηλαδή το 0.76. Έτσι γλυτώνω ένα τόνο υπολογισμών για τον προσδιορισμό της αρχικής τιμής του χ1 και παράλληλα προσεγγίζω τρελλές ακρίβειες με ελάχιστο κόστος. Στο τέλος θα κάνουμε και ένα καλό optimization με το χέρι και έδεσε το γλυκό

:039:

MrSeanKon
21-01-2005, 23:14
Αυτο νομιζω οτι το καλυτερο DarthMoul ενας πινακας με αρχικες τιμες οπως κανει κι ο Abramowitz στο handbook.
Παλιοτερα που δεν ειχαν υπολογιστες ανατρεχαν σε πινακες κι εψαχναν να βρουν τιμες κλπ....
Μενει να μελετησω τα ευρη τιμων του παρονομαστη βασει του αλγοριθμου δηλαδη να δω το πεδιο τιμων της καθε ρητης συναρτησης και να αρχισουμε να υλοποιουμε τους πινακες....
Ομως αυτο δε θα ειναι επιπονο να κωδικοποιηθει?? :101:
Θα μου πεις κερδος στην ταχυτητα αλλα το προγραμμα θα μεγαλωσει επικινδυνα....
Τι λες? :108:

DarthMoul
21-01-2005, 23:31
Αυτο νομιζω οτι το καλυτερο DarthMoul ενας πινακας με αρχικες τιμες οπως κανει κι ο Abramowitz στο handbook.
Παλιοτερα που δεν ειχαν υπολογιστες ανατρεχαν σε πινακες κι εψαχναν να βρουν τιμες κλπ....
Μενει να μελετησω τα ευρη τιμων του παρονομαστη βασει του αλγοριθμου δηλαδη να δω το πεδιο τιμων της καθε ρητης συναρτησης και να αρχισουμε να υλοποιουμε τους πινακες....
Ομως αυτο δε θα ειναι επιπονο να κωδικοποιηθει?? :101:
Θα μου πεις κερδος στην ταχυτητα αλλα το προγραμμα θα μεγαλωσει επικινδυνα....
Τι λες? :108:

double f[20], x;
int n=0;
for(x=0.1; x<=2.0; x+=0.1)
f[n++]=1/x;

Κωδικοποιήθηκε με 18 ψηφία ακρίβεια :) Το εύρος των τιμών των παρονομαστών χρειαζόμαστε και είμαστε οκ. Θα το δούμε στην πορεία.

TASOS
22-01-2005, 00:19
Συγνώμη που διακόπτω την κουβέντα και τις σκέψεις σας.

Απλά ήθελα να σας πώ...ότι παρακολουθώ με ιδιαίτερο ενδιαφέρον το project σας....και εύχομαι σύντομα επιτυχή κατάληξη.

All for one....and one for all :024: :038:

DarthMoul
22-01-2005, 00:42
Και για την τετραγωνική ρίζα θα χρησιμοποιήσουμε πάλι Newton Raphson.
Αν ψάχνουμε την τετραγωνική ρίζα του f τότε έχουμε μέσα στον βρόγχο:

x2 = x1 - ((x1^2 - f) / (x1 * 2))
x2=x1

Πάλι το ζητούμενο είναι η εισαγωγική τιμή του x1. Θα πρέπει να είναι μικρότερη τις ρίζας του f αλλά όσο πιο κοντά της γίνεται. Μόνο που εδώ δεν χρειαζόμαστε lookup tables γιατί ο υπολογισμός είναι σχετικά γρήγορος. Ακολουθεί ο κώδικας της συνάρτησης nrsqrt που υπολογίζει την τετραγωνική ρίζα με την μέθοδο Newton Raphson σε βάθος έξι επιπέδων. Στην τελική της μορφή στον tester θα είναι ίδια με μόνη διαφορά την αντικατάσταση των double από multiple precision τύπους που ακόμα είναι υπο κατασκευή :)

double
nrsqrt(double f)
{
double x1,
x2;
int i;
/* Υπολογισμός του x1 */
x1 = f / 2;
while ((x1 * x1) > f)
x1 = x1 / 2;

/* Υπολογισμός της ρίζας κατά Newton/Raphson */
for (i = 0; i < 6; i++) {
x2 = x1 - (((x1 * x1) - f) / (x1 + x1));
x1 = x2;
}

return x2;
}

DarthMoul
22-01-2005, 02:06
Για περισσότερα πάνω στους αλγόριθμους Newton Raphson και εκτενέστερη ανάλυση τους σε αυτό εδώ το PDF.

http://www.intel.com/technology/itj/q41999/pdf/ia64fpbf.pdf

Αυτό χρησιμοποίησα εγώ για να γράψω τον κώδικα. Αν καταλάβετε περισσότερα από εμένα περιμένω τα φώτα σας ;)

Και κάτι ακόμα. Αυτό που δεν μπόρεσα να βρω πουθενά είναι το μέγεθος της ακρίβειας που μας δίνει ο Newton Raphson σε σχέση με το βάθος του υπολογισμού. Παλιότερα σαν κανόνα είχαμε τους τρεις βρόγχους. Με τους τρεις βρόγχους η ακρίβεια έφτανε πάνω από 18 ψηφία, αρκεί το x1 να ήταν αρκετά κοντά στο τελικό αποτέλεσμα. Για πάνω από 18 ψηφία δεν ασχολήθηκα ποτέ γιατί σπάνια χρειάζεται κάποιος τόσο ακριβείς υπολογισμούς. Στην περίπτωση μας όμως ξεκινάμε για 1Μ ψηφία εξορισμού και στο μέλλον παραπάνω.

MrSeanKon
22-01-2005, 20:19
Το πρόβλημα είναι η αρχική τιμή του x1. Αυτή η τιμή πρέπει να είναι οπωσδήποτε μικρότερη του 1/f. Αν είναι μεγαλύτερη, τα πάντα τινάζονται στον αέρα.

Αυτο δεν ισχυει. :018:
Την απαντηση θα την δεις αφου διαβασεις τα post του "Οδηγου Μαθηματικων" (http://www.pctechnology.gr/vbull/vb/showthread.php?p=56591#post56591).
Οπως κι ο περιορισμος για την τετραγωνικη ριζα.

Συνεχιζοντας:
Οπως εχει διατυπωθει ο αλγοριθμος του Borwein θα πρεπει να βρουμε την τετραγωνικη ριζα του 2 (x0 παραμετρος) και την τεταρτη ριζα του 2 (y0 παραμετρος).
Αφου ειναι συγκεκριμενα νουμερα κατευθειαν θετεις x0=1.4142135623730950488, y0=1.1892071150027210667.
Το δε π0=3.4142135623730950488.
Σου εδωσα τις τιμες αυτες με ακριβεια 20 δεκαδικων ψηφιων την κρινω υπεραρκετη για να ξεκινησουν με τους καλυτερους οιωνους οι υπολογισμοι.
Aρα πριν ξεκινησεις τον κυριο βροχο της επαναληπτικης μεθοδου θα θεσεις τις τιμες αυτες για να ξεκινησει το Π.Α.Τ. και στο τελος θα εχουν υπολογισθει με την απαιτουμενη ακριβεια.
Τωρα:
Οταν μπεις στο πρωτο βροχο θα χρειαστεις την τετραγωνικη ριζα του x0.
Eπομενως στο ΠΑΤ θετεις αμεσως την τιμη του y0 που εχεις υπολογισει ηδη.
Για τον δε αντιστροφο της τετραγωνικης ριζας του x0 θετεις στο Π.Α.Τ. τον αριθμο 0.84089641525371454303.
Αραγε λοιπον δες 3ο post εκει γιατι το λεω (http://www.pctechnology.gr/vbull/vb/showthread.php?t=1419&page=1) θα προκυψει μια νεα τιμη μετα τις δυο πραξεις εστω x1=1/2*(Sqrt(x0)+1/Sqrt(x0)).
Aκολουθως η νεα τιμη θα ειναι π1=π0*((x1+1)/(y0+1)) ενω y1=(y0*Sqrt(x1)+1/Sqrt(x1))/(y0+1).
Αραγε λοιπον LOL :003: οταν θα εκτελεσεις το δευτερο βροχο θα πρεπει να παρεις ξανα αρχικες τιμες για το Π.Α.Τ. και θα υπολογισεις τις παραμετρους x2, y2, π2 ενω στον τριτο βροχο θα χρειαστεις αρχικες τιμες για το Π.Α.Τ. για τις x3, y3, π3 κι ουτω καθεξης.
Για να μην παραζαλιζουμε τον ερωτα σου δινω ενα πινακα (τυφλα να εχει ο Abramowitz!) :044: οπου εχω δωσει τις αρχικες τιμες για τις παραμετρους αυτες σε καθε βροχο.
Χωρις να μπλεξουμε σε βαθια νερα δηλαδη να κανω μελετη της καθε συναρτησης τι πεδιο τιμων εχει και τα ρεστα.
Ετσι απλα κι ευκολα.
Οπως διαπιστωνεις μετα απο τον 5ο βροχο η εσωτερικη ακριβεια των 20 δεκαδικων ψηφιων ειναι ανεπαρκης.

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3564

Αυτο φυσικα ειναι αναμενομενο γιατι ετσι κι αλλιως μια και τα σωστα δεκαδικα ψηφια αυξανονται τετραγωνικα οι παραμετροι προφανως θα πρεπει να σταθεροποιουνται.
Τα Windows που τοσο πολυ θαβεις εχουν στα βοηθηματα εναν ενσωματωμενο υπολογιστη οποτε θα σου φανει χρησιμος αν δε θες σωνει και καλα να μπλεξεις με τα Mathematica, Maple αφου θα τα κανω εγω καλυτερα αυτα ομως θα με διευκολυνε να τα εγκαταστησεις κι εσυ ωστε να σου στελνω κατευθειαν τα files και να μην κανω σπα*****κα screen captures διαρκως.

DarthMoul
22-01-2005, 21:32
Ενθαρρυντικά όλα τα παραπάνω. Έχω δύο ερωτήσεις:
1) Γιατί όταν βάζω αρχική τιμή στον Newton Raphson μεγαλύτερη από αυτή του πραγματικού αποτελέσματος ο αλγόριθμος καταρρέει; Έτυχε στις περιπτώσεις που δοκίμασα εγώ; Αν βάζω πάντα αρχική τιμή μικρότερη του τελικού αποτελέσματος είναι ασφαλές;

2)Είναι σημαντικό να γνωρίζουμε την ταχύτητα προσέγγυσης της ακρίβειας με κάθε βρόγχο του Newton Raphson. Εγώ εμπειρικά μέχρι τώρα χρησιμοποιούσα 3 loops και ήταν υπεραρκετά για την ακρίβεια που διεκδικούσα. Τώρα πάμε για 1M ψηφία. Αφού σε κάθε βρόγχο του αλγορίθμου υπολογισμού του Pi γνωρίζουμε πόσα ψηφία ακρίβεια θα έχουμε, καλό θα είναι να ξέρουμε και πόσους βρόγχους Newton Raphson θα πρέπει να κάνουμε σε κάθε βήμα ώστε να μην επιβαρύνουμε αδίκως το πρόγραμμα.

Σύμφωνα με την μέχρι τώρα υλοποίηση που έχω κάνει, στον Opteron 1.6 GHz, χρειάζομαι 1 millisecond για να κάνω μία πρόσθεση με δύο αριθμούς του 1M ο καθένας και 94 millisedconds για δύο αριθμούς των 32M. Unoptimized κώδικας. Άρα καταλαβαίνεται ότι δεν έχουμε περιθώρια για παιχνίδια. Θα πρέπει να μελετήσουμε πολύ καλά την συμπεριφορά όλων των αλγορίθμων για να πάρουμε καλό και γρήγορο αποτέλεσμα. Αλλιώς όσο micro-optimization και να κάνω εγώ πάνω στο cache, το branch prediction ή το out-of-order execution, και σκόνη θα φάμε, και το πρόγραμμα δεν θα είναι ευαίσθητο σε αστάθειες :(

MrSeanKon
22-01-2005, 21:39
Για τα δεκαδικα ψηφια ανα βροχο θα σου πω στο μελλον γιατι ειδες οτι απο χθες μου εφυγε το κλαπετο να ψαχνω δεξια κι αριστερα κανε λιγο υπομονη.... :120:

Μπορεις σε παρακαλω να ποσταρεις φωτο ή εστω τον κωδικα που διεπιστωσες καταρρευση?
Οπως βλεπεις μπορεις να ξεκινησεις το Π.Α.Τ. σε καθε περιπτωση με αρχικη συνθηκη τη μοναδα αν και θα χανεις λιγο ταχυτητα....
Πρωτα πρωτα και λιγο μεγαλυτερη να ειναι η αρχικη τιμη δε βρισκω λογο να αποκλινει μια κι συναρτησεις αυτες ειναι μονοτονες εκει

DarthMoul
22-01-2005, 21:51
Εδώ διαιρώ 1 / 0.0909 και βάζω αρχική τιμή του χ1 το 40!
Μπορεί να είναι και overflow ή underlow αλλά νομίζω θα είχε χτυπήσει nan ο compiler.
Ακόμα και όταν ζητάω πλήρη εναρμόνηση με IEEE floating point standard για να γίνουν όλα τα underflow controls βγάζει τα ίδιο :(

MrSeanKon
22-01-2005, 22:02
Μισο λεπτο γιατι δεν καταλαβαινω γρι που λενε.... :017:
Αυτο το αναθεματισμενο το 0.09 που το βρηκες??
Γιατι καμμια παραμετρος δε δεχεται τετοια τιμη ή κανω λαθος?? :017:
Ειμαι πολυ κομματια φιλε μου sorry εχω μπλεξει ασχημα και με τη νεροψυξη...
Απο την αλλη μερια αν προσεξες το θεωρημα στο thread των Mαθηματικων λεει περι του δ και δε γινεται να ειναι οσο θες μεγαλο.
Το αποτελεσμα ειναι περιπου 11.
Για ξεκινα με x1=12 και ποσταρε αποτελεσματα.

Απο την αλλη μερια "Ακομη δεν τον ειδαμε Γιαννη τον βγαλαμε" λεει κι ο θυμοσοφος λαος ε ασε να βγει η πρωτη εκδοση και θα δουμε ποσο ευαισθητη ειναι με τον καιρο θα το φτιαξουμε το καλο πραγμα αργει να γινει.

DarthMoul
22-01-2005, 22:09
Έχω a=1 και b=0.0909 και ψάχνω το a/b. Με x1 = 40 τα αποτελέσματα τα βλέπεις. Κάτι ανάλογο συμβαίνει και με την ρίζα. Δεν πειράζει. Αφού θα δουλέψουμε με lookup tables λίγο μας νοίαζει προς το παρών. Όταν οι βιβλιοθήκες θα γίνουν γενικής χρήσης, θα μου δείξεις να υπολογίζω το δ :)
Όσο καλύτερη πρόβλεψη κάνουμε τώρα στην αρχή, τόσο λιγότερο θα ταλαιπωρηθούμε μετά. Η διαδικασία για να βγει καλό ένα πρόγραμμα είναι συγκεκρινένη. Αν ξεκινήσεις να πας στο άγνωστο με βάρκα την ελπίδα, κατά 99% βουλιάζεις :D

MrSeanKon
23-01-2005, 20:21
Στο σημειο αυτο θα σε παρακαλεσω να ξαναδιαβασεις τον οδηγο Μαθηματικων στη δευτερη σελιδα πιο προσεκτικα απο την αρχη αλλα και τα νεα δυο ποστ που εκανα εκ νεου. :083:
Κοιτωντας με ηρεμια το ποστ που εκανες θετοντας x1=40 βλεπω οτι μπαινεις σε λαθος δρομο κι ειλικρινα δεν καταλαβαινω το γιατι. :115:
Θες ας πουμε σωνει και καλα να υπολογισεις με εκατομμυρια δεκαδικα ψηφια τον αντιστροφο ενος αριθμου ε που ειναι το προβλημα για την τιμη της x1???
Θα κανεις τη διαιρεση με διπλη ακριβεια ή ακομη καλυτερα να χρησιμοποιησεις την extended μορφη που σου δινει 19 δεκαδικα ψηφια (υποθετω να την εχει η εκδοση του compiler που χρησιμοποιεις).
Αρα μια και θα εισαι κοντα στη ριζα η τιμη αυτη για το Π.Α.Τ. ειναι οτι πρεπει.
Ακολουθως αφου βρηκες τον αντιστροφο με 19 ψηφια τοτε αυξανεις την ακριβεια σε μπολικα και τρεχεις Newton Raphson κι ΟΚ.
Ουτε πινακες ουτε οριζουσες ουτε δεν ξερω τι.
Οποτε το κυριοτερο προβλημα μεχρι στιγμης ειναι να φτιαξεις γιατι εγω δεν κατεχω απο προγραμματισμο ουτε το 0.000000001% των γνωσεων σου 6 αναθεματισμενες ρουτινες.
Η πρωτη θα κανει με καποιο τροπο προσθεση δεκαδικων με εκατομμυρια ψηφια η αλλη αφαιρεση η τριτη πολλαπλασιασμο κι οι αλλες τρεις θα ειναι οι ρουτινες που θα υπολογιζουν τον αντιστροφο (αρα εχουμε και τη διαιρεση), την τετραγωνικη ριζα και τον αντιστροφο της τετραγωνικης ριζας.
Γιαυτο σου ειπα να παρεις απο τον emnezia το *.pdf βιβλιο για να μελετησεις τον κωδικα που υπαρχει μεσα.
Εγω μπορει να τον εχω αλλα απο κατι radix και τα ρεστα σκαμπαζω οσα ο κορακας.
Ο circular εχει ασχοληθει με πραξεις εκατομμυριων ακεραιων μπορειτε να τα πειτε καλυτερα με αυτον.
Συνεπως φτιαχνοντας το πρωτο δειγμα θα προσπαθησεις να μου εξηγησεις τι εχεις κανει κι οταν μπω σε νοημα τοτε θα αρχισει να βελτιωνεται το προγραμμα.
Μια αλλη αποψη που ειμαι αντιθετος ειναι αυτη που λες οτι δε θα στρεσσαρει τοσο το συστημα αν κανω την ταδε διαδικασια κλπ.....
Εγω που απο προγραμματισμο δεν κατεχω ιδεα μουσικης ειδα τοσες φορες που εχω κλοκαρει τοσα ΑΜD συστηματα οτι το SuperPi 32M ηταν βαρυτερο απο το PiFast και πεταγε πιο ευκολα λαθη οταν ο επεξεργαστης ητανε στα ορια.
Για τη δε ταχυτητα του PiFast αστο μερα με τη νυχτα.....
Ευλογη η απορια μου γιατι βλεπω χωρις να ξερω τι στο διαολο εχουν γραψει αυτοι μεσα στον κωδικα τους ενα γρηγοροτερο προγραμμα (PiFast) να ειναι περισσοτερο αναισθητο απο το SuperPi.
Αυτα κι αλλες παραξενιες τις εχω πει τοσες και τοσες φορες στα threads που εχω ανοιξει και θα σου προτεινα να κοιταξεις εκεινα τα τμηματα που σε ενδιαφερουν (ξεκινα απο τον "Οδηγο αναφορας καθε χρηστη") οπου εκει εχω κι ενα attachment file στο 22ο ποστ.
Kλεινοντας θα φιλολογησω λιγο και το κρινω απαραιτητο.
Αυτο που προσπαθουμε οι δυο μας ειναι οπως ενα εμβρυο στην κοιλια της μητερας.
Ας το αφησουμε να γεννηθει πρωτα (φτιαξε μια beta εκδοση)...
Μετα οταν γεννηθει το παιδι θα αρχισει να μεγαλωνει και στο τελος οταν μεγαλωσει θα δουμε αν ειναι ωριμο πια (δηλαδη αν εξαγει γρηγορα λαθη)...
Αφου εχεις δει οτι ειμαι ενα πορωμενο ατομο και δεν εχω κανενα προβλημα να βαλω και στα 220 βολτ τον επεξεργαστη μου αν φυσικα αντεχε....
Ασε λοιπον την Κασσανδρα που εχεις μεσα σου και προσπαθησε να συνεργαστουμε καλυτερα ελεος βαλε ΧΡ να επικοινωνουμε που να παρει...
Πρεπει να βρουμε τη χρυση τομη ωστε να παντρευτουν οι γνωσεις που κατεχουμε κι οι δυο μας αλλα και των αλλων παιδιων εις οφελος ολων μας. :)

DarthMoul
23-01-2005, 21:14
Εγω που απο προγραμματισμο δεν κατεχω ιδεα μουσικης ειδα τοσες φορες που εχω κλοκαρει τοσα ΑΜD συστηματα οτι το SuperPi 32M ηταν βαρυτερο απο το PiFast και πεταγε πιο ευκολα λαθη οταν ο επεξεργαστης ητανε στα ορια.
Για τη δε ταχυτητα του PiFast αστο μερα με τη νυχτα.....
Ευλογη η απορια μου γιατι βλεπω χωρις να ξερω τι στο διαολο εχουν γραψει αυτοι μεσα στον κωδικα τους ενα γρηγοροτερο προγραμμα (PiFast) να ειναι περισσοτερο αναισθητο απο το SuperPi.

Συγκρίνεις ένα πρόγραμμα του 1995 με ένα πρόγραμμα του 2003. Γι αυτό δεν καταλαβαίνεις αυτό που σου συμβαίνε. Εδώ παίζουν ρόλο δύο παράγοντες:
1. Η ποιότητα του κώδικα που έχει γράψει ο προγραμματιστής.
2. Η ποιότητα του κώδικα που παράγει ο compiler.
Ακόμα και αν πρόκειται για το ίδιο ακριβώς πρόγραμμα, τα 8 χρόνια διαφορά (που σημαίνουν 8 χρόνια παραπάνω δοκιμών, research & development, optimization and debuging πάνω στον compiler) θα κάνουν τεράστια διαφορά.

Μπορώ να σου γράψω ένα πανάθλιο πρόγραμμα που να κρασσάρει την μηχανή και χωρίς overclocking :114:

Μπορώ να σου γράψω και ένα ταχύτατο για τον υπολογισμό του pi και να μην κρασσάρει ούτε στα 12 GHz με 380 τριφασικό στο vcore. Να κοίτα
printf("3.1415926535...blah blah...200 δις ψηφία"); :)

Κατά συνέπεια, το τι συμβαίνει με προγράμματα που ο κώδικας τους έχει instruction scheduling της περασμένης δεκαετίας καλύτερα να μην ασχοληθούμε; Και δεύτερον, εγώ θα φροντίσω να γράψω όσο καλύτερο κωδικα ξέρω και μου επιτρέπει ο χρόνος μου.

Στο κάτω κάτω, αν θέλουμε ένα πρόγραμμα που να είναι όσο ευαίσθητο είναι το Super Pi, μένουμε στο Super Pi και δεν παιδευόμαστε. Αν θέλουμε όμως να δούμε πως συμπεριφέρεται ο μοντέρνος κώδικας στις καινούργιες μηχανές εδώ είμαστε. Θέμα επιλογής είναι όλα.

Και για να δούμε τα πράγματα από την πρακτική τους πλευρά. Αν θέλεις να υπολογίσεις 32Μ ψηφία με 70% πάνω κλοκαρισμένη την CPU σου, γιατί να βάλεις ένα παλιό πρόγραμμα που είναι αργό και με προβλήματα και όχι ένα νέο που και σταθερό είναι και γρήγορο; Τι σε νοιαζειη σταθερότητα της μηχανής με προγράμματα του 95, του 93 ή του 84; Κανείς δεν τρέχει τέτοια πια.

Στο μέλλον θα τρέχεις κατά κόρον κώδικα multithreaded και στα 64 bits. Εγώ αυτό είχα στο μυαλό μου και αυτό ετοιμάζω (έχω και πρόβλεψη για 32 bits, μην ανησυχείς). Αν κάνω κάτι λάθος σε όλα αυτά πες μου να το ξανασκεφτώ.

MrSeanKon
23-01-2005, 21:25
Xμ τωρα εγινες σαφεστερος απλα μου ειχες δωσει μια λανθασμενη εντυπωση και σε αυτο τον τομεα εχουμε ενα προβλημα επικοινωνιας.
ΟΚ συμφωνω απολυτα σε οσα προανεφερες ελπιζω να μη σου χαλασα τη διαθεση... :022:
Δεν αντιλεγω οτι θα κανεις ο,τι καλυτερο μπορεις! :)
Το αυτο ισχυει κι απο εμενα δε νομιζω οτι χρειαζεται να σου το πω θαρρω οτι το γνωριζεις.
Απλα ανηκουμε σε διαφορετικα στρατοπεδα εγω που να παρει ο διαολος θελω κατι οσο γινεται ευαισθητο γιατι βαρεθηκα να τρεχω ενα σωρο ****** και μετα να χορταινω μπλε οθονες.
Παμε παρακατω:
Θα ηθελα να μου πεις αν εχεις καποια απορια σχετικα με τη μεθοδο Newton Raphson.
Kαι φυσικα επιμενω ξανα στο ερωτημα μου γιατι να θεσεις x1=40 αφου εστω και με μερικα ψηφια θα βρεις τιμη κοντα στη ριζα και να ξεκινησει μετα ο βροχος και να βρουμε τα υπολοιπα ψηφια.
Μπορεις να ποσταρεις ειτε εδω αποριες αν και θα ηταν καλυτερο να μελετησεις ξανα και με τη δεουσα προσοχη το thread των Μαθηματικων.
Τωρα αν ειναι καθαρα μαθηματικη απορια μπορουμε να την συζητησουμε εκει αλλιως αν βαλεις κωδικα σε C ας γινει εδω το ποστ.

Υ.Γ. :077:
Φτιαξε παντως κι ενα κολλητηρι προγραμμα αμα θες οπου να κολλαει με τη μια...
Εχω το Celeron για τετοια πειραματα ομως ελπιζω να μη μου γραψεις κωδικα μεσα οπου να γειωνεται η μητρικη... :040:

DarthMoul
23-01-2005, 21:35
Την μέθοδο Newton Raphson την χρησιμοποιώ από χρόνια εμπειρικά. Δεν έχω κανένα πρόβλημα στην υλοποίηση. Είναι η πρώτη φορά που θα την χρησιμοποιήσω για τόσο μεγάλες ακρίβιες. Το πρόβλημα είναι πολύ συγκεκριμένο και αντιμετωπίζεται εύκολα. Η εισαγωγική τιμή του αρχικού όρου λύνεται με το παλιό κόλπο ενός lookup table 5 θέσεων. Αρκεί να βρούμε τρόπο να υπολογίζουμε και το πλήθος των Newton Raphson βρόγχων ανάλογα με την διεκδικούμενη ακρίβεια και ειμαστε έτοιμοι. Μετα 7-10 μέρες το πρόγραμμα θα ειναι έτοιμο για το 1Μ.

Θεώρησα ευκαιρία να κατασκευάσω μία multiple precision library. Προς το παρών θα είναι fully customized για τον υπολογισμό του pi, για λόγους ταχύτητας κυρίως. Στο μέλλον όμως θα την κάνω γενικής χρήσης και διαθέσιμη για όλους. Εκεί θα σε χρειαστώ πολύ περισσότερο ;)

YΓ. Πολύ εύκολο το κολλητήρι. Self modified κώδικα θέλει. Είναι και εκτός από τα χ86 standards που θέτει η Intel. Τα αντιβιωτικά θα το αναγνωρίσουν (αν το αναγνωρίσουν) σαν stealth ιό και θα μας κυνηγάει και ο McAfee :p

MrSeanKon
23-01-2005, 21:50
LOL δεν εχω αντιβιοτικο στο πισι στο σπιτι μου μια και σερφαρω απο καφενεια και φυσικα δεν παταει κανενας το ποδαρι του εκει μεσα.... :080:
Ειναι ιερος χωρος....
Παμε παρακατω....
Εχεις βρει ακρη με τις multi precision ρουτινες?
Οχι για ακεραιους μονο αλλα για δεκαδικους...
Καλη η ιδεα σου ας βγει πρωτα για 1Μ ο κωδικας και μετα θα παει παραπανω...
Οσο για το πληθος των βροχων στη Newton Raphson χμ χλωμο το κοβω γιατι αυτη θα στηριχθει σε συγκριση που θα γινεται μεσα στις παραμετρους....
Αν ας πουμε χρησιμοποιουμε ακριβεια 1000 δεκαδικων ψηφιων και το Yi=1.000000.... (χιλια μηδενικα ψηφια) τοτε stop.
Eτσι εχω δει να γινεται ο ελεγχος στο βιβλιο που εχει κι ο emnezia...
Αμα καταλαβω τον κωδικα που θα μου δωσεις ωχ εκει θα σε σκοτισω με τα radix που υποθετω να χρησιμοποιεις τοτε θα βαλω το ρημαδι κεφαλι μου κι ελπιζω να βγαλω καμμια Katsumia :003: και να βρισκουμε εκ των προτερων τους βροχους για να γλυτωσουμε τον if ελεγχο μεσα σε while loop.
Σε C θα ειναι ετσι?? :080:
Γιατι αλλιως θα ψαχνομαι μη μου δωσεις τιποτε compile αρχεια εγω δεν ειμαι εσυ θελω να δω printf, scanf κι οχι φακιρικα που ξερεις! :083:

DarthMoul
23-01-2005, 21:58
Ναι έχω βγάλει άκρη με της MP ρουτίνες. Το πρόβλημα χρειάζεται μόνο πραγματικούς σταθερής υποδιαστολής. Άρα χρειάζεται μόνο ακεραίους ;)

Συνεπώς, με μόνη εξαίρεση την πραγματική διαίρεση που θα γίνει Newton Raphson για λόγους ταχύτητας, οι συναρτήσεις για τους πραγματικούς θα κάνουν ένα alignment, μετά θα καλούν τις αντίστοιχες των ακεραίων και bingo :)

Θέλεις και τεχνικές λεπτομέριες;

circular
24-01-2005, 00:14
Πάνω που είχα αρχίσει να χάνομαι με τα μαθηματικά το thread επανέρχεται σε πιο γνώριμα μονοπάτια. Αυτή τη στιγμή γράφω τον κώδικα του SeanKon στη C# για να δουμε τι ψάρια πιάνουμε και απο κει.

DarthMoul
24-01-2005, 02:43
Εγώ χτύπησα τοίχο στον πολλαπλασιασμό. Υλοποιώ τον σχολικό πολλαπλασιασμό ανα 9 ψηφία packed σε 32 bits. Μέχρι 1K ψηφία πάει σφαίρα. Είμαι πιο γρήγορος και από την GMP. Δυστυχώς έχει γεωμετρικά φθίνουσα απόδοση σε σχέση με τον αριθμό των ψηφίων. Για 1Μ ψηφία θέλει ώρες :( Καμμία ιδέα; :017:

MrSeanKon
24-01-2005, 02:52
DarthMoul οπως ειπες και παραπανω εχεις ΒΑΝ τους δεκαδικους και χρησιμοποιεις αποκλειστικα και μονο ακεραιους ή ειπα καποια *****??
Ενας ταχυς αλγοριθμος ειναι του Karatsuba αλλα δυστυχως δεν τον εχω διαθεσιμο και δεν τον εχω μελετησει...
Ετσι κι αλλιως απο οτι ειχα κοιταξει χρησιμοποιει μετατροπες σε αλλες βασεις οποτε Αλεκος (για εμενα)... :119:
Αυτο τον αλγοριθμο χρησιμοποιει και το Mathematica.
Κανε ενα search κι εσυ μηπως βρεις καλυτερο υλικο...
Παντως μια γευση θα παρεις στο site του Mathematica (http://mathworld.wolfram.com/KaratsubaMultiplication.html) δινει μια περιγραφη του αλγοριθμου αυτη καπως...
Και το Prime95 χρησιμοποιει τον αλγοριθμο αυτο...

Στειλε ενα υ2υ στο circular εχει κι αυτος καποιες ρουτινες για ακεραιους μηπως και σε βοηθησουν εγω sorry... :105:

Τωρα κοιταζοντας βιαστικα στο Google βρηκα κατι ψιλα περι Karatsuba:
Link 1 (http://icl.pku.edu.cn/yujs/MathWorld/math/k/k034.htm)
Link 2 (http://www.swox.com/gmp/manual/Toom-Cook-3-Way-Multiplication.html)
Link 3 (http://www.koders.com/c/fid7EC9D7FFD92E3119CB0528D637F4C7202303CEE9.aspx)
Link 4 (http://numbers.computation.free.fr/Constants/Algorithms/representation.html)
Link 5 (http://en.wikipedia.org/wiki/Multiplication_algorithm)


Aυτα ειδα καπως να αξιζουν μεχρι στιγμης...

circular HELP......... :100: :100: :100:
Στο Yahoo! δεν κοιταξα...

DarthMoul
24-01-2005, 05:42
Και εγώ μέχρι τώρα Karatsuba μελετούσα. Είναι ο μόνος που δείχνει να ταιριάζει στην υλοποίηση μου. Το πρόβλημα είναι ότι δεν είμαι μαθηματικός και δεν καταλαβαίνω ούτε τα μισά από τους τύπους που βλέπω, παρόλο που με την ορολογία τα πάω καλά. Κοίταξα και στο site της Intel μήπως έχει υποδείγματα κώδικα όπως είχε και για τον Newton-Raphson αλλά τίποτα :( Ο Fast Fourier είναι πιο γρήγορος αλλά δουλεύει με δυνάμεις του 2 και δεν με βολεύει. Εγώ δουλεύω με δυνάμεις του 10. Θα βρούμε άκρη.

ΥΓ. Μόλις έβγαλα άκρη από τον Karatsuba από το link του wiki. Θα κάνω την υλοποίηση, θα μετρήσω και θα σου πω. Αγγούρι αλγόριθμος. Θέλει πολύ προσοχή :( Πάντως για μικρούς αριθμούς φαίνεται πιο αργός από τον κλασσικό πολλαπλασιασμό. Γι αυτό με μικρά νούμερα χτύπαγα την GMP (GNU Multiple Precision Library) αλλά στα μεγάλα με περνούσε για πλάκα. Θα πάμε σε υβριδική λύση μάλλον. Σχολικό πολλαπλασιασμό μέχρι 1000 ψηφία και karatsuba για μεγαλύτερα.

MrSeanKon
25-01-2005, 14:45
Λοιπον DarthMoul εκανα αυτα που μου ειπες....
H πρωτη φωτο δειχνει τους αλγοριθμους που χρησιμοποιει το Mathematica για τις πραξεις τωρα τι ειναι ο three way Toom-Cook :104: λεει κατι ψιλα το δευτερο link.......
Aλλα απο οτι ειδα το site του Wiki ειναι πολυ καλυτερο απο τα αλλα εχει συνεχεις αναφορες ωχ διαβασμα τωρα στα γεραματα... :063:
Στη δευτερη φωτο βλεπεις το χρονο που απαιτηθηκε στα 3905 MHz τρεχοντας ενα Pi 1.000.000 ψηφιων.
Εβαλα διπλο μετα στο Mathematica αλλα δεν συμπαθει το ΗΤ κι αργει εκνευριστικα κι αναρωτιεμαι το γιατι...
Χαμηλωσα στα 500.000 ψηφια κι εβαλα διπλο Mathematica παλι ****** αργουσε...
Ισως κατι παιζει που φορτωνει διπλο πυρηνα τεσπα δεν ξερω και δεν ασχολιεμαι αλλο μαζι του.
Η τριτη φωτο δειχνει το χρονο που κανει το PiFast v4.3 για 10^6 ψηφια με τη μεθοδο Chudnovsky.
Η τεταρτη δειχνει το χρονο τρεχοντας ενα PiFast v4.3 με τη μεθοδο Ramanujan και η πεμπτη το χρονο τρεχοντας διπλο Ramanujan.

Oσο για τις πραξεις που μου ειπες δεν εβγαλα ακρη οτι πολλαπλασιασμο κι αν του εδωσα ειτε μεγαλους ακεραιους ειτε μεγαλους δεκαδικους τον εκτελουσε αστραπιαια κι εδειχνε μηδενικο χρονο.
Βαζοντας πολυ μεγαλα νουμερα :040: επαθε overflow το προγραμμα και κολλησε ο πυρηνας του.
Θα σωσω στο δισκο τα links που σου εδωσα παραπανω για τον Karatsuba και θα προσπαθησω να καταλαβω οσο μπορεσω τον αλγοριθμο αυτο γιατι απο προγραμματισμο γνωριζω τα μεγιστα.... :105:
Επομενως αν βγαλω ακρη τις επομενες ημερες θα ενημερωσω τον οδηγο Μαθηματικων ή θα κανω εδω εκ νεου post τεσπα θα δουμε...
Αν εχεις βρει καποιο καλυτερο link με τον Karatsuba ποσταρε το για να το δω κι αυτο...
Ο δε circular μου ειπε οτι θα μπορεσει να σε βοηθησει οταν βγαλεις το πρωτο δειγμα κωδικα τωρα δε μπορει να χελπ....
Παντως προκυπτουν πολλα οφελη ασχετα αν μας βγει το λαδι με τον αλγοριθμο αυτο...
Αν τον κατανοησουμε σε βαθος τοτε θα μπορουμε πολυ ευκολα να επεκτεινουμε το προγραμμα ωστε να υπολογιζει τετραγωνικες ριζες με απειρα ψηφια αλλα και το e=2.7182.... οπως κανει το PiFast.
Το e=2.7182 θα υπολογιστει απο το αναπτυγμα της δυναμοσειρας γιατι ειναι πολυ ευσταθης αλγοριθμος συγκλινει γρηγορα κι απο οτι ειδα και στον Abramowitz γινεται χρηση σειρων Taylor για τετοιες καταστασεις...
Aν εχεις κατι να πεις ποσταρε το οσο θα ειμαι μεσα γιατι δε θα μεινω πολυ ωρα...

DarthMoul
25-01-2005, 15:32
Για το Mathematica δεν έφτιαξαν δικιά τους arbitrary precision library όπως κάνουμε εμείς. Χρησιμποιούν την GMP που είναι κορυφαία και opensource. Σκέψου το σαν λύση να κάνουμε και εμείς το ίδιο. Αλλά από τη άλλη θα χάσουμε τον έλεγχο στο source. Πάντως αν πάμε σε GMP, σε λίγες μέρες είμαστε έτοιμοι.

Ο karatsuba είναι εύκολος στην κατανόηση αλλά δύσκολος στην υλοποίηση. Αναδρομικός αλγόριθμος με χρήση δικού του stack, δηλαδή αγγούρια :(
Είναι 25% ταχύτερος από τον σχολικό πολλαπλασιασμό, ΑΝ υλοποιηθεί με πολύ προσοχή.

DarthMoul
25-01-2005, 22:52
Μετά το 16ο δεκαδικό δεν συμφωνώ ούτε με το super-pi, ούτε με τους υπολογισμούς που έκανε ο Sean στην αρχή του thread. Η GMP δεν φταίει γιατί την χρησιμοποιεί και το Mathematica. Έλεγξα τον κώδικα μου 10 φορές και λάθος δεν βρίσκω. Τι μπορεί να φταιει; :102:

circular
25-01-2005, 23:33
Ποτέ ένα ζευγάρι μάτια δεν είναι αρκετό για να βρει τα πιο χαζα λαθάκια. Κάνε ένα περίπατο και όταν το ξαναδείς θα προσέξεις που είναι το πρόβλημα. Εναλλακτικά στείλε τον κώδικα και τον αλγόριθμο μπας και βγάλουμε άκρη!

DarthMoul
25-01-2005, 23:58
Κώδικας και το makefile attached.
Εδώ είναι η GMP: http://www.swox.com/gmp/
Και ο αλγόριθμος στην αρχή του thread. Τον περιγράφει και τον αναλύει ο Sean.

DarthMoul
26-01-2005, 09:57
Βρέθηκε το πρόβλημα. Ιδιοτροπία της GMP. Το σαββατοκύριακο θα έχουμε την πρώτη έκδοση.

DarthMoul
26-01-2005, 19:35
Έτοιμο αλλά υπερβολικά αργό :022:

Πιό γρήγορος αλγόριθμος δεν υπάρχει; Στο δικό μου μηχάνημα κάνει τον διπλάσιο χρόνο από το super-pi στην single threaded έκδοση :087:

Πάντως είναι αξιόπιστο. Σύγκρινα τα αποτελέσματα του με αυτά του super-pi και είναι ακριβώς τα ίδια.

emnezia
27-01-2005, 19:05
Xmm περίεργο έχουν μάλλον άλλο αλγόριθμο ή προσέγγιση στο superpi.
Το αρχείο θα το ανεβάσεις να το δοκιμάσουμε στο θέμα ευστάθειας;

DarthMoul
27-01-2005, 19:09
Xmm περίεργο έχουν μάλλον άλλο αλγόριθμο ή προσέγγιση στο superpi.
Το αρχείο θα το ανεβάσεις να το δοκιμάσουμε στο θέμα ευστάθειας;
Ναι θα το ανεβάσω όταν θα γίνει port στα winblows μαζί με τα sources. Προς το παρόν μελετάω λιγάκι τα sources της GMP για να δω πως δουλεύει εσωτερικά. Κάτι μου λέει πως μπορούμε να κάνουμε κάποια βελτίωση.

MrSeanKon
27-01-2005, 21:13
Darth με πετυχες τωρα σε φαση :043: μπ***λο κι ειμαι ετοιμος να τα σπασω ολα....
Καταρχην αφου χρησιμοποιεις GMP οπως ειπες και παραπανω αναμενεται να ειναι αργο σχετικα το προγραμμα στις πραξεις μεταξυ των αριθμων ΟΚ ο Karatsuba αλλα κι αλλοι πιο βελτιωμενοι αλγοριθμοι ειναι αγγουρι I know....
Oσο για το συγκεκριμενο αλγοριθμο του Borwein ειναι αρκετα γρηγορος γιατι αν θες να μπλεξουμε με την Chudnovsky τοτε να δεις αγγουρι εχει ενα τεραστιο μακρυναρι ο τυπος....
Επομενως αυτο που βλεπω ειναι βελτιωση του υπαρχοντος προγραμματος στον αλγοριθμο αυτο αρκει να ξεπερασουμε το προβλημα ταχυτητας στις πραξεις των αριθμων....

Μια παρακληση....
Επειδη τα Linux οπως και τα συναφη δεν τα χωνευω δε γινεται να ανεβασεις *.cpp file τον κωδικα??
Δε μπορω να βλεπω compiled αρχεια εχω πολλα νευρα και τα εχουμε πει μεσω υ2υ το γιατι....
Δηλαδη αν σου ειναι ευκολο δωσε κατευθειαν source κωδικα (αναθεμα να καταλαβω και πολλα τεσπα) αλλα να βλεπω #include <stdio.h> κλπ κι oχι τετοια....

DarthMoul
27-01-2005, 21:43
Εδώ είναι τα sources. Αν καταλάβεις τίποτα σου βγάζω το καπέλο :)
Πρέπει να κάνω port την GMP σε windows και μετά και το πρόγραμμα. Για binaries υπομονή μέχρι την κυριακή που ελπίζω να είμαι έτοιμος.

Μία αιτία για την καθυστέρηση σε σχέση με το super-pi είναι η ίδια η GMP. Είναι η κορυφαία βιβλιοθήκη για multiple precision floating points. Όμως εδώ το πρόβλημα θέλει πραγματικούς σταθερής υποδιαστολής και όχι κινητής. Oι πραγματικοί σταθερής υποδιαστολής είναι πολλές φορές πιο γρήγοροι από τους float. Εώς και 10 καμμιά φορά.

Ο Chudnovsky είναι πιο γρήγορος; Δώσε μου κανένα καλό link και θα βγάλω άκρη. Ο Borwein μπορεί να είναι απλός αλλά δεν επιτρέπει βέλτιστους παραλληλισμούς. Αν δεις πιο πάνω στα screenshots η multithreaded έκδοση σε μηχανή με 2 πραγματικές CPU, κέρδισε κάτι παραπάνω από 30%. Το θεωρητκό βέλτιστο θα ήταν 50% και το πραγματικό κάπου 45%. Δηλαδή με multithreading θα έφτανα τουλάχιστον το super-pi ενώ τώρα :102:

ΥΓ. Δεν ανέβασα compiled κώδικα. To unix δεν έχει LFCR στο τέλος της γραμμής αλλά μόνο LF. Φόρτωσε τα σε έναν καλό editor και θα τα δεις μια χαρά. Ο edit του DOS νομίζω τα βλέπει.

MrSeanKon
27-01-2005, 21:51
Καλα δε βιαζομαι δεν εχω link να σου δωσω τη μεθοδο Chudnovsky τωρα...
Εχω τον τυπο απο τα demos του Mathematica δες στην προηγουμενη σελιδα τι εννοω γιαυτο και σου ειπα να το παρεις απο τον emnezia και να το εγκαταστησεις για να μελετας κι εσυ το προγραμμα (με την προυποθεση οτι θα βαλεις ΧΡ αν και μου ειπες οτι θα το κανεις τεσπα).....
Δεν ειπα οτι θα καταλαβω τον κωδικα απλα μου τη δινουν Linuxoειδη τερτιπια...
Προτιμω να ανεβαζεις ενα *.exe για ΧΡ παρα τετοια αυτο εννοουσα αν καποτε καταλαβω τον κωδικα που εχεις γραψει και με τη βοηθεια σου ισως κατσω να τον μετατρεψω και σε C++ Builder τεσπα θα δουμε....
Η Chudnovsky χρησιμοποιειται απο το PiFast v4.3 αλλα και η Ramanujan δες παραπανω την μεταξυ τους κοντρα....
Εχε ομως υποψιν οτι χρησιμοποει το N! αρα ενα ακομη αγγουρι....
Επισης ειναι πολυπλοκοτερος ο τυπος.....
Ενα κλασμα ειναι αλλα που να το θυμαμαι απεξω.....
Τεσπα ο,τι θες να πεις στειλε υ2υ ή ποσταρε γιατι πρεπει να κλεισω λογω νευρων κι υποχρεωσεων....

DarthMoul
27-01-2005, 22:21
Το Ν! δεν είναι πρόβλημα. Το πρόγραμμα είναι σε ansi C, οπότε περνάει από builder μια χαρά. Την GMP θέλεις μόνο και είσαι έτοιμος.

DarthMoul
28-01-2005, 20:51
Τελείωσα και το windows port. Πάνω από τα 256K τα windows μου δίνουν ένα General Protection Fault :102:

Στο linux που δοκίμασα κρασσάρει στα 4M. Τι να κάνω τώρα; Να ετοιμάσω το πακέτο με τον binary κώδικα, τα sources, τις βιβλιοθήκες και τα makefiles και να τα ανεβάσω κάπου; Ή να κάνω debugging στην GMP στα windows για να βρούμε που κρασσάρει και να πάμε παραπάνω;

TASOS
28-01-2005, 21:53
Για συγκεντρωθείτε παρακαλώ :024:
Πρέπει να φτιάξουμε κάτι καλό.

....όχι και να μας τη "λέει" ο Ρουμάνος...δέν το δέχομαι :003:
http://www.overclockers.gr/vbull/showthread.php?t=6126

DarthMoul
28-01-2005, 22:06
Για συγκεντρωθείτε παρακαλώ :024:
Πρέπει να φτιάξουμε κάτι καλό.

....όχι και να μας τη "λέει" ο Ρουμάνος...δέν το δέχομαι :003:
http://www.overclockers.gr/vbull/showthread.php?t=6126
Αυτά δεν είναι δύσκολα. Το pctbench κάνει πιο δύσκολα πράγματα. Επιπλέον δεν είναι multithreaded το πρόγραμμα του. Άρα ρίχνει όλους όσους έχουν P4 ή SMP συστήματα.

Αυτό που επιδιώκουμε να κάνουμε με τον CPU tester είναι πολύ δυσκολότερο. Karatsuba, Newton/Raphson και τελειωμό δεν έχει. Σιγά σιγά θα το κάνουμε καλό.

MrSeanKon
28-01-2005, 22:36
Bγαλε ενα *.exe να το τρεξουμε κι εμεις στα Windows γιατι αλλιως δε βλεπω να βγαινει ακρη με τα Linuxοειδη κολπα που κανεις....
Ετσι θα δουμε μεχρι που παει ΟΚ...
Προς το παρων θα το τρεξω στο CeleronD σε default συχνοτητες οποτε δεν πρεπει να κολλαει.
Α64 δεν παιζει και δεν τον βαζω με αερα που να κατεβει ο Θεος στη Γη.
Βαλε 4Μ ή και παραπανω οσο μπορεις κι οποτε μπορεις....
Μετα ξερω τα ορια του CeleronD περιπου οποτε θα του ριξω στα αυτια να δω αμα κολλησει...
Ελεγχο δεκαδικων ψηφιων κανεις?

DarthMoul
28-01-2005, 22:47
Τι εννοείς έλεγχο δεκαδικών; Η windows έκδοση χτυπάει πάνω από 256K :(
Εγώ λέω να δοκιμάσουμε πρώτα με αυτό, μέχρι να βρούμε λύση για παραπάνω. Δεν φταίει το πρόγραμμα. Τα windows μου την κάνουν και πρέπει να βρω work around

MrSeanKon
28-01-2005, 22:51
Ελεγχο δεκαδικων εννοω αν στο τελος του καθε βροχου τσεκαρονται τα τελευταια δεκα ας πουμε ψηφια για να δουμε αν ειναι και τα σωστα.
Τεσπα επειδη ειμαι μπιλιες αυτο το *.exe που θα βγαλεις θα μπορεσουμε εμεις να το τρεξουμε?

DarthMoul
28-01-2005, 22:58
Στο τέλος φτιάχνω ένα αρχείο με όνομα CPUPI.DAT. Αυτό το σύγκρινα με το PI.DAT του super-pi και το βρηκα 100% ίδιο. Άρα το πρόγραμμα δουλεύει. Ο έλεγχος που λες πως πρέπει να γίνεται;

Τι εννοείς δεν φαίνεται τίποτα στα sources; Τα *.c αρχεία που έχει μέσα δεν μπορείς να τα δεις; Τα φόρτωσες στον edit του DOS;

MrSeanKon
28-01-2005, 23:03
Οπως τσεκαρεις ετσι τα ψηφια τοτε θα πεταει λαθη στο τελος ολων των βροχων ή κανω λαθος? :102:
Αρα αν ειναι να τρεξεις ας πουμε 64Μ (πες οτι το φτιαχνουμε τεσπα) και περιμενεις 2 ωρες για να δεις οτι εβγαλε λαθη χμ ειναι λιγο ξωφαλτσο....
Γιατι το SuperPi ας πουμε πεταει λαθη πολλες φορες πριν ολοκληρωθουν οι βροχοι π.χ. τα 32Μ σε AMD μιλαω πετανε λαθη και στην αρχικοποιηση...

Ανοιξα με το Notepad τα *.c αρχεια αλλα δεν φαινονται...
Εκεινο το Makefile τι στο διαολο ειναι???
Τεσπα αυτο δεν ειναι το θεμα της κουβεντας αλλο μας καιει προτιστως..

DarthMoul
28-01-2005, 23:11
Το Makefile το χρησιμοποιεί το make utility του unix, ή το nmake της M$ C για να κάνει compile τα sources. Αλλιώς θα πρέπει να πληκτρολογώ κάτι έντολές σαν αυτή κάθε φορά που θέλω να κάνω compile:
$gcc -march=k8 -O3 -m64 -fommit-frame-pointer -mno-sse2 cputest.c -o cputest -lpthread -lgmp

Ασύμφορο εντελώς.

Ωραία. Αν μαζέψω τα τελευταία 3 ψηφια από κάθε pass και τα συγκρίνω στο τέλος του βρόγχου είμαι καλά; Εννοείται ότι από ταχύτητα θα πέσουμε στο 1/5 και ίσως και πιο κάτω έτσι. Αν σε βολεύει θα το κάνω έτσι.

MrSeanKon
28-01-2005, 23:16
Δεν ειναι τι με βολευει εμενα αλλα εσενα κυριως.
Καλα ενας ελεγχος θα ριξει τοσο πολυ το χρονο?? :017:

DarthMoul
28-01-2005, 23:22
Πρέπει να γίνει extract o multiple precision float σε string πριν από την σύγκριση. Αυτό κοστίζει σε χρόνο το πενταπλάσιο του υπολογισμού περίπου. Και το extract θα γίνει τόσες φορές, όσοι και οι βρόγχοι. Δεν είναι δύσκολο να το φτιάξω αλλά θα είναι χρονοβόρο.

DarthMoul
29-01-2005, 10:10
Το ξανασκέφτηκα και είδα πως υπάρχει καλύτερη λύση. Θα μπορούσαμε να έχουμε δύο threads που να υπολογίζουν το pi. Στο τέλος κάθε loop θα μπορούσαμε να ελέγχουμε αν το αποτέλεσμα που έχουν παράγει και τα δύο είναι το ίδιο. Αν όχι, θα χτυπάει error. Έχει λίγο δουλίτσα παραπάνω αλλά είναι πολύ πιο γρήγορο από την προηγούμενη λύση.

Αν το βρίσκεις καλή ιδέα πες μου να προχωρήσω. Δεν θα αργήσει πολύ. Σε καμμιά βδομάδα θα είναι έτοιμο.

MrSeanKon
02-02-2005, 02:10
Χμ εκει ριξε μια ματια (http://www.pctechnology.gr/vbull/vb/showthread.php?t=6319) να δεις τις διαφορες μεταξυ Α64 και καποιου προηγουμενου post που ζητησες για το 1Μ στο Mathematica....
Γιατρε κανε ο,τι νομιζεις θα το μονταρουμε το προγραμμα τωρα που ηρθα παλι στην AMD τοτε θα δεις γκαζια!
Τουλαχιστον θα κανω ταχυτατα τους υπολογισμους αρα θα βρω ο,τι δεκαδικα ψηφια θες κι με οση ακριβεια θες.
Επισης θα μπορεσω να κρασαρω ευκολοτερα το συστημα μου. :001:

Οσο για τα δυο threads ναι ειναι οντως καλη φαση....
Το ιδιο ειχα σκεφθει να κανω κι εγω με τον CPU Stretcher αλλα μια και πουληθηκε ο Prescott δε θα ασχοληθω περαιτερω.
Εναν υποτυπωδη ελεγχο ακριβειας θα εκανα οχι κατι το εκτεταμενο διοτι το προγραμμα αυτο ειναι καβουρδιστηρι κυριως. :040:

DarthMoul
02-02-2005, 09:09
Δοκίμασα τον υπάρχοντα κώδικα για υπολογισμό 128M ψηφίων σε linux και δουλεύει αξιόπιστα. Συγκρίνω πάντα τα αποτελέσματα με αυτά του super-pi και τα βρίσκω ίδια. Το πρόβλημα είναι ότι για να το κάνω να δουλέψει με πάνω από 4M σε linux, πείραξα τα sources των βιβλιοθηκών του συστήματος. Στα windows sources δεν υπάρχουν και κοιτάω να βρω κάποιο workaround. Μόλις λύσω και αυτό το πρόβλημα, θα μετασκευάσω το πρόγραμμα να κάνει δύο υπολογισμούς εν παραλλήλω με χρήση threads. Στο τέλος κάθε loop θα συγκρίνει το αποτέλεσμα και των δύο. Αν υπάρχει διαφορά θα βγάζει κάποιο μήνυμα. Επιλεκτικά θα μπορεί να δημιουργήσει και αρχείο με ίδιο format με αυτό του super-pi για να μπορεί ο χρήστης να κάνει επιπλέον ελέγχους αν θέλει.

ΥΓ. Τώρα ο dual opteron μου δείχνει την δύναμη του. Με τόσους υπολογισμούς (128M με δύο threads + 128M super pi) το hypertransport, το NUMA και η FPU δίνουν ρέστα :) Άλλο μηχάνημα με τόση πίεση θα είχε πάρει φωτιά.
Κρίμα που η AMD δεν μου δίνει έναν compiler όπως η Intel :(

MrSeanKon
02-02-2005, 19:22
Darth βλεπω οτι παει μακρια το ζητημα κι εχεις αναλαβει ολο το φορτωμα... :090:
Παντως οπως ειχαμε πει και πιο πριν τα αποτελεσματα αν βγουν μουφες θα ειναι διαφορετικα.
Εννοω (με την πειρα σε AMD συστηματα με το Mathematica) οτι σε οσες περιπτωσεις εκανε λαθη ο AMD που ειχα τοτε την επομενη φορα δεν εκανε τα ιδια λαθη.
Αρα μας εξυπηρετει η λυση του διπλου thread.
Aν ομως τρεξεις περισσοτερα threads θα κερδισεις μεγαλυτερο τσιτωμα?? :017:
Ομως θα αναγκαστεις να κανεις μικροτερους υπολογισμους γιατι δε θα επαρκει η μνημη δε νομιζω οτι ειναι καλο να χρησιμοποιουνται προσωρινα αρχεια αν δεν επαρκει η μνημη.
Παντως για να σε ενθαρρυνω ο Α64 ειδα οτι κολλωνει και με τον CPU Stretcher (κολλαει ο Task Manager) οσο και τα 32Μ.
Και σκεψου οτι το προγραμμα αυτο εχει αλλη χρηση (καβουρδιστηρι). :080:
Δεν ξερω τι ειδους ελεγχο κανεις.
Τσεκαρεις τα τελευταια δεκαδικα ψηφια (τα δεκα ας πουμε) ή ολα???
Επισης ο πινακας που σου εχω δωσει δειχνει οτι ανα βροχο υπολογιζονται περισσοτερα δεκαδικα ψηφια κι οχι 1Μ, 2Μ ακριβως.

DarthMoul
02-02-2005, 19:39
Δεν είναι φόρτωμα. Παιχνίδια είναι αυτά για να διασκεδάζουμε με τις μηχανές μας. Άλλοι παίζουν Doom, εμείς κάνουμε αυτά :)

Το χώσιμο θα το φάει o circular που θα πρέπει να φτιάξει GUI με qt libraries. Κωστάκη στην γωνία σε περιμένω :077:

Η λύση των disk overlays απορρίπτεται για την δουλειά που θέλουμε το πρόγραμμα. Δημιουργούν μεγάλα latencies και δίνουν ανάσες στην CPU. Καλύτερα να δουλέψουμε το υπάρχον πρόγραμμα επαναληπτικά. Δηλαδή αν η μνήμη σου επαρκεί για 32Μ πχ, τρέξε το πρόγραμμα 5 φορές να δεις αν είσαι σταθερός.

Σε Athlon περισσότερα από δύο threads δεν θα σου δώσουν κάτι παραπάνω. Ο P4 ίσως χρειαστεί 4 threads αν και αμφιβάλλω. Αν δούμε ότι τα χρειάζεται θα προσθέσουμε παράμετρο για να ανοίγουν περισσότερα από δύο.

Δεν ξέρω για τον δικό σου Athlon, αλλά οι δικοί μου δεν μασάνε τίποτα. Κάνουν υπολογισμούς με 16 threads στο background, και εγώ δουλεύω στο desktop σαν να μην συμβαίνει τίποτα. Παίζω μουσική ή βίντεο, κάνω browsing και παράλληλα κάνω και compile τον kernel και νομίζω πως το μηχάνημα είναι idle. Βέβαια άλλο conqueror και linux που δουλεύω εγώ και άλλο winblows και IE που δουλεύεις εσύ. Να φανταστείς ότι το super-pi στα win μου δίνει 56-57 sec και στο linux 42.

Ίσως η GMP είναι πολύ καλογραμμένη για την δουλεια που την θέλουμε :p

Τα ελέγχω όλα τα ψηφία για να ζορίσω τους memory controllers και το cache. Το ξέρω ότι τα ψηφία είναι περισσότερα αλλά με βολεύει να στρογγυλοποιώ στην αμέσως μικρότερη δύναμη του 2. Ότι χάνω από χρόνο στον έναν βρόγχο, το κερδίζω στον επόμενο και έτσι δεν έχει διαφορά.

MrSeanKon
02-02-2005, 19:48
Ορθως συμφωνουμε.....
Παντως με τα ψηφια εχεις καποιο αλλο προβλημα????
Κι επισημαινω οτι ανα βροχο δε θα βρεις ακριβως τα ψηφια....
Θες να σου δωσω τη Chudnovsky να τη μελετησεις κι αυτη???
Ειναι ενας τυπος παραπλησιος με της μεθοδου Ramanujan αλλα πολυπλοκοτερος.
Εκει καθε ορο που προσθετεις στο αθροισμα σου δινει 14 δεκαδικα ψηφια παραπανω (στο περιπου).

Βλεπω το circular να βγαζει εκδοση για τα Windows τεσπα ας κανει κι αυτος κατι οχι ολα εγω! :050:
Το εχω ριξει πολυ στο καψιμο γιατι τελικα το καβουρδιστηρι μου κανει καλη δουλεια. :050:

Οταν θα βγει η Windows εκδοση θα περιμενω πως και πως να την τρεξουμε για να δω τα ζορια της....
Με τον Karatsuba βγαινει ακρη Γιατρε??

DarthMoul
02-02-2005, 19:57
Με τα ψηφία δεν έχω κανένα πρόβλημα. Υπολόγισα μέχρι 128M σωστά χωρίς να χτυπήσει segfault το πρόγραμμα στο linux. Στα windows δεν βρήκα λύση ακόμα για να ξεπεράσω τα 128Κ αλλά την έχω προσεγγύσει. Έκανα disassemby κάποιες βοβλιοθήκες του συστήματος, αφού η M$ δεν μου δίνει τα sources, και βρήκα που κοπανάνε. Θα παρακάμψω το πρόβλημα πειράζοντας λιγάκι την GMP και ελπίζω να δουλέψει τουλάχιστον μέχρι τα 32M. θα δούμε.

Αφού χρησιμοποιώ GMP, δεν κάνω ούτε karatsuba, ούτε newton/raphson. Αυτά θα τα κάνω στο μέλλον όταν τελειώσω την δικια μου βιβλιοθήκη και αντικαταστήσω την GMP.

Και την winblows έκδοση εγώ θα την βγάλω για κονσόλα. Ο circular θα κάνει την βρώμικη δουλειά να προσθέσει qt gui για να έχουμε gui και στο linux :p

MrSeanKon
02-02-2005, 20:04
Μπορω κι εγω να την κανω την Windows εκδοση αρκει να εχω τον κωδικα οπως τον θελω οχι σε Linuxoειδη τερτιπια...
Και δε χρειαζεται να καταλαβω πολλα.... :044:
Εκει που λες εσυ scanf(" ") και θα διαβαζει απο το πληκτρολογιο τις παραμετρους θα δωσω την αντιστοιχη για τα ComboBoxes και δατς ολ... :027:

ΟΚ περι Karatsuba με το μαλακο τοτε να μη μας παθεις και κανενα κακο! :058:

DarthMoul
02-02-2005, 20:10
Δεν υπάρχει scanf στο πρόγραμμα. Μόνο με command line arguments δουλεύω. Πάγια τακτική στο unix. Για να μπορείς να βάλεις τα προγράμματα σου μέσα σε scripts δεν υπάρχουν menus.

O karatsuba μην σε ανησυχεί. Είναι εύκολος. Το fast fourier transformation είναι τρίσκολο, αλλά πολύ πιο γρήγορο από τον karatsuba. Δεν κατάλαβα τίποτα :017:

MrSeanKon
02-02-2005, 20:24
Kι εγω κοιταξα λιγο περισσοτερο τον Karatsuba και μπηκα στην ιδεα καπως ασχετα αν δεν τα πιανω αυτα με τις αλλαγες βασεων.....
FFT εχω χρονια να ασχοληθω και πρεπει να ριξω πολυ διαβασμα παντως θα προσπαθησω καποια στιγμη να το μελετησουμε κι εκει το θεμα.
Πρωτα με το καλο να βγει η πρωτη εκδοση και βλεπουμε.
Ειπαμε δε μας βιαζει τιποτα! :023:

DarthMoul
03-02-2005, 14:55
Ετοίμασε μια καλή και λεπτομερή παρουσίαση του Chudnovsky . Έχει πολύ καλή φήμη τελικά.

http://forums.2cpu.com/showthread.php?threadid=60754

Πρόσεξε την υπογραφή που έχει ο τύπος εκεί. Dual Xeon Nocona 2.8@3.2 GHz και super-pi 39 seconds. Εγώ στην μισή συχνότητα έχω super-pi 42-43 sec. Άρα single threaded με Chudnovsky θα πρέπει να είμαι κάπου στα 4 sec, και multithreaded γύρω στα 2.5 sec.

MrSeanKon
03-02-2005, 22:14
Οι μεθοδοι Ramanujan και Chudnovsky

Tον τυπο για τη σειρα Ramanujan θα τον βρεις στο 20ο κεφαλαιο στο κατω μερος της σελιδας 924 του βιβλιου που εχεις γιαυτο και δεν τον παραθετω εδω.
H πρωτη φωτο ειναι οι εξοδοι για τους πρωτους δεκαπεντε ορους της σειρας αυτης και βλεπεις ποσο ειναι το σφαλμα απο την πραγματικη τιμη του π=3.14.....
Δηλαδη αν αθροισεις τους πρωτους 15 ορους θα εχεις βρει το π=3.14... με 127 δεκαδικα ψηφια ακριβως.
Επομενως αν χρησιμοποιησεις το προγραμμα Data Modeling των O/c Tools (να κι αλλη μια χρησιμοτητα του προγραμματος αυτου κανει και για περισσοτερα εκτος του o/c) ;) θα δωσεις τα πρωτα δεκαπεντε ζευγαρια των δεδομενων οπως βλεπεις στη δευτερη φωτο.
Η εξοδος που θα λαβεις φαινεται στην τριτη φωτο και θα επιλεξεις το πρωτο μοντελο να γινει η εκτιμηση.
Κι αυτο γινεται εκει δινουμε μια τιμη ας πουμε για 800 ορους....
Eπειδη το 800 > 15 εχουμε extrapolation του τυπου κι οπως μπορεις να μελετησεις στο αντιστοιχο κεφαλαιο του βιβλιου που εχεις ειναι επικινδυνο :018: να χρησιμοποιουνται σε τετοιες περιπτωσεις τετοιοι τυποι.
Εκτος κι αν ειμαστε σιγουροι ή μαλλον σχεδον σιγουροι οτι ο τυπος θα ειναι ετσι ακριβως και σε μεγαλυτερα αθροισματα (ή στο περιπου).
Η τιμη εκτιμησης 6407 δεκαδικα ψηφια βλεπεις οτι αποκλινει ελαχιστα απο την πραγματικη τιμη των 6394 ορων που δινει πραγματι η σειρα (φωτο 4).
Οποτε μπορεις να αλλαξεις εκ νεου τα δεδομενα στο προγραμμα Data Modeling και να επαναλαβεις την εκτιμηση αρα θα εχεις καλυτερη προβλεψη για 2000 ορους αν βαλεις και το 800 μεσα στα δεδομενα απ' οτι αν εχεις μονο τα πρωτα ψηφια.
Δηλαδη οσο περισσοτερο αποκλινεις απο τα ακρα του πεδιου ορισμου των δεδομενων τοσο θα ξεφευγει κι η εκτιμηση που θα σου κανει το προγραμμα.
LOL γιαυτο το λογο εχω κλειδωσει αρκετους Estimators στα Tools και δεν επιτρεπονται μεγαλες extrapolation τιμες μια και δεν ξερουμε παντα αν ακολουθειται η ιδια εξελιξη του φαινομενου.
Σε γενικες γραμμες μια καλουτσικη σχεση των ψηφιων για τη μεθοδο Ramanujan ειναι αυτη που βλεπεις στην πεμπτη φωτο.
Η εκτη φωτο δειχνει τον τυπο της σειρας Chudnovsky οπου μοιαζει με αυτον της Ramanujan.
Ομως προκειται για εναλλασσουσα σειρα (στο αθροισμα υπαρχει ο ορος (-1)^j επομενως θα αλλαζει προσημο διαρκως) στο δε παρονομαστη το j! υψωνεται στην τριτη δυναμη κι επιπλεον ο αριθμος 640320^3=262537412640768000 υψωνεται αρχικα στην 0.5 (j=0) μετα στην 3/2 (j=1) κ.ο.κ. (σπαστικο θα μπλεξεις με τετραγωνικες ριζες)....
Η μεθοδος αυτη δινει 14 ψηφια vs 8 (Ramanujan) αλλα βλεπεις οτι ειναι πολυπλοκοτερη σε πραξεις.
Η εβδομη φωτο δειχνει τα σφαλματα (οι δεκα πρωτοι οροι) για τη σειρα Chudnovsky.
Kανοντας μια πρωτη εκτιμηση ο αντιστοιχος τυπος που δινει το πληθος των σωστων ψηφιων ανα n ορους ειναι αυτος που βλεπεις στην ογδοη φωτο.
Tips and tricks
->1)<- Oποια μεθοδο κι αν αποφασισεις να χρησιμοποιησεις (εσυ θα το κρινεις ποια θα ειναι η καταλληλοτερη βασει δικων σου κριτηριων τεσπα το συζηταμε αν θες ομως) το πληθος των ψηφιων μπορει να βρεθει με τον απλουστατο τροπο:
Χονδρικα εχεις μια εκτιμηση για καθε μεθοδο ηδη σου εδωσα τους τυπους για τις μεθοδους Ramanujan, Chudnovsky ενω στην τριτη σελιδα σου ειχα δωσει για την αναδρομικη μεθοδο Borwein.
Aραγε λοιπον LOL εστω οτι θελεις να βρεις ποσα δεκαδικα ψηφια δινει επακριβως η σειρα Chudnovsky για 100 ορους....
Τρεχεις το μοντελο που σου εδωσα ---> 12.528+14.321*100=1435.64-->1436 ψηφια.
Φυσικα για εσωτερικους υπολογισμους η σταθερη ακριβεια που θα χρησιμοποιησεις θα ειναι λιγο μεγαλυτερη (δεκα ψηφια παραπανω εστω) γιατι αλλιως ζητω που καηκαμε.
Επομενως οταν θα τελειωσει το μηχανημα τους υπολογισμους εσυ θα παρεις μια εξοδο κι αποθηκευσε την σε ενα αρχειο.
Μετα ξανατρεχεις το προγραμμα για 101 ορους και αποθηκευεις την εξοδο ξανα χωρις να σε ενδιαφερει ποσα δεκαδικα ψηφια υπολογιζει (παρα μονο θα αυξησεις την precision κατα 14).
Αν λοιπον κανεις συγκριση των αποτελεσματων θα μετρησεις ποσα δεκαδικα ψηφια ακριβως εχουν παρομοια και τα δυο αρχεια.
Ε ο αριθμος αυτος ειναι τα ακριβη δεκαδικα ψηφια για τους 100 ορους.
Για να γινω περισσοτερο σαφης προσεξε την ενατη και τη δεκατη φωτο (μεθοδος Borwein).
Eπιτηδες εχω βαλει μεγαλυτερη ακριβεια αλλα τα κοινα δεκαδικα ψηφια ειναι μεχρις εκει που δειχνει ο δεικτης του ποντικιου τα υπολοιπα τα κανεις ΒΑΝ! ασχετα αν στη δεκατη φωτο βγαινουν περισσοτερα.
->2)<- Για δικη σου εξυπηρετηση δεν ειναι αναγκη να δινεις στο χρηστη επιλογη (αν προτιμησεις καποια απο τις μεθοδους Ramanujan, Chudnovsky) να δινει οσα δεκαδικα ψηφια θελει.
Απλα θα εχει ενα πτυσσομενο μενου οπου θα διαλεγει 1Μ, 2Μ, 4Μ, .... κι αυτοματα το προγραμμα μεσα θα κανει το παιχνιδι.
Αυτο στο προτεινω για να μην πηξεις....
Σε οποιον δεν αρεσει τη βολτα του, :066: δε θα σπασεις εσυ το κεφαλι σου για να βγει το προγραμμα οπως θα το ηθελε ο καθενας εδω μεσα, ας μην το χρησιμοποιησει στην τελικη αναλυση και να παιξει Quake ή να κανει benches με το Sandra Russo LOL... :042:
->3)<- Οσο θα ανεβαζουμε τον πυχη των δεκαδικων ψηφιων με τις μεθοδους Ramanujan, Chudnovsky τοτε θα διορθωνουμε τους τυπους που δωθηκαν και θα υπολογιζουμε τα επομενα σωστα δεκαδικα ψηφια (κατ' εκτιμησιν φυσικα) με καλυτερη ακριβεια.
Αυτη ειναι η φιλοσοφια των prediction-correction μεθοδων (δες στο κεφαλαιο των διαφορικων εξισωσεων του βιβλιου για να παρεις μια γευση).

Just an idea...
Mπορεις εναλλακτικα (αφου θα χρησιμοποιησεις δυο threads τουλαχιστο) το πρωτο να τρεχει τη Ramanujan ενω το δευτερο τη Chudnovsky.
Φυσικα το δευτερο θα τρεχει μπροστα και θα εξαγει συνεχως περισσοτερα δεκαδικα ψηφια αλλα τη συγκριση για το αν το προγραμμα εξηγαγε λαθη θα βασιστεις στη Ramanujan.
Aν μετα την ολοκληρωση του n ορου της Ramanujan τα δεκαδικα ψηφια δε συμφωνουν με αυτα που εχει δωσει το αλλο thread τοτε τζιφος! η Ramanujan πεταξε λαθη!
Βεβαια εσυ θα ξερεις εκ των προτερων οτι για 1Μ δεκαδικα ψηφια η Ramanujan χρειαζεται π.χ.
Ισως αυτη η σκεψη να κανει πιο αργο το προγραμμα στο χρονο αποκρισης αλλα ενδεχεται να σε απαλλαξει απο προγραμματιστικο κοπο εσυ θα το δεις στην πραξη.

MrSeanKon
04-02-2005, 19:54
Η αναδρομικη μεθοδος Bailey

Στο attachment file (ελπιζω να εχεις το WinRAR αλλιως κατεβασε το βρε διαολε ΓΚΡ) :013: θα δεις σε μια μεγαλη φωτο (ανω απο 600 Χ 600) την αναδρομικη αυτη μεθοδο η οποια ειναι κι η ταχυτερη απο ολες.
Προσεξε ξεκιναει (αρχικοποιηση) υπολογιζοντας τις παραμετρους y0 και α0=0.5 ακριβως.
Μετα το y1 ισουται με ενα μακρυναρι οπου ο αριθμητης ειναι το 25 ο δε παρονομαστης εχει εμπλεκομενες κατι παραμετρους α,β οι οποιες υψωνονται στο τετραγωνο και πολλαπλασιαζονται με τον προηγουμενο του y1 δηλαδη το y0.....
Οι παραμετροι α,β ισουνται με α=(2 - 5 / yn-1)^2 και β=(-1 + 5 / yn-1) LOL η εντολη With δε σου θυμισε τα records της Pascal??
Ακολουθως υπολογιζεις το a1 απο τον τυπο που εμπλεκει το y0 αλλα και το a0 που εχεις υπολογισει ηδη και το αντιστρεφεις κι εισαι ΟΚ....
Μονο που η μεθοδος αυτη ειναι ενα αγγουρι Καλαβρεζικο θα λαλησεις στις πραξεις να την κωδικοποιησεις αλλα στη δινω γιατι εχεις λυσσαξει με την ταχυτητα να λοιπον ο,τι το ταχυτερο για το π=3.14159... εκτος κι αν ανακαλυψουμε εμεις καμμια καλυτερη LOL....
Η φωτο εδω

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3990

μας δειχνει το φραγμα της μεθοδου επομενως εχουμε ενα πλεονεκτημα με τις παραπανω μεθοδους:
Μπορουμε με απολυτη ακριβεια να ξερουμε το πληθος των σωστων δεκαδικων ψηφιων ανα βροχο.
Κι αυτο σου το δειχνω εδω LOL με 13 βροχους (ξεκιναει απο το μηδεν η αριθμηση) υπολογιζεται το π με ακριβεια 333 εκατομμυριων δεκαδικων ψηφιων! και LOL στο n=14 πεταξε underflow το προγραμμα LOL δεν παει παραπανω LOL ας ελπισουμε η νεωτερη εκδοση να δωσει κι αλλο γκαζι!

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=3991

Με 10 βροχους υπολογιζεις κατι παραπανω απο 1Μ δεκαδικα ψηφια ενω με 9 τουλαχιστον 512Κ.
Noμιζω οτι η υπεροχη σε ταχυτητα της μεθοδου αυτης ειναι κατι παραπανω απο εμφανης (vs Borwein).

Συνεπως αν θες σωνει και καλα ταχυτητα μια ειναι η μεθοδος οπου θα αφηνει τα λαστιχα κατω στην ασφαλτο: Η μεθοδος Bailey με κοστος προγραμματιστικο.....
Παντως θα στο ξαναπω κι εδω το προγραμμα (εγω δηλαδη) το θελω να ειναι ευαισθητο κι οχι γρηγορο....
Σε αυτο διαφωνουμε ομως θα βρεθει κι η χρυση τομη.....
Καλη συνεχεια! :)

DarthMoul
05-02-2005, 14:57
Έτοιμο. Δοκιμάστε το να δούμε πως δουλεύει σε εσάς. Αν σας ζητήσει κάποια βιβλιοθήκη, πείτε μου ποια είναι για να την ανεβάσω και αυτή. Τρέχει με:

C:\>cputester 20

Για το 1Μ. Για τα 32Μ βάλτε 25. Με την παράμετρο -p φτιάχνει το αρχείο CPUPI.DAT που έχει το ίδιο format με το PI.DAT του super-pi.
Υπάρχουν και τα sources για όποιον τα θέλει.

Όσοι έχουν P4 ή SMP σύστημα, καλύτερα να έχουν ανοιχτό και τον task manager για να επιβεβαιώσουν ότι δουλεύουν και τα 2 threads.

ΥΓ. Οι βιβλιοθήκες πρέπει να γίνουν copy σε κάποιο directory που ανήκει στο path

emnezia
05-02-2005, 17:15
Ζητάει το ένα dll αρχείο το cygwin1.dll

*****
Το βρήκα εδώ http://www.macrotex.net/dvii/cygwin1.dll
αλλά τώρα πετάει
"The procedure entry point_fopen64 could not be located in the dynamic link library cygwin1.dll"

DarthMoul
05-02-2005, 19:57
Ζητάει το ένα dll αρχείο το cygwin1.dll

*****
Το βρήκα εδώ http://www.macrotex.net/dvii/cygwin1.dll
αλλά τώρα πετάει
"The procedure entry point_fopen64 could not be located in the dynamic link library cygwin1.dll"
Μάλλον δεν κατέβασες την σωστή έκδοση. Δοκίμασε με την δικιά μου και πες μας τι έγινε.

MrSeanKon
05-02-2005, 20:04
Εmnezia :065: θα σου στειλω την Katsumi να σε κραξει :108: γιατι μου φαινεται το εριξες στο κοπροσκυλιο....
Εχει δικιο ο DarthMoul λειτουργει μια χαρα το προγραμμα του.....
Wake up... :042:

DarthMoul
05-02-2005, 20:36
Η ανάπτυξη του project θα παγώσει για λίγο καιρό. Εδώ είναι τα sources για όσους ενδιαφέρονται. Για να κάνετε compile στο linux θα χρειαστεί η GMP που μπορείτε να κατεβάσετε από εδώ: http://www.swox.com/gmp/
Για τα windows θα χρειαστεί η cygwin και η gmp. Η buildin GMP που έχει η cygwin καθώς και κάποιες διανομές του linux χτυπάει για πολύ μεγάλους υπολογισμούς. Για να αποφύγετε το πρόβλημα θα πρέπει να γίνει compile με την παράμετρο --disable-alloca.

Από όσους κάνουν τον κόπο να δοκιμάσουν το πρόγραμμα περιμένω feedback σε αυτό το thread.

MrSeanKon
06-02-2005, 01:18
Θελω να ξεκαθαρισω εδω οτι το προγραμμα υπολογιζει και παραπανω απο το 1Μ δεκαδικα ψηφια.
Δειτε τον πινακα που ειχα δωσει πριν για τη μεθοδο Borwein (35ο ποστ δευτερη σελιδα).
Αν και ποσταρα σε αλλο thread αποτελεσματα γιατι εκανα μια συγκριση τεσπα δε σημαινει κατι.
Θα τρεξω σημερα στα 32Μ και τα 64Μ αν με αφηνει η μνημη.
Παντως DarthMoul το προγραμμα βλεπω οτι κανει ενα μικρο switching στο ποσο της μνημης που χρησιμοποιει...
Καλη φαση. ;)
Για να δω ποσο κανει στα 32Μ.... :041:

DarthMoul
06-02-2005, 01:25
Η GMP είναι η κορυφαία γενικής χρήσης arbitrary precision βιβλιοθήκη που υπάρχει. Και από τις opensource και από τις proprietary. Και το πρόγραμμα μπορεί να είναι πρόχειρο, αλλά τις σημαντικές λεπτομέριες όπως την μνήμη τις πρόσεξα.

MrSeanKon
06-02-2005, 01:27
Darth αν βρει λαθη στους υπολογισμους τι μυνημα σου βγαζει???
Απο περιεργεια ρωταω γιατι μπορει να μην κανει κατι τετοιο και να δω μπλε οθονη....
Ειμαι ετοιμος να του σκισω τα ραμματα.... :044:
Ο.τι πεις ειμαι μεσα! :006:

Υ.Γ.
Δε με ενδιαφερει το κυριλε.
Τη δουλεια του να κανει.

DarthMoul
06-02-2005, 01:32
Στο Comparing θα βγάλει failed αν δεν ταιριάζει ο υπολογισμός του ενός thread με το άλλο. Συγκρίνει όλα τα ψηφία

MrSeanKon
06-02-2005, 01:48
ΟΚ περιμενε αυριο εδω τα πρωτα κρασαρισματα.... :077:
Ελπιζω να κανω capture.... :077:

DarthMoul
06-02-2005, 01:55
Το πιθανότερο είναι να μην κρασσάρεις εντελώς. Απλά θα πάρεις failed στο comparing. Δεν προσπαθώ να κρεμάσω το σύστημα. Το αντίθετο. Θέλω να το κρατήσω όρθιο ακόμα και όταν οι επεξεργασίες που κάνει είναι λανθασμένες λόγω O/C. Δύσκολο μεν και ανέφικτο τις περισσότετρες φορές αλλά αυτό προσπαθώ.

MrSeanKon
06-02-2005, 02:03
Εμ αυτος εισαι.....
Για αυτο στο λεω και δημοσια.....
Εμπιστευομαι περισσοτερο εσενα παρα κατι τετοια προγραμματα...
Ασχετα αν του Ρωσσου με διευκολυνει σε ειδικες περιπτωσεις για τη γρηγορη χαρτογραφηση.
Παρε ματι το Mathematica.....
Η και το Maple.....
Πανακριβα προγραμματα κατεξοχην για τετοιους πολυπλοκους υπολογισμους....
Σπανια εχω δει μπλε οθονη απο αυτα....
Ειδικα στο Maple το μονο που κολλαει ειναι η Java πεταει ενα προειδοποιητικο μυνημα.....
Στο Mathematica ο εξτρα πυρηνας του κανει αυτα....
Οποτε σου μυριζει οτι κατι βρωμαει....
Βεβαια εχει τυχει καποιες φορες να δω και λαθη ειδικα σε Pade ρουτινες οπου κανουν εντονο switching με τη μνημη.
Ψαχνεις δηλαδη ρητες=κλασματικες συναρτησεις να τις βελτιστοποιησεις....
Βεβαια τοτε υπευθυνες ηταν οι μνημες για τα εσφαλμενα αποτελεσματα αλλα οσο και πιωμενος να ημουν φαινοταν οτι κατι υπολογιστηκε λαθος....

DarthMoul
06-02-2005, 02:16
Υπάρχει συγκεκριμένος λόγος που κάτι σκ@τοπρογράμματα σαν το super-pi και το prime κρασσάρουν εύκολα. Αντί να πέρνουν μνήμη από το heap, κλέβουν από το stack γιατί έτσι κερδίζεις σε χρόνο εώς και 15%. Μόνο που αυτό είναι πολύ επικίνδυνο να σε κρεμμάσει ακόμα και χωρίς oc. Σε oc καταστάσεις, ένα λάθος στο Stack Pointer στα φέρνει όλα κάτω. Blue screen στα windows, segfault στο linux λόγω stack overflow/underflow. Αυτό κάνει και η GMP αλλά την υποχρέωσα να το παρακάμψει και να δουλέψει με το heap. Έχασα κάπου 7% σε χρόνο αλλά το πρόγραμμα έγινε rock stable σε βαθύτερους υπολογισμούς. Δεν ξέρω πόσο αντέχει. Στα 128M πάντως άντεξε. Δουλεύωντας με το heap αντί με το stack, ακόμα και αν "χαλάσει" κάτι λόγω o/c θα πάρεις failed στον υπολογισμό ή το πολύ ένα General Protection Fault στο πρόγραμμα. Δεν θα κρεμάσσει το Σύμπαν με blue screens κλπ. Όχι ότι δεν υπάρχει πιθανότητα για blue screen αλλά την ελαττώνω έτσι πάρα πολύ.

MrSeanKon
06-02-2005, 19:14
Αν και δεν ειμαι ο δημιουργος του προγραμματος αυτου για να μην υπαρχουν αποριες και τα ρεστα στο thread με τα on line manuals των O/c Tools εκανα ενα post με καποιες οδηγιες χρησης του προγραμματος αυτου και φυσικα ανεβασα το προγραμμα σε link του Pathfinder για να το κατεβαζουν αμεσα οσοι χρηστες το επιθυμουν.
Παμε παρακατω.....
DarthMoul εδωσες αρκετα χρησιμα στοιχεια για τη μεθοδολογια που ακολουθεις κι εκτελειται το προγραμμα...
ΟΚ μεχρις εδω κι ανταλλαξαμε τα υ2υ ειδες οτι εμεινα ικανοποιημενος.
Ομως το προγραμμα οπως θα ειδες στα on line manuals κολλησε στα 2550MHz.....
Aκολουθως ετρεξα Maple για μιση ωρα στην ιδια συχνοτητα και δεν ειχε πεταξει λαθη....
Φυσικα επειδη επρεπε να ΖΖΖ το σταματησα κι εσβησα τον Η/Υ....
Ενας λοιπον χρηστης ο οποιος δε χρησιμοποιει τετοια προγραμματα (το 99% δηλαδη του forum) θα το βρει αχρηστο και δε θα ξανασχοληθει μαζι του....
Προφανως δεν εφτιαξες ενα προγραμμα μονο για εμενα.....
Γιατι στα 2540MHz ειμαι stable με τον CPU Stability Tester θες να το βαλουμε και 2530?? no problem.....
Αντε ομως να τρεξει συμπιεση βιντεο εκει....
Θα κολλησει μετα απο μερικες ωρες.....
Γιαυτο στο αλλο thread σου εδωσα την μακρια ανισωση για να καταλαβεις ποσο εις βαθος εχω ψαξει κι εχω μελετησει το συστημα μου....
Εσυ ουδεποτε θα δεις τα μυνηματα που ποσταρα αφου δεν κανεις o/c......
Συνεπως μηπως θα πρεπει να αλλαξεις τον κωδικα στην επερχομενη εκδοση??
Και να γινει κι αυτο σκα*οπρογραμμα δηλαδη να χρησιμοποιει αυτο που εσυ πριν απερριψες για να ειναι οσο γινεται rock stable σε μπλε οθονες......
Οχι αυριο το πρωι ας relax και λιγο δε θα καταθεσουμε την ψυχη μας στο προγραμμα αυτο κι ειδικοτερα εσυ....
Δε γινεται DarthMoul να τρεχω μονο Maple, Mathematica στα MHz που ειναι stable και τα δυο τους βαζω μικροτερη συχνοτητα για να περνανε και τα υπολοιπα προγραμματα το σκοπελο...
Ουτε μπορει καθε χρηστης να τρεξει τετοια πακετα που ειναι καλογραμμενα και να μην παιζει παιχνιδια (η συντριπτικη πλειοψηφια του forum)....
Αναθεμα να ξερουμε τι κωδικα εχει γραψει ο κατασκευαστης του Quake ομως το παιχνιδι θα κολλησει αν θα το δοκιμαζα στο MSF που θα δωσει ο CPU Stability Tester.
Επομενως προτεινω να μην ασχοληθεις με πιο ειδικευμενες μεθοδους που θα δωσουν ταχυτερους υπολογισμους αλλα να δεις πως μπορεις να κανεις το προγραμμα περισσοτερο χρησιμο για χρηστες εκτος απο εμενα κι εσενα.
Αλλιως θα ειναι παντελως αχρηστο για αυτους.
ΟΚ ασε εμενα εγω παντα θα το τρεχω και θα κατεβαζω τις νεωτερες εκδοσεις εχω αλλη αντιληψη και την ξερεις....
Σου ειχα δωσει και ενα κωδικα τις προαλλες....
Εκει βασιζεται ο CPU Stretcher που εχω φτιαξει (οχι ακριβως αλλα ειναι η βαση του)....
Σε πληροφορω οτι τρεχοντας τον στα 2520MHz με Highest Priority στις 3.5 ωρες εφαγε αποτομο restart το συστημα η δε θερμοκρασια του ηταν 2 βαθμοι παραπανω απο αυτη του CPU Stability Tester....
Δε νομιζω να εχω γραψει σκα*οκωδικα για να κρεμαω επιτηδες το συστημα αλλα μεχρι στιγμης ειναι πιο ευαισθητος απο τον CPU Stability Tester....
Επισης οταν θα αρχισει το προγραμμα να οριστικοποιειται μπορω να φτιαξω ενα δικο μου Windows shell και να τρεχει μεσα απο τα O/c Tools το προγραμμα χωρις να δινει παραμετρους ο χρηστης κλπ.....
Αυτη ειναι μια εναλλακτικη λυση αν δε μπορεσω να βγαλω ακρη με τον κωδικα που θα μου δωσεις.......
Μην κοιτας λοιπον το δεντρο=εγω αλλα το δασος=τους χρηστες του forum. :)

circular
06-02-2005, 20:51
SeanKon και DarthMoul, είναι λογικό ο καθένας να βάζει τις δικές του προτεραιότητες ( ο μεν να κολλάει το σύστημα όσο πιο εύκολα γίνεται και ο δε να τρέχει παρά τις αντιξοότητες ακόμα και αν τα αποτελέσματα που θα βγούν είναι σκουπίδια). Δεδομένου ότι ονομάζεται CPU Stability Tester θεωρητικά θα έπρεπε να προτιμάμε την πρώτη προσέγιση. Ωστόσο έχω την εντύπωση ότι αν δε χρησιμοποιηθεί heap αλλά stack όπως κάνουν διάφορα προγράμματα τότε το πακέτο δεν το τρώει αποκλειστικά ο επεξεργαστής, οπότε δεν ξέρω κατά πόσον η σταθερότητα που θα 'μετρηθεί' τελικά είναι της CPU. Παράλληλα υπάρχει και το ενδεχόμενο η χρήση του stack να δημιουργεί τέτοια επικινδυνότητα που να μην το χρησιμοποιεί κανείς φοβούμενος τι θα συμβεί αν όντως αποτύχει ο υπολογισμός. Η λύση θα μπορούσε να είναι να δοκιμάσουμε την ευαισθησία της εφαρμογής και με τους 2 τρόπους, δηλαδή με την απείραχτη GMP ΚΑΙ με την modded. Αν στο μέλλον βρεθεί χρόνος και δεν έχουμε καταλήξει ακόμα στο ποια εκδοχή θα πρέπει να χρησιμοποιήσουμε τότε έχουμε και τη δυνατότητα να δοκιμάσουμε απλά κάποιον άλλο αλγόριθμο.

MrSeanKon
06-02-2005, 20:59
ΟΚ Κωστα αλλα οπως βλεπεις το π=3.14 υπολογιζεται ειτε με αναδρομικες μεθοδους (τωρινη του Borwein κι η πιο δυσκολη του Bailey) ειτε με δυναμοσειρες (Ramanujan, Chudnovsky).
Aλλες μεθοδοι τζιφος δεν υπαρχουν παλι δυναμοσειρες ειναι αρα Αλεκος....
Επομενως εκει που νομιζω να γινει παιχνιδι ειναι στις ρουτινες (χωρις να ειμαι προγραμματιστης oπως ο Darth) αλλα προσπαθω να σας προσεγγιζω και να δωσω τη δικη μου αποψη περι χρησιμοτητας ή οχι του δεδομενου προγραμματος.
Τωρα με αυτο που λες περι stack χρησης ωστε να γινει περισσοτερο ευαισθητο κι ισως να μην ευθυνεται αποκλειστικα η CPU αλλα κι αλλες παραμετροι ενας ως overclocker δεν ενδιαφερεται.
Αν δε θα ξερει τι φταιει ακριβως βαζει διαιρετη στις μνημες κι επαναλαμβανει το τρεξιμο υπαρχουν ακρες τις εχω αναλυσει αλλου κι εχουν ειπωθει κατα κορον σε τοσα αλλα threads.
Γιατι οταν θα δεις τα ζορια στο Quake π.χ. τοτε παιζουν μεσα και η μνημη αλλα κι ο επεξεργαστης ή κι ο συνδυασμος των ανωτερω.
Απλα αυτο που βλεπω ειναι το ονομα.....
Οκ μπορει να αλλαξει και να ειναι System Stability δεν κολλαμε εκει....
Ομως σε ενα σταθερο συστημα ακομη και τα προγραμματα τυπου Prime95 δεν κολλανε.
Στις οδηγιες που σας εδειξα αντιλαμβανεσθε οτι ο υπευθυνος για το λαθος ηταν ο επεξεργαστης.

DarthMoul
06-02-2005, 21:03
Εγώ αυτό που δεν μπορώ να καταλάβω είναι τι μας χρειάζεται ένα ακόμα σκ@τοπρόγραμμα. Αφού το prime και το super-pi δείχνουν μεγαλύτερη ευαισθησία, μπορείς να χρησιμοποιήσεις αυτά. Εγώ θα γράψω τον κώδικα που ξέρω να γράφω, και νομίζω πως η ποιότητα του είναι καλή. Το γεγονός ότι πλησίασα σε σταθερότητα τόσο κοντά στο Mathematica και το Mapple με αφήνει απόλυτα ικανοποιημένο :) Αφού γλύτωσες και την μπλέ οθόνη σε τέτοια επίπεδα νομίζω πως είναι καλά!

Το γεγονός ότι ένα πρόγραμμα σε κάποιο επίπεδο κολλάει δεν οφείλεται αποκλειστικά στο ίδιο. Μην ξεχνάς πως τρέχει πάνω σε ένα layer που ονομάζεται λειτουργικό. Εγώ έτρεξα μια χαρά τα 128M σε linux 64 bits, αλλά ο ίδιος κώδικας σε εσένα κόλλησε στα 8Μ με winblows 32 bits. Άρα λάβε υπόψη ότι αυτό που εσύ ονομάζεις ευαίσθητο κώδικα ίσως τελικά να είναι ηλίθιο λειτουργικό.

Στην τελική είναι καθαρά προσωπικό θέμα του χρήστη τι software επιλέγει να τρέξει. Αν θέλει να τρέξει quake, ο cpu tester δεν του κάνει. Αν θέλει να τρέξει Mathematica μάλλον του κάνει. Άρα το ερώτημα είναι σε ποιόν χρήστη απευθύνεσαι. Μόλις το απαντήσεις, θα δεις και τι πρέπει να κάνεις.

Ο κώδικας του tester, αν αλλάξει, θα αλλάξει προς το καλύτερο. Δηλαδή θα προσπαθήσω, αν γίνεται, να φτάσω σε ταχύτητα και σταθερότητα το Mathematica και όχι το quake. Είτε μας αρέσει, είτε όχι, οι ουσιαστικές διαφορές μεταξύ όλων των πραγμάτων είναι ποιοτικές. Άρα όταν πρόκειτε να αλλάξει κάτι, οφείλει να εξελιχθεί προς το ποιοτικά ανώτερο του γιατί το αντίθετο θα ήταν άδικο έτσι δεν είναι;

Τελειώνοντας το post, ένα σχόλιο για τον stretcher που έχεις φτιάξει. Δεν υπάρχει προγραμματιστής που να ξυπνάει το πρωί και να λέει "Σήμερα θα γράψω 273 γραμμές σκ@τοκώδικα". Μπορείς να γράψεις πολύ όμορφο, ευανάγνωστο και τεκμηριωμένο κώδικα αλλά να έχει τα μαύρα του τα χάλια. Ο κακός κώδικας είναι αποτέλεσμα άγνοιας και όχι πρόθεσης. Αν θέλεις μπορούμε να κάνουμε και μια δοκιμή. Να ξαναγράψω εγώ τον stretcher και να δούμε ποιά έκδοση αντέχει περισσότερο. Αυτό δεν σημαίνει ότι ο κώδικας σου είναι κακός. Μπορεί όμως να υπάρχει και καλύτερη εκδοχή που να παράγει το ίδιο αποτέλεσμα εξίσου γρήγορα χωρίς να πηγαίνει την μηχανή και το λειτουργικό στο όριο.

MrSeanKon
06-02-2005, 21:13
Τωρα διαβαζοντας τις αποψεις σου Darth καθε αλλο παρα μπερδευτηκα μεν αλλα και πηρα καποιες απαντησεις.....
Ετσι οπως θετεις το θεμα ειναι σα να μας λες οτι το προγραμμα αυτο ειναι κατι το διαφορετικο κι απευθυνεται σε ατομα που κανουν μια χρηση αναλογων πακετων (οπως εγω για παραδειγμα)....
Οσο για τον Stretcher ειναι οντως λιγο Katsumoκωδικας :106: αλλα οπως μπορεις να δεις στο thread του με εξυπηρετει.
Κι οχι μονο εμενα αλλα και τον ΔασκαλοΝερουλα=ΚΤΜ :082: emnezia κι αλλους.....
Αποσκοπει σε αλλη χρηση το προγραμμα αυτο. ;)

Συνεπως αν καταλαβα καλα θες να πεις οτι το συγκεκριμενο προγραμμα θα απευθυνεται σε λιγους?
Οπως και το PcBench?? :confused:
Eγω φιλε μου μεσα ειμαι no problem.
Μπορω φυσικα οταν προχωρησει κι αλλο η εκδοση να αλλαξω τις οδηγιες και να το αναφερω ρητα.
Μη νομιζεις οτι μου αρεσει να κανω συμπιεσεις βιντεο με την ψυχη στην κουλουρη....
Γιαυτο αγαπαω τα Maple, Mathematica κι εσυ την Oracle.... :006:
Kαι χαιρομαι να τα τρεχω 24 ωρες στα 2550MHz χωρις να βλεπω τη Java και τον kernel τους να γκρινιαζουν.....
Φυσικα καλως ειπες οντως παιζει και το λειτουργικο συστημα ενα σημαντικο ρολο.
Μακαρι να ειχα κι εγω Linux για να δοκιμαζα κι εκει να βρω τις διαφορες στα MSF.

DarthMoul
06-02-2005, 21:21
Αν δεις ότι υπάρχει ανάγκη να κάνουμε κάποια προσθήκη στο πρόγραμμα θα προσπαθήσουμε να την κάνουμε. Ήδη έχεις αναφέρει μία. Να βάλουμε ένα pause στην αρχή για να μπορείς να αλλάζεις το priority στα windows. Πάντως ότι δοκιμές γίνουν και από όποιους γίνουν καλό θα ήταν να αναφερθούν εδώ. Είναι πολύ χρήσιμο να ξέρω ότι τα windows κρασσάτουν στα 64M όταν το linux πάει στα 128M για πλάκα. Ή ότι ο δικός μου κώδικας κρασσάρει σε κάποιο επίπεδο που το Mathematica δουλεύει κανονικά παρόλο που και οι δύο χρησιμοποιούμε την GMP.

MrSeanKon
06-02-2005, 21:30
Mια αλλη προσθηκη που θα ηθελα ειναι η εξης:
Να μπορεις να επαναλαβεις την εκτελεση οσες φορες θελεις.
Θα μου πεις φτιαξε ενα αρχειο *.bat στο DOS ε ΟΚ θα σου πει ο αλλος βαριεμαι....
Δηλαδη οπως στο MSDOS shell δινεις C:>cputester 20 κι υπολογιζει το 1Μ να υπαρχει και μια εξτρα παραμετρος οπου να κανει τις επαναληψεις εκτελεσης.
Εννοω C:>cputester 20 10 αρα δεκα φορες θα το εκτελεσεις.
Και καθε φορα να γινεται update στον συνολικο χρονο.
Θα μου πεις οτι μπορω να φτιαξω εγω το κελυφος στην Builder και να εκτελειται αυτοματα αυτο.
ΟΚ δεκτο αλλα θα επιθυμουσα να γινεται ετσι.
Ελπιζω να παω σε ενα πισι καποιου φιλου που εχει 1GB μνημης και να τρεξω εκει για 64Μ το προγραμμα.
Αληθεια εσυ τα 128Μ που ετρεξες στο Linux ποση μνημη εχει το PC σου?
Πιστευω να ειδες στις οδηγιες περι πολλαπλων αντιγραφων του CPU Tester.
Αν σωνει και καλα @@ριζονται τα ΧΡ στα 64Μ ενω εχεις μπολικη μνημη μπορεις να τρεξεις δυο ή και τρια αντιγραφα με 32Μ.
Κι αυτο μπορει να γινει μεσω Builder.
Στο μελλον θα κανω μια πιο ειδικευμενη κοντρα σοβαρων πακετων (Maple, Mathematica) vs CPU Tester αλλα θα μου παρει καμποσες ημερες.

Συμπερασμα κι ερωτηση:
Το προγραμμα αυτο θα απευθυνεται σε λιγους? :047:
Εγω σου ειπα δεν εχω προβλημα. :)

DarthMoul
06-02-2005, 21:48
Ok...Αυτά που ζητάς είναι εύκολα. Ίσως το επόμενο σαββατοκύριακο να έχουμε την έκδοση 0.3.
Εγώ έχω 2 G RAM + 4 G swap partition. Σύνολο 6 G Virtual. Στα 128Μ το πρόγραμμα χρειάστηκε 1.9 G. Δηλαδή δούλευα οριακά μέσα στην RAM.

Κάθε πρόγραμμα απευθύνεται σε όσους μπορεί να λύσει το πρόβλημα. Εσύ σε ποιούς απευθύνεσαι; Αν θέλεις να απευθυνθείς σε όλους, μάλλον χρειάζεσαι δύο προγράμματα. Ίσως και περισσότερα. Αλλά νομίζω πως αυτά υπάρχουν ήδη.

MrSeanKon
07-02-2005, 00:55
Oντως κι υπαρχουν αυτα τα προγραμματα (Prime95 κλπ)....
Στο ευρυ κοινο του forum αναφερθηκα Darth.....
Χμ να μια καλη ιδεα να σου μελετησω τον κωδικα και να βγαλω εξτρα εκδοση στο μελλον (αρκει να εχω ορεξη) :040:
Αν το καταφερω θα γινει πολυ ΨΨΨκωδικας... :044:

Tελικως ενεργοποιησα το swap file κι εβαλα τη μεγιστη τιμη που μπορει να δεχθει ανα partition δηλαδη τα 4GB.
Εκει λοιπον που δεν ετρεχε τα 8Μ (512ΜΒ μνημη ΒΑΝ το swap file) ετρεξε για 10 λεπτα περιπου τα 64Μ.
Επειδη ο CPU Stretcher ειχε κολλησει στα 2518ΜΗz δεν ανεβασα ξανα το FSB και δοκιμασα στην ιδια συχνοτητα τα 64Μ...
Μετα απο δεκα λεπτα αποτομο restart το συστημα χωρις προειδοποιητικα μυνηματα συνηθες φαινομενο καποιες φορες....
ΓΙΟΥΠΙ! :044: :044:
Χαρηκα για πρωτη φορα!
Ποιος o/cer χαιρεται οταν κολλαει το συστημα του? :050:
Μονον εγω!
Οπως ξερεις DarthMoul ;) size does matter (π.χ. Lex) :116: :042: κι εδω φανηκε οτι τα 8Μ κρασαραν το συστημα στα 2550MHz αλλα τα 64Μ στα 2518...
Στη φωτο που σου δειχνω βρηκα ενα λαθακι...
Πανω απο 30 βροχους (31, 32 κλπ) το προγραμμα πεταει λαθη.....
Διορθωσε τα στην επομενη εκδοση...
Οπως βλεπεις μπορεις να βασιστεις πληρως πανω μου ειμαι ο top AMD beta tester... :039:
Εκανα και την εξης παλαβομαρα:
Μια κι εχω 3 παρτισιονς εβαλα απο 4 γιγα swap file στο καθενα αλλα και παλι τα 512Μ δεκαδικα ψηφια δεν ετρεξαν :013: ....
Πεταξε το γνωστο μυνημα με τη stack...
Eπομενως αν μπορεις να μελετησεις την ενδεχομενη επεκταση του προγραμματος και για 1G ψηφια κ.ο.κ...
Εγω παντως χαρηκα...
Ηδη 20 λεπτα ετρεχε συνεχως το initial problem στα 256Μ με 4 γιγα swap file.
Ελπιζω οταν επιστρεψω να μην εχει πεταξει το μυνημα η stack.
Eνα αλλο που θελω να διορθωσεις ειναι να μη φαινεται το 1048756 digits αλλα 1Μ ψηφια κ.ο.κ.
Οπως εχουμε συνηθισει να βλεπουμε δε χρειαζεται να φαινεται το μακρυναρι 268435456 προτιμω το 256Μ....

DarthMoul
07-02-2005, 01:09
Ωραία. Μου βρήκες και τα bugs. Οι long στα 32 bit συστήματα είναι 32 bits. Έτσι θα είναι και στα win64. Αντίθετα στο linux64 οι longs είναι 64 bits. Άρα σε windows ο μέγιστος αριθμός ψηφίων που μπορείς να έχεις είναι 2^32. Σε linux αντίστοιχα θα είναι 2^64. Αν αλλάξω τον counter σε long long, θα πάνε και τα windows σε 2^64 ψηφία. Μέχρι τότε να παίζεις μέχρι 31 βρόγχους το πολύ. Από εκεί και πάνω δεν είναι ασφαλές, οκ;
Δεύτερον, να ξέρεις πως όσα swap και να ανοίξεις, τα windows θα δουν το πολύ 4G. Τα υπόλοιπα θα τα αγνοήσουν. Αν θέλεις να δεις παραπάνω θα πρέπει να βάλεις win64 ή linux64.

MrSeanKon
07-02-2005, 01:23
Tο ειχα ψυλιαστει τι επαιζε με τα δεκαδικα ψηφια.
Oποτε μπορεις να κανεις κι εσυ τις δοκιμες σου με μεγαλυτερα swap files και να βαλεις μαξιμουμ 31 στους βροχους.
ΟΚ θα ειναι τοσα πολλα δεκαδικα ψηφια αν καποτε αποκτησουμε 1ΤΒ μνημης τοτε θα τρεχουμε πολλαπλα αντιγραφα και that's all.
Οσο για το swap file δεν προκειται να βαλω beta Win64 για να γινει μεγαλυτερο το swap file στο μελλον βλεπουμε.
Παντως οπως βλεπεις οσο παει και βαραινει το προγραμμα τωρα ειμαι εκτος σπιτιου και δεν ξερω τι εχει γινει.
Aυριο θα εχεις τα αποτελεσματα... :040:
Αυτο με τα πολλαπλα swap files καλα εκανες και το ειπες οντως ειχα μια λανθασμενη αποψη τα @@ροXP ελεγαν total swap files size = 12GB.... :013:
Tελικα βλεπεις οτι οσο παει και βαραινει το προγραμμα....
Θετικο αυτο....
Οσο για την ταχυτητα στους υπολογισμους διολου με απασχολει γιατι ξερεις οτι οι εφαρμογες που τρεχω ειναι ανω των 8 ωρων ειτε ειναι βιντεο ειτε Μaths.
Αρα οταν βαλεις και τις επιλογες για πολλαπλες εκτελεσεις, κοψεις το μακρυναρι το προγραμμα θα ειναι μια χαρα....
Αυτο που μενει ειναι να δω που θα βρει τοιχο το συστημα μου με τα 256Μ ψηφια.
Μακαρι να μην πεταχτει το stack error....
Αλλιως τα 128Μ δεν θα τα εχει προβλημα....
Στην περιπτωση αυτη θα δοκιμασω διπλο 128Μ....
Και μετα συγκριση με το Prime95....
Συνεπως θα λαβεις κι εσυ μια ολοκληρωμενη εικονα τι παιζει σε AMD.
Περιμενω απο τον emnezia να διαβασει τα post και να πραξει αναλογα και σε Intel.

DarthMoul
07-02-2005, 01:35
Αφού έχεις 32 bits λειτουργικό η μέγιστη μνήμη που μπορείς να έχεις είναι 2^32 bytes = 4G. Με αυτό το μέγεθος θα τρέξεις το πολύ 256M. Ίσως τελικά και να μην τα τρέξεις γιατί το πρόγραμμα δεν τρέχει μόνο του. Υπάρχει και το λειτουργικό που τρώει πολύ μνήμη. Στην έκδοση 0.3 θα φτιάξουμε αυτά που είπες, και στην 0.4 θα αναπτύξουμε και δεύτερο αλγόριθμο πιο γρήγορο από αυτόν που έχουμε για να μην περιμένεις με τις ώρες.

MrSeanKon
07-02-2005, 01:42
στην 0.4 θα αναπτύξουμε και δεύτερο αλγόριθμο πιο γρήγορο από αυτόν που έχουμε για να μην περιμένεις με τις ώρες.

Ακομη και σε μισο δευτερολεπτο να ολοκληρωνει το 1Μ εγω θα βαζω τουλαχιστον πολυ περισσοτερες φορες να το ξανακανει!
Ειπαμε το κεφαλι μου θελω να μεινει στη θεση του...
Χμ μια καλη συγκριση που θα γινει ειναι η εξης:
Θα κρατησω την εκδοση 0.3 για να συγκρινω τα MSF της με αυτα της 0.4 που θα κανει γρηγοροτερους υπολογισμους.
Για να φανει κι αν αλλαζοντας τον κωδικα προς τα που πηγαινει η ευαισθησια προς το καλυτερο ή προς το χειροτερο? :confused:
Αν και δε νομιζω οτι θα ειναι η τελικη η 0.4 θα παει πιο μακρυα...
Εχουμε Karatsuba μεσα πιο μετα FFT Chudnovsky ισως Bailey....
Εκ πρωτης οψεως πως σου φαινεται η μεθοδος Βailey??
Πιο ευκολο ειναι να γραψεις κωδικα για δυναμοσειρες ή για αναδρομικες σχεσεις?

DarthMoul
07-02-2005, 01:48
Η 0.4 θα έχει και τους δύο αλγόριθμους και θα τρέχεις όποιον θέλεις. Δεν έχω μελετήσει ακόμα τον Bailey. Είναι πιο γρήγορος από τον Chudnovsky?
Οι αναδρομικοί αλγόριθμοι για τόσο μεγάλους υπολογισμούς θα χρειαστούν δικό τους stack ανεξάρτητο από αυτό του λειτουργικού γιατί αλλιώς θα έχουμε overflow πολύ νωρίς. Και η κατασκευή τους είναι μανίκι. Θα δούμε.

MrSeanKon
07-02-2005, 01:57
:017:
Αυτο θα φανει στην πραξη Darth...
H μεθοδος Bailey οπως μπορεις να δεις στην προηγουμενη σελιδα βρισκει το π=3.14 με 13 βροχους μονο με 333 εκατομμυρια δεκαδικα ψηφια τουλαχιστον...
Η δε Chudnovsky ειναι αθροισματα ορων....
Πιο απλη στην υλοποιηση της αλλα θελει πολλους ορους για να φθασει τα 333 εκατομμυρια δεκαδικα ψηφια.....
Ισως γιαυτο το λογο που λες περι υπερχειλησης ο Γαλλος στο PiFast χρησιμοποιει την Chudnovsky που οντως υπερτερει της επισης δυναμοσειρας Ramanujan.
Τωρα μεχρι νορμαλ υπολογισμους για να αποφευχθει το overflow που θα γυρει η πλαστιγγα στο Chudnovksy vs Bailey θα απαντηθει στο μελλον.
Oποτε μια σκεψη που εχω να κανω ειναι να μην μπλεξεις με Karatsuba και βελτιστοποιηση στις πραξεις στην εκδοση 0.4....
Να αποφασισουμε τι θα χρησιμοποιηθει οριστικα....
Αναδρομικη ή δυναμοσειρα...
Μαλλον το δευτερο κοβω να γινεται τεσπα θα πειραματιστεις πρωτα μονος θα δωσεις ενα δειγμα να το τρεξω κι εγω και θα ληξει εκει το θεμα.
Μετα παμε σε βελτιστοποιηση των πραξεων.
Τι λες?? :105:

DarthMoul
07-02-2005, 09:12
Για να πάμε σε βελτιστοποίηση των πράξεων, θα πρέπει να αντικαταστήσουμε την GMP με κάτι καλύτερο δικό μας. Το software house που κατασκεύασε το mathematica δεν τόλμησε να δοκιμάσει τέτοιο εγχείρημα και χρησιμοποίησε την GMP αυτούσια. Εγώ προτείνω να βγάλουμε την 0.3 και μετά με το πάσο μας. Θέλω χρόνο για να μελετήσω τους αλγόριθμους στο χαρτί και να φτιάξω demobench που να κοντράρουν μεταξύ τους. Πολλές φορές ο γρηγοτερος στο χαρτί, είναι αργός στην μηχανή γιατί δεν επιτρέπει μεγάλης έκτασης παραλληλισμούς.

Και μια παράκληση σε όσους δοκιμάζουν το πρόγραμμα. Αν υπάρχει κανείς με P4, ας κάνει μία δοκιμή με HT enabled και μία με HT disabled και ας ποστάρει εδώ τα αποτέλεσμα. Όσο εσείς καίτε τις CPU σας, εγώ μελετώ άλλα πράγματα.

DarthMoul
07-02-2005, 09:29
Η λύση θα μπορούσε να είναι να δοκιμάσουμε την ευαισθησία της εφαρμογής και με τους 2 τρόπους, δηλαδή με την απείραχτη GMP ΚΑΙ με την modded. Αν στο μέλλον βρεθεί χρόνος και δεν έχουμε καταλήξει ακόμα στο ποια εκδοχή θα πρέπει να χρησιμοποιήσουμε τότε έχουμε και τη δυνατότητα να δοκιμάσουμε απλά κάποιον άλλο αλγόριθμο. Κώστα την έχω κάνει ήδη την δοκιμή. By default η GMP θα κρασσάρει όταν δουλεύει με το stack ακόμα και σε ένα σύστημα σαν το δικό μου που δεν κάνει overclocking και έχει μνήμες ECC και ανά bank, και ανά node και chipkil ταυτόχρονα. Η διαφορά που είδα στο crash μεταξύ linux και win ήταν ότι στο linux έτρωγα crash στα 4M ενώ στα windows στα 512K. Η αιτία είναι ότι το ένα λειτουργικό είναι 32 bits και το άλλο 64 bits. Άρα το linux έχει μεγαλύτερο stack και δουλεύει τους registers σε όλο τους το εύρος οπότε αντέχει σε πιο ψηλά επίπεδα. Αλλά τελικά κρασσάρει και αυτό. Συνεπώς το να δουλέψεις με το heap είναι μονόδρομος πληρώνοντας το κόστος της ταχύτητας.

MrSeanKon
07-02-2005, 22:58
Λοιπον νεωτερα!
Χθες αλλα και σημερα μου βγηκε το λαδι αναποδα....
Τελικα DarthMoul στα ΧΡ ετρεξε το προγραμμα μεχρι και 64Μ δεκαδικα ψηφια.
Αυτα τα δειχνω στο αντιστοιχο on line manual.
Παραπανω δεν παει παραπονιεται το ρημαδι το stack... :093:

Στην πρωτη φωτο φαινεται οτι ετρεξε επιτυχως τα 32Μ στα 2507MHz παραπανω δε δοκιμασα βαριομουνα.
Παντως στα 2518ΜΗz κολλησε ο CPU Stretcher.
H δευτερη φωτο ειναι πολυωρη συμπιεση βιντεο στην ιδια συχνοτητα.
DarthMoul θα ηθελα να κανεις τις εξοδους του προγραμματος λιγο πιο διαφορετικες να ειναι ταξινομημενες οπως στους πινακες ανα στηλες.
Στην τριτη φωτο σου δειχνω ενα υποδειγμα ΟΚ τα νουμερα ειναι υποθετικα.
Στην τεταρτη φαινεται το μεγεθος του swap file μεγιστη τιμη βεβαια λιγο πριν κολλησει διοτι ουτε τα 4 γιγα φαινονται αρκετα.

Παμε παρακατω:
Τελικα ουτε στα 2496MHz ετρεξαν επιτυχως τα 64Μ! :006:
Εκανε αποτομο restart το συστημα στη μιση ωρα περιπου....
2485MHz δε δοκιμασα βαριεμαι αλλο.....
Συνεπως το προγραμμα μας Darth ηδη εξοστρακισε το @@ροSuperPi 32M.....
Ωρα του καλη.... :077:

DarthMoul
07-02-2005, 23:24
Ok..Η έξοδος θα γίνει όπως την θέλεις...Θα προσπαθήσω να βρω χρόνο το επόμενο σαββατοκύριακο να τα φτιάξω όλα μαζί.

MrSeanKon
07-02-2005, 23:34
OK Darth κανενα προβλημα δε δινουμε διαγωνισμο....
Οσο για την κοντρα Chudnovsky vs Borwein που εκανα στο Mathematica η δευτερη μεθοδος ηταν πολυ ταχυτερη σε χρονους.
Φυσικα τη Chudnovsky την εφτιαξα δινοντας εναν απλο τυπο δυναμοσειρας τη δε Borwein σου εχω δειξει πριν πως τη δινω.....
Σκεψου οτι για 12000 ορους στην Chudnovsky εκανε τον τριπλασιο χρονο απο οτι στην αντιστοιχη Borwein και φυσικα τα δεκαδικα ψηφια ηταν πολυ λιγοτερα...
Βεβαια το θεμα ειναι οτι το προγραμμα κανει interpreting των εντολων που δινω οπως η παλια BASIC κι ισως να υπαρξει διαφορα σε αυτο που θα φτιαξεις εσυ.
Συνεπως λεω στην 0.4 να κλεισει οριστικα το ζητημα.
Η θα χρησιμοποιησουμε Borwein και τιποτε αλλο μια και η Bailey ειναι αγγουρι ή Chudnovsky.
Φτιαχνεις ενα μικρο δειγμα να υπολογιζει ας πουμε τα πρωτα 256Κ ψηφια και κοντραρουμε τις δυο μεθοδους στα ισια.....
Και μετα κοιταμε περι βελτιστοποιησης Karatsuba, FFT κλπ....
Οπως εχουν εξελιχθει τα πραγματα θες να σου πω κατι?
Σκασιλα μου!
Κι ετσι να μεινει το προγραμμα με παραβολευει... :098:
Αφου κανω σε μεγαλυτερα FSB βιντεοσυμπιεσεις και Maths τι με νοιαζει τι λενε τα αλλα??

emnezia
08-02-2005, 02:12
Λοιπόν και λίγες δοκιμές σε ένα Intel Northwood.
Το σύστημα τρέχει σε συχνότητα που δεν είναι σταθερό. Το Prime (2πλο ένα σε κάθε επεξεργαστή)πετάει λάθος.
Τρέχοντας το πρόγραμμα στους 25 κύκλους παρατήρησα το εξής:
Αρχικά οι επεξεργαστές δεν δουλεύουν στο 100% αλλά σε μία αναλογία 50% ο ένας και ~70% ο άλλος. (φώτο 1)
Μόλις όμως έβγαλε το πρώτο πέρασμα με το που έβγαλε το μήνυμα Pass 1 Digits : 4
και οι δύο επεξεργαστές ανέβηκαν στο 100%

MrSeanKon
08-02-2005, 02:17
Ο Darth ειπε οτι ανοιγει μεσα δυο threads....
Oμως μια και ξεκιναει το Π.Α.Τ. προφανως δεν ανοιγει εκει δυο....
Ας με διορθωσει....
Οποτε γιαυτο εχεις 50% χρησης....
Μετα που κανει τις συγκρισεις και τους υπολογισμους ολα τρεχουν διπλα για να τσεκαρει τι αποτελεσματα βγαζουν τα δυο ξεχωριστα threads.
Σε τι FSB εισαι τωρα?
Kαι σε τι χρονο κολλαει περιπου το Prime95?
Ελπιζω να ειναι εκει ΟΚ οι μνημες σου ή οχι? :108:
Μια κι εχεις μεγαλο swap file δωσε 64Μ δεν θα κολλησει η stack.
Βεβαια θα αργησει το προγραμμα αλλα αυτο μη σε νοιαζει...
Αυτος ειναι ελεγχος!
Δεν σου προτεινω να βαλεις High Priority γιατι κι εγω που το εκανα μου σκοτισε τα ***** το προγραμμα του Darth γονατιζει τον σκληρο δισκο.

emnezia
08-02-2005, 02:24
το έχω σε 260 fsb (παλιότερα άντεχε αλλά το έχω αποσυντονίσει!). Το prime διπλό πετάει λάθος στα 32 δευτερόλεπτα. Οι μνήμες δεν επηρεάζουν είναι DDR600 μέχρι 300 fsb αντέχουν χωρίς λάθη!
Πάντως το πρόγραμμα γονατίζει το σύστημα! Το έβαλα σε low priority για να κάνω ποστ και σέρνεται τρελά!

MrSeanKon
08-02-2005, 02:30
LOL σκεψου οτι εγω κανω ο πυροβολημενος κανω την εξης πατεντα ;)
Eπειδη το προγραμμα του DarthMoul τραβαει πολλους πορους απο το δισκο αυτο εχει αποτελεσμα καποιες χρονικες στιγμες να πεφτει το ποσοστο χρησης του Η/Υ σε μικροτερο ποσοστο....
Συνεπως κανω testing με τον CPU Stability Tester σε normal priority αλλα σε low priority τρεχει ο CPU Stretcher οποτε δεν τον επηρεαζει οσο ειναι στο 100%...
Οταν πεσει λιγο τοτε πεταγεται αυτος σαν σφην***τσα και μονιμα ειναι στο 100%!
Δε θελω να κανει ΖΖΖ ο Α64! :044:

ΨΟΦΗΣΕ ΤΟ SuperPi 32M!

To μονο που μενει ειναι η ταχυτητα γιατι ακομη το προγραμμα αργει να βγαλει λαθη γλυτωσαμε τις μπλε οθονες εχουμε ομως αποτομα restarts τεσπα ετσι ειναι αυτα....

DarthMoul
08-02-2005, 09:28
Κατ'αρχήν αυτό που γράφετε με το γονάτισμα της μηχανής εγώ δεν το έχω δει ακόμα. Η δικιά μου έκδοση στο σπίτι τρέχει με 16 threads και όχι με δύο, αλλά δουλεύω στο desktop σαν να είμαι idle. Μόνο στα windows όταν ανοίγω την tv και τρέχει ο tester στο background παγώνει καμμιά φορά η εικόνα για μισό δευτερόλεπτο και μετά ξεκολλάει πάλι.

Στην αρχή της εκτέλεσης γίνεται αρχικοποίηση των threads, οπότε σε P4, δεν θα δείτε 100% load. Μετά την αρχικοποίηση που αρχίζουν τα threads να δουλεύουν θα δείτε την μηχανή στο 100%.

Έχει βγάλει μέχρι τώρα failed στο comparing σε κανέναν;

Για το απότομο restart έχω την παρακάτω εξήγηση. Δεν ξέρω αν είναι η σωστή αλλά είναι η μόνη που πάει το μυαλό μου. Υπάρχει κάποιο interrupt στους x86 που κάνει software reset. Ουσιαστικά είναι αυτό που καλείτε όταν πατάτε CTRL+ALT+DEL. Λόγω του o/c που κάνετε, μάλλον λόγω θερμοκρασίας ή λόγω της παραπάνω τάσης που δίνετε, κάποιο opcode αποκωδικοποιήται εσφαλμένα και εισέρχεται μέσα στο pipeline ως software reset interrupt. Ενδεχωμένως και το ίδιο το pipeline να παραποιεί το opcode σε κάποιο stage. Καλό θα ήταν, όταν έχετε απότομο restart, να κατεβάζετε το ρεύμα στον πυρήνα και να δοκιμάζετε ξανά. Δεν ξέρω αν αυτό είναι δυνατό πάντα γιατί δεν είμαι overclocker και μπορεί να λέω βλακίες. Δώστε μου τα φώτα σας και ίσως βρούμε άκρη. Πάντως αν είναι δυνατό και το restart επαναληφθεί, τότε είναι καθαρά θέμα ψύξης.

Το ιδανικό θα ήταν να μπορούσαμε να καταγράψουμε επακριβώς την μικροεντολή που προκαλεί το restart. Θα μπορούσαμε αφ'ενός να αποφύγουμε την χρήση της και να την συνθέσουμε με άλλες που έχουν μικρότερο μέγεθος για να μην ζορίσουμε τον decoder (CISC sucks), και αφεταίρου να διαγνώσουμε επακριβώς την αιτία του προβλήματος. Στα εργαστήρια κάνουν ακριβώς το ίδιο αλλά έχουν μηχανήματα που χαρτογραφούν λεπτομερώς την λειτουργία του chip κατά την διάρκεια της εκτέλεσης του κώδικα και έτσι κάνουν το debuging του chip. Εμείς θα πρέπει ουσιαστικά να κάνουμε reverse engineering. Μήπως ζητάω πολλά; :087:

Ο taskmanager έχει επιλογή που δείχνει πόσα threads ανοίγει το κάθε task.

KTM
08-02-2005, 13:32
Το ετρεξα κι εγω με 272fsb στον prescot, δεν μου δημιουργησε καποιο προβλημα, μια χαρα το βρισκω.

MrSeanKon
08-02-2005, 21:58
Τελικως το προγραμμα πρεπει να αλλαξει ονομασια και να βαφτιστει System Stability Tester.
Χαμηλωνοντας τον πολλαπλασιαστη στο 7 ωστε να διασφαλισω το απολυτο της σταθεροτητας της CPU ετρεξα 16Μ οσο μου επιτρεπει η συνολικη μνημη (512ΜΒ + 128ΜΒ swap file).
Χαμηλωσα το swap file αρκετα για να μην ειναι μεγαλο οποτε να τρεχει οσο γινεται στο 100% το προγραμμα.
Η πρωτη φωτο δειχνει οτι στα 219MHz FSB πεταχθηκε προειδοποιητικο μυνημα μετα απο 19 λεπτα περιπου στο δευτερο περασμα.

BUG---> Παρολα αυτα το προγραμμα συνεχισε και για τριτο περασμα ενω επρεπε να σταματησει.

Επισης και το Stress Prime 2004 με 1 στην priority δεν ειχε βγαλει λαθος στον ιδιο χρονο.
Φυσικα αυξηθηκε η priority στο 7 ωστε να τρεχει σε Normal State μεσω Windows Task Manager και δεν αντεξε παραπανω απο 1 λεπτο.
Χαμηλωθηκε στα 218MHz το FSB σε 1 ωρα κι 20 λεπτα με 7 priority το Stress Prime 2004 πεταξε λαθος (δευτερη φωτο).
Ακολουθως δοκιμαστηκε στην ιδια συχνοτητα ο Τester (τριτη φωτο) και πεταξε λαθος πιο γρηγορα!
Και δεν εχει βελτιστοποιηθει σε ταχυτητα πραξεων!
ΓΙΟΥΠΙ! :098:
ΓΙΟΥΠΙ!
Αρα πεθαινει και το Prime95! :041:

Συμπερασματα
1) Το προγραμμα μεχρι στιγμης καταφερε να εξοστρακισει το SuperPi 32M για ελεγχο ευσταθειας του επεξεργαστη.
2) Το προγραμμα αποδεικνυεται σχεδον ισοδυναμο με το Stress Prime 2004 για ελεγχο ευσταθειας μνημης.
3) Το προγραμμα βαραινει ολοενα και περισσοτερο οσο περισσοτερη φυσικη μνημη εχει το καθε συστημα.

Σκεψου Darth να ειχα 3GB μνημης επομενως θα μπορουσα να τρεξω τα 64Μ υπολογισμων χωρις να βαλω swap file.
Δεν ειναι μειονεκτημα οτι η μεχρι τωρα κατασκευη του καταναλωνει υπερογκα ποσα μνημης
Στο μελλον που θα εχουμε ολοι μας ολο και περισσοτερη μνημη τοτε θα φανει περισσοτερο η αξια του προγραμματος.
Δες την 4η φωτο οπου το αντιστοιχο προγραμμα PiFast το οποιο βασιζεται σε FFT για 16Μ περιπου ψηφια (κατι παραπανω) χρησιμοποιει πολυ λιγοτερη μνημη σε ολες τις περιπτωσεις.
Παρολα αυτα κι αυτο το προγραμμα εχει καποια ορια στην 5η φωτο για 10 δις ψηφια απαιτουνται περιπου 20GB μνημης ανω για 30 δις ψηφια δεν γινονται υπολογισμοι μια και τα εκτυπουμενα ποσα ειναι λανθασμενα (6η φωτο).
Τα δε threads που τρεχει το προγραμμα αυτο ειναι μονο ενα (7η φωτο).
Σε πληροφορω οτι το PiFast ειναι ο,τι ταχυτητερο μεχρι στιγμης για τετοιους υπολογισμους αλλα δεν ενδεικνυται για ελεγχο ευσταθειας τοσο.
Για να αρχισει αυτο να βαραινει αισθητα πρεπει να βαλεις μπολικα δεκαδικα ψηφια και να χρησιμοποιει κι αυτο υπερογκη μνημη.
Αυτα τα αναφερω και σε γενικες γραμμες ισως να διαφερουν λιγο σε αλλα συστηματα (εννοια Διαφοροποιησης).
Συνεπως αν το προγραμμα γινει ακομη κι 100 φορες πιο γρηγορο αλλα δεν χρησιμοποιησει υπερογκα ποσα μνημης δεν το βλεπω να κανει και τοση καλη δουλεια......

Συνεπως τι προτεινω:
1) Κανεις τις διoρθωτικες κινησεις για τα μικρολαθακια που εχει.
2) Aλλαζεις και τη μορφη της εξοδου ωστε να ειναι πιο κυριλε και να εχουμε σε καθε περασμα ενδειξη του χρονου.
3) Τον υπολοιπο κωδικα δεν τον πειραζεις καθολου θα μεινει οπως ειναι. Ετσι θα βγει στον αερα η εκδοση 0.3.
4) Βγαζεις μετα μια μικρη demo εκδοση την οποια θα τρεξουμε οι τρεις μας (εσυ, ο vice CEO κι ο υποφαινομενος) οπου θα κοντραρουμε τις μεθοδους Borwein vs Chudnovsky.
5) Επομενως η 0.4 εκδοση οταν θα μπορεσει να βγει θα περιεχει τη μεθοδο Chudnovsky χωρις να παιξει μεσα Karatsuba κλπ.
Αυτο θα γινει μονο για την περιπτωση που αυτη αποδειχθει πιο γρηγορη εναντι της Borwein στην πραξη.
Βελτιστοποιησεις για την ταχυτητα υπολογισμων αν ακολουθηθει η μεθοδος αυτη θα αρχισουν να γινονται στην 0.5.
6) Αλλιως αν παραμεινει η Borwein τοτε μια και δεν θα αλλαξει κατι στην 0.4 αρχιζουμε να βελτιστοποιουμε την ταχυτητα υπολογισμων για να εχουμε κι οικονομια χρονου.

Προσωπικη μου τοποθετηση
Τελικα το προγραμμα αυτο αρχισε να καλυπτει περισσοτερο απο οτι ειχα φανταστει στην αρχη.
Ειδικα αφου ισοδυναμει με τα υπολοιπα για τον ελεγχο της μνημης δε βρισκω λογο να χρησιμοποιω κατι αλλο για να τσεκαρω τη μνημη π.χ. MemTest, Blends FFT Prime κλπ.
Παρολο που ειναι λιγο πιο πισω απο το Prime για τον ελεγχο της CPU εμενα δε με ενδιαφερει γιατι τα αγαπημενα προγραμματα μου αποδεικνυονται ελαφρυτερα κι απο τον Tester.
Aρα γιατι να μη χαιρομαι? :)

DarthMoul
08-02-2005, 22:39
Sean, καλό το roadmap που έβγαλες, αλλά δεν λαμβάνει υπόψη του κάποια τεχνικά δεδομένα τα οποία θα πούμε τώρα και μάλλον σε 1-2 σημεία θα αλλάξει. Να σου διευκρινίσω μερικά πράγματα και μετά βλέπουμε


1) Όλη την διαχείριση των multiple precision arithmetics την κάνει η GMP. Εγώ δεν κάνω τίποτα άλλο παρά να υλοποιώ τους αλγόριθμους που μου δίνεις. Ο Borwein σε κωδικοποίηση κόστισε λιγότερο από μισή ώρα. Όλος ο κόπος ήταν να βρεθούν οι αιτίες των προβλημάτων σε κάθε λειτουργικό (γράφω πάντα τον κώδικα σε Tru64 Unix και Alpha CPU λόγω τεχνολογικής υπεροχής των devtools) ώστε το πρόγραμμα να μην κρεμάει λόγω software (όσο γίνεται αυτό)

Άρα FFT, karatsuba κλπ θα χρησιμοποιήσουμε μόνο αν αντικαταστήσουμε την GMP. Πράγμα δύσκολο αφού ούτε το mathematica το τόλμησε. Ακόμα και αν το κάνουμε θα αργήσει πολύ.


2) Δεν χρησιμοποιώ την GMP σωστά, δηλαδή με maximum ταχύτητα, αλλά έτσι ώστε να ζορίσω την μηχανή. Πχ, κάνω όλους τους υπολογισμούς και τις συγκρίσεις στο maximum των δεκαδικών ενώ δεν είναι αναγκαίο.


3) Συνέπεια των (1) και (2) ο αλγόριθμος που θα χρησιμοποιήσουμε δεν παίζει ρόλο για τον έλεγχο της σταθερότητας του συστήματος. Μας συμφέρει να χρησιμοποιήσουμε τον γρηγορότερο που υπάρχει και αν χρειαστεί τον τρέχουμε επαναληπτικά. Ο λόγος που τα λάθη δεν χτυπάνε αμέσως αλλά μετά από ώρα μπορεί να είναι μόνο ένας. Η θερμοκρασία. Να ξέρεις ότι η θερμοκρασία μέσα στο chip δεν παρουσιάζει ομοιογένεια. Αυτό που μετράς εσύ με το θερμόμετρο είναι μέση θερμοκρασία. Η θερμοκρασία της FPU, της ALU ή του memory controler σου είναι άγνωστη!


4) Μελέτησα λιγάκι Chudnovsky και Bailey. Public demo δεν θα υπάρξει γιατί έχει δουλειά. Θα γράψω εγώ δοκιμαστικό κώδικα και θα αποφασίσω. Μάλλον για bailey μας βλέπω.

Και μετά ο ίδιος κώδικας με λίγες μετατροπές θα γίνει bench ή θα ενσωματωθεί στο pctbench. Θα δούμε.


5) Το bug που έδωσες δεν είναι bug. Αν τα failed αυξάνονται όσο περνάει ο χρόνος, τότε σημαίνει πως το chip κάπου ζεσταίνεται ίσως και τοπικά. Ή οι μνήμες. Καλύτερα να το αφήσουμε έτσι και όποιος θέλει ας το κόβει με CTRL+C.


Κατα συνέπεια, φτιάχνουμε την 0.3 όπως λες και για την 0.4 θα δούμε. Θα κάνουμε μια παύση και θα το σκεφτούμε λιγάκι. Σκέψου σοβαρά και την περίπτωση ότι θα πρέπει να φτιαχτεί και GUI.

MrSeanKon
08-02-2005, 23:03
OK Darth καλως εκανες και τα ανεφερες ολα αυτα για να μπω κι εγω οσο γινεται σε καποιες εννοιες τις οποιες και δεν κατεχω.
Π.χ νομιζα οτι θα μπορουσες να βελτιστοποιησεις την GMP περαιτερω αλλα κι ετσι να μεινει σκασιλα μου :040: αφου τον ρουφηξε το Prime95 στον ελεγχο μνημων δεν με νοιαζει.
Κι οτι αργει παλι σκασιλα μου εγω και σε μισο δευτερολεπτο να το κανεις να τρεξει θα το τρεχω ωρες το κεφαλι μου θελω να ειναι ησυχο.
Μου αρεσει το προγραμμα ειναι μπομπατο κι οσο θα αυξανεται η συνολικη μνημη του συστηματος μου τοσο θα τον τσιτωνει περισσοτερο.
Κι ειδες απο τα προηγουμενα ποστ ποσο φανηκε η διαφορα οταν ετρεξα τα 16Μ εναντι των 8Μ.
Σκεψου να βαλω 32Μ και να τσιτωσω εκει τις μνημες θα πεταξει πιο γρηγορα τα λαθη.
Οντως η θερμοκρασια στον επεξεργαστη δεν ειναι ομοιομορφη.
Οσο για αυτο που ρωτησες σε προηγουμενο ποστ εμενα ο Α64 δεν κολλαει οπως λεει ο emnezia.
H μονη αργη συμπεριφορα που παρουσιαζει το συστημα ειναι οταν παω να ανοιξω τον ΙΕ και γενικα η προσπελαση του σκληρου δισκου.
Για το GUI θα πρεπει να βοηθησει κι ο circular γιατι εγω δεν θα μπορεσω μονος. :108:
Εκτος κι αν θελει να τη φτιαξει μονος του οποτε απαλλασομαι καθηκοντων και συνεχιζω τα Tools.

Ερωτησεις:
1) Κανεις ελεγχο των δεκαδικων ψηφιων στο Π.Α.Τ.?
Γιατι μπορει κι εκει να πεταξει λαθη κατα τη συγκριση...
2) Επειδη ειναι κι οι πρωτες εκδοσεις μηπως αργοτερα με πιο καθαρο μυαλο μπορεσεις να αλλαξεις λιγο τον κωδικα και να γινει πιο καλο το τσιτωμα?
Ε ολο και κατι μπορει να βρεις κανενα προγραμμα δεν ειναι τελειο απο την αρχη.
3) Μηπως θα μπορουσες να βαλεις καποιον εξτρα κωδικα που να ενεργοποιειται με μια εξτρα παραμετρο και να εκανε αυτο που λεμε καψιμο?
Δηλαδη να ανεβαζει λιγο παραπανω τις temps εγω φυσικα αναψα χθες τερμα το αεροθερμο για να παιξω..... :040:

Παντως οπως ειδες το προγραμμα τελικα γενικο τσιτωμα παντου κι οχι μονο στον επεξεργαστη.
Δεν ειπες βλακειες Λουκα περι restart.
Αυτο οφειλεται διοτι τρεχω το συστημα εντελως στα ορια οπως και πρεπει να κανω για να βρω το MSF=Maximum Stable Frequency κι επειδη δεν αντεχει η ψυξη του εκει.
Φυσικα αν ριξεις λιγο το Vcore τοτε δεν προκειται να τρεξει εκει πανω.
Η αυξηση του Vcore βοηθαει να ξεπερασει το chip καποια εμποδια και να παει παραπανω αλλα μεχρι ενος οριου οποτε κι αλλο Vcore μεχρι που θα μπει στην Περιοχη Καταρρευσης οπου ελλατωνεται ραγδαια ο δεικτης n.
Δες τα on line manuals για περισσοτερες πληροφοριες.

D1m1tR1$
08-02-2005, 23:04
εγώ πειράζει που δn καταλαβαίνω τίποτα από αυτά που λέτε????

DarthMoul
08-02-2005, 23:20
Τις αρχικές τιμές δεν τις ελέγχω αλλά μπορούμε να το προσθέσουμε εύκολα αυτό.
Τώρα το να βελτιώσω την ταχύτητα της GMP είναι πολύ φιλόδοξο. Η GMP έχει ιστορία από το 1989 με όλο το ΜΙΤ πάνω της. Εγώ είμαι μόνος μου. Τί παραπάνω μπορώ να κάνω; :)

Δεν έχω ιδέα πως να σου ανεβάσω την θερμοκρασία. Αν έχεις καλη ψύξη, και είσαι σε σταθερό επίπεδο o/c, δεν θα ανέβει ό,τι και να κάνω εγώ. Πάντως θα βάλω επιλογή για να τρέχει επαναληπτικά όσες φορές θέλεις.

Το GUI πρέπει να φτιαχτεί με QT libraries. Άρα εσύ δεν μπορείς να βοηθήσεις. Πεδίον δόξης λαμπρόν για τον circular :p

Θα το δούμε το ζήτημα αμέσως μετά την 0.4 ώστε να πάμε απευθείας στην 1.0 με GUI.

MrSeanKon
08-02-2005, 23:32
ΟΚ Darth αν ειναι ετσι με την GMP no problem σου ειπα χε***κα αφου το προγραμμα γα**ι και δερνει στον ελεγχο μνημης ας ειναι λιγακι αργο.
Εσυ τρωγεσαι με την ταχυτητα ενω εγω σου λεω τοσες φορες αστηνε να παει στο διαολο δεν ειναι αυτη που θα μας κανει τα λαθη τα πισια κολλανε στο πουσαρισμα μετα απο ωρες και μιλαω εκ πειρας.
ΟΚ δεν μπορουμε να τα βαλουμε με ολο το ΜΙΤ....
Ο στοχος μας βλεπω να υλοποιειται αρα και παλι σκασιλα μου. :039:

Οσο για το GUI Darth ειχα απορια γιατι δεν το εχεις κανει στο pcbench.... :090:
Tεσπα κανε το σε τουτο για να μην ειναι σπα***δικο.
Περι θερμοκρασιας υπαρχουν και τα καλοριφερ... :003:
Ειμαι ειδικος σε αυτα....

Α και να σε ξαναρωτησω.....
Μεχρι 31 βροχους μπορουμε να παμε με το προγραμμα?
Αρα αυτο μας δινει τη δυνατοτητα να υπολογισουμε 2G δεκαδικα ψηφια με τη συγκεκριμενη μεθοδο.
Φυσικα στο μελλον μπορουμε να ανοιγουν τετραπλα threads αν θα φθασουμε να εχουμε τεραστιες μνημες!
Επισης πολυ ευκολα μπορει να γραφει κωδικας να υπολογιζει τετραγωνικες ριζες, το e=2.718281... με τη σειρα Taylor Rain :044: γιατι ειναι ευσταθης ο αλγοριθμος κι απο οτι εχω δει ολες τις υπερβατικες συναρτησεις τις υπολογιζουν με δυναμοσειρες.
Αυτα αργοτερα οταν θα εχουμε μπολικη μνημη για ξοδεμα!

DarthMoul
08-02-2005, 23:55
Θεωρητικά μπορείς να έχεις 2^64-1 ψηφία, δηλαδή 64 βρόγχους. Στην πράξη θα πας μέχρι 1G. Μετά η GMP χτυπάει ότι και να κάνω. Τα dualcores θα είναι ουσιαστικά SMP. Μέχρι τώρα στα SMP συστήματα o/c δεν γίνεται. Περίμενε να έρθουν και θα δούμε. Threads ανοίγουμε όσα θέλουμε. Η private version που έχω ανοίγει 16 ;)

MrSeanKon
09-02-2005, 00:09
Η private version που έχω ανοίγει 16 ;)

Και τι αυτη δεν τη διανεμεις?
Micro$oftεις κι εσυ?
Οπως κι εγω δε δινω την Enterprise Edition των Ο/c Tools :p αλλα σας δινω την Professional κατοπιν υ2υ με εξτρα υλικο. :040:
Σε αυτη την εκδοση εχω ριξει το περισσοτερο βαρος τεσπα.
Παντως και 1G ψηφια δεν ειναι λιγα....
Μεχρι να φθασουμε εκει πανω οπου θα αρκει η μνημη για 1G εχουμε καιρο....

DarthMoul
09-02-2005, 00:19
Εδώ με δύο threads και παγώνουν οι μηχανές σας. Τα 16 τι να τα κάνετε; Όταν θα πάρεις opteron, θα στο δώσω για να δεις στην πράξη μηχάνημα που δεν μασάει πουθενά. Ούτε 1 βαθμό θερμοκρασία δεν ανεβάζει. Σε κανένα μήνα θα έχω στο γραφείο dual nocona για testing. Τέσσερις virtual cpus στα 64 bits και intel compiler, όχι gcc όπως τώρα. Ουσιαστικά το μηχάνημα θα είναι για field testing μιας εφαρμογής oracle και application porting από sco unix σε linux. Αλλά στα διαλείματα θα έχει άλλη χρήση :077:

MrSeanKon
10-02-2005, 00:16
Darth θα ηθελα ή μαλλον απαιτω :D να γινει ετσι η μορφη της εξοδου.
Θα δειχνει καθε βημα τον αριθμο βροχων που εκτελουνται κι οχι passes αυτο ειναι αστοχο LOL ενα περασμα κανει το προγραμμα....
Το Digits δειχνει τα ψηφια που υπολογιζονται.
To passes δειχνει ποσα περασματα εχουν γινει μεχρι εκεινη τη στιγμη αραγε λοιπον LOL οταν πρωτοξεκινησει το προγραμματα μηδεν δε θα ειναι??
Το state ειναι ενα flag κι οταν αναψει (αρα βρηκε λαθος) τοτε απο ΟΚ --> BAD=*****.
To errors ειναι μια ακεραια μεταβλητη οπου δειχνει ποσα λαθη συνολικα εχει βρει το προγραμμα.
Τελος στη στηλη time θα φαινεται ο συνολικος χρονος.

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4181

Οπως βλεπεις (τα νουμερα στους χρονους ειναι υποθετικα) στον 16ο βροχο κατα το πρωτο περασμα βρηκε ενα λαθος (15 λεπτα + 32sec).
Εδω αρχιζει η δευτερη εκτελεση του προγραμματος.
Αρα θα φαινεται καπως ετσι:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4182

Προσεξε οτι μεχρι και τον 9ο βροχο το προγραμμα δεν ειχε βρει λαθη στο δευτερο περασμα αρα μεχρις εκει πρεπει η State=OK.
Στον 10ο βροχο εξηχθη ***** αρα αναβει το flag --> State=BAD αυξανονται ο συνολικος αριθμος των λαθων σε 2.
Μεχρι και τον 19ο βροχο θα φαινεται διαρκως το State=BAD και μεχρι να τελειωσει και το δευτερο περασμα (αρα Passes=1).
Σε τουτο το περασμα ο Η/Υ ηταν αψογος αρα η εξοδος θα ειναι καπως ετσι:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4183

ενω στο τεταρτο περασμα (passes=3) στον 19ο βροχο πεταξε ενα λαθος, στον 20ο βροχο αλλο ενα καθως και στον 21ο βροχο.

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4184

Θα μου πεις τι θελεις σωνει και καλα ολα αυτα τα στοιχεια?
Σε ενα ατομο οπως ειμαι εγω θα με διευκολυνουν διοτι ενδεχεται να βγαλω και μοντελα αντοχης τεσπα αυτα ειναι ψιλα γραμματα τα οποια δεν ενδιαφερουν το ευρυ κοινο.
Απαιτω το προγραμμα στο οποιο θα εμπιστευομαι την ασφαλεια του Η/Υ μου να μου δινει λεπτομερεστατες πληροφοριες τις οποιες εγω θα αξιοποιησω.
Κι οπως καταλαβαινεις προγραμματα του στυλ Prime95, Hot CPU ***** Pro, @@ροPi, Mem@@ρι εχουν φυγει απο χθες και πηγαν στα σκουπιδια.

Συνοψιζω τις υπολοιπες αλλαγες:
1) Το λαθακι με τους βροχους (οχι παραπανω απο 31 να πεφτει κλειδωμα δες προηγουμενη σελιδα)
2) Δυνατοτητα εκτελεσης του προγραμματος παρα πολλες φορες οχι δυο και τρεις μιλαμε να ειναι πολυ μεγαλο το νουμερο τερμα long int οσο παει.
3) Επισης σε πολλαπλη εκτελεση οταν θα ξεκινησει το δευτερο περασμα δε θα γραφει πιο κατω στο MSDOS παραθυρο....
Θα εκτελειται η cls εντολη ειτε η clrscr() στη C ωστε να το καθαριζει...
Γιατι σκεψου οτι θα του δινω 1000 φορες να εκτελεσει το 1Μ ή 500 φορες τα 2Μ δε θελω να βλεπω ενα παραθυρο ξεχειλωμενο.
Δες την τελευταια εκδοση των O/c Tools ποσο κυριλε την ειχα φτιαξει (καλυτερη δε γινοτανε).
4) To oνομα του προγραμματος προφανως θα λεγεται οπως ο τιτλος του thread μια και τα κανει ολα.
5) Μην ξεχασεις να γινεται ελεγχος και κατα την εκκινηση του Π.Α.Τ. γιατι μπορει να πεταξει μουφες ακομη κι οταν υπολογιζει την τετρεγωνικη ριζα.
Εκει ας λεγεται Loop=0.
6) Eπειδη δεν κανεις πουσαρισμα δεν προκειται να δεις αναποδιες.
Σου ειπα και σε προηγουμενα post περι αποτομου restart.
Μια και δεν προκειται να ξαναγορασω UPS επειδη επαθα χοντρη νιλα αλλα κι ενδεχομενων αποτομων restarts μπορει μια και θα τρεχει 24 ωρο το συστημα οταν ξυπνησω ή επιστρεψω απο τη δουλεια να με περιμενει.
Αρα δε θα ξερω τι εγινε αν βρηκε λαθη ή τι στο διαολο....
Επομενως καθε φορα που θα ολοκληρωνεται ενας βροχος και το καθε pass να ενημερωνεται αυτοματα ενα αρχειο *.txt οπου θα κραταει την εξοδο του MSDOS και να ξερω τι εχει γινει.
Αυτο δε χρειαζεται να ειναι τεραστιο καθε φορα που θα κανει update δηλαδη fopen(filepointer,"w") oπως στη C...

Χαιρομαι ξανα για τη συνεργασια DarthMoul! :beerchug:
Μετα τιμης,
MrSeanKon
Authorized AMD tester and CEO of K. Labs Team and associates. :040:

Οπως λενε Πουλιαδης Α.Ε. και συνεργατες. :050:
LOOOOOOOOOOOOL! :033:

DarthMoul
10-02-2005, 00:35
Δεν θα γίνουν όλα όπως τα θέλεις λόγω αδυναμίας των windows να τα υποστηρίξουν. Πχ στον υπολογισμό του χρόνου εκτέλεσης έχω έναν 32 bit integer που μετράει milliseconds. Δεύτερον, στα 30 loops πέφτει μαχαίρι στο δικό μου μηχάνημα που έχει 2G. Αν κάποιος έχει 4G ή 8G θα μπορεί να τρέξει. Δεν ξέρω αν τελικά θα τρέξει γιατί δεν έχω μηχάνημα με τόση μνήμη για να το δοκιμάσω. Άρα το μαχαίρι θα πέφτει στο 64 που είναι το θεωρητικό μέγιστο στους 64μπιτους ή στο 32 που είναι το αντίστοιχο μέγιστο στους 32μπιτους. Οπότε εσύ με win32 θα παίξεις μέ θωρητικό maximum το 32 και όσοι έχουν linux64 αντίστοιχα με το 64. Τα πραγματικό maximum υα εξαρτάται υποχρεωτικά από την μνήμη σου.

Να ξέρεις ότι όταν πρωτοσχεδίασα το πρόγραμμα έκανα πρόβλεψη για multithreaded υπολογισμό του π. Τώρα πια κάνουμε single threaded υπολογισμό με δυο threads εν παραλλήλω. Αυτό μου δίνει την δυνατότητα να κάνω κάποια οικονομία στην μνημη, πράγμα που θα σου επιτέψει να υπολογίζεις το π με περισσότερα ψηφία. Να το κάνω ή να το αφήσω έτσι σπάταλο όπως είναι τώρα;

ΥΓ. Για να καταλάβω καλύτερα. Το passes που έχεις στο screenshot είναι πόσες επαναλήψεις στην εκτέλεση του προγράμματος έχεις κάνει μέχρι τώρα;

MrSeanKon
10-02-2005, 00:40
Περιμενε τι εννοεις οτι δεν μπορει να γινει? :confused:
Μιλησε συγκεκριμενα...
Η πολλαπλη εκτελεση του προγραμματος?
Η μετρηση του χρονου?
Τι δηλαδη?
Αφου δειχνεις το χρονο εκτελεσης σε δευτερολεπτα που ειναι το προβλημα να τον μετατρεψεις να φαινεται κυριλε σε ωρες + λεπτα + δευτερολεπτα.

DarthMoul
10-02-2005, 00:44
H πολλαπλή εκτέλεση γίνεται. Η μέτρηση του χρόνου πάλι γίνετε αλλά όχι για όσο χρόνο θέλουμε. Το όριο είναι 583 ώρες. Από εκεί και μετά θα γίνει μπάχαλο.

MrSeanKon
10-02-2005, 00:50
LOL ενα 24ωρο θελω να τρεξει το μηχανημα κι οχι 583 ωρες!
Στην τελικη υπαρχει και το Ctrl+C!
Τις υπολοιπες μεταβλητες δε γινεται να τις βαλεις? :083:
Δε βρισκω λογο να ειναι δυσκολο για να μη γραφω εγω εξτρα plug in στη Builder και να μετραω και ******.......

Αυτη η μορφη με ενδιαφερει για να ξερω καθε στιγμη ποσα περασματα εχουν γινει ποσα συνολικα λαθη εχει βρει κι αν στο τρεχων περασμα πεταξε λαθος η οχι. ;)
Θα με βοηθησει να φτιαξω προσωπικους Estimators.
To @@ροMemTest το εχεις τρεξει?
Αλλα δε σου δειχνει σε ποιο περασμα βρηκε λαθος...
Εγω ετσι θα το σχεδιαζα το προγραμμα για να εχει οσο γινεται περισσοτερες πληροφοριες κι οχι να δειχνει ενα ξερο ΟΚ, Error....
Δες τα Tools που δειχνουν ενα σωρο πληροφοριες...
Μαλλον επειδη εχεις παρατησει το o/c εχεις αμελησει καποια πολυ σημαντικα πραγματα!
Λοιπον τι λες?
Εγινα σαφης? :100:

DarthMoul
10-02-2005, 00:54
Ok.To output θα γίνει όπως το θέλεις. Ίσως αργήσει λίγο παραπάνω λόγω κάποιων ραγδαίων εξελίξεων που μου προκαλούν extra υποχρεώσεις αλλά σε καμμιά 10αρία μέρες το πολύ θα είναι έτοιμο. Μπορεί και νωρίτερα.

MrSeanKon
10-02-2005, 01:17
ΟΚ Darth no problem κι εγω σημερα μολις ολοκληρωσα τα on line manuals των O/c Tools και το προγραμμα το ειχα ανεβασει 3 μηνες....
Λιγα λιγα ανεβαζα....
Τεσπα παμε παρακατω....

1) Το οριο της GMP ειναι 1G οπως λες....
Οποτε θελει (εκτιμητεα τιμη) καπου 40GB μνημης.
Για τα 16Μ παντως χρειαστηκα καπου 600MB μνημη, 1.2GB για τα 32Μ κ.ο.κ.
Εξαρταται και τι φορτωνεις πανω τεσπα το προγραμμα μας καλυπτει για χρονια και με το παραπανω.
Ομως αν και δεν εχω ψαξει το θεμα ολες οι arbitrary libraries μεχρι 1G κανουν πραξεις? :102:
Θα κοιταξω να δωσω και στο Mathematica μεγαλυτερη ακριβεια..
Γιατι και το PiFast κανει τουλαχιστον 10 δις πραξεις οπως μπορεις να δεις στις φωτο των προηγουμενων σελιδων.
Βεβαια αυτος βαζει FFT μεσα αλλα κολπα....
2) Ολα αυτα στην εξοδο τα θελω και για τον αλλο λογο:
Αν τρεξω διπλα 8Μ vs μονο 16M (δεν βαζω παραπανω δε θελω swap file = γιγας) ποιο θα ειναι καλυτερο σε ευαισθησια?
Θα το δειξει η πραξη...
3) Αν θελησω να ασχοληθω λιγο κι εγω θα δωσεις χειρα βοηθειας γιατι θελω που να παρει να μονταρω και μια εκδοση στα μετρα μου οπου θα βαλω και spamming code μεσα αλλα αυτη δε θα κυκλοφορησει χυμα θα δινεται μονο στην u2uware Professional Edition. :050:

DarthMoul
10-02-2005, 01:32
1) H GMP καταναλώνει τέτοια ποσά μνήμης μόνο στα windows. Στο linux χρειάζομαι περίπου 24 bits για κάθε ψηφείο. Άρα τα 32Μ μου ζητάνε 96Μ μνήμης για κάθε thread. Δηλαδή 192Μ σύνολο. Καμμία σχέση με το 1.2G που ζητάνε από εσένα τα windows. Το γιατί τα win αντιδρούν τόσο άσχημα είναι θέμα του bill πια. Όχι δικό μου, ούτε της GMP. Θεωρητικά οι abritrary precision βιβλιοθήκες έχουν όριο αναλογο με την virtual memory. Γι αυτό και σε εμένα κόλλησε στο 1G. Έχω 6G virtual memory. 2G φυσική και 4G swap. Υπολόγισε βάσει των παραπάνω και θα δεις. Το pifast είναι άλλη ιστορια. Ειναι κώδικας fully customized πάνω στο πρόβλημα. Δεν χρησιμοποιεί βιβλιοθήκη γενικής χρήσης όπως εμείς.

Για τα υπόλοιπα δεν έχω να σου πω τίποτα :)

MrSeanKon
10-02-2005, 21:10
Απο σημερα ξαναστηνω το συστημα με το CeleronD που εχω επισης.
Απο το πρωι τρεχω δεξια κι αριστερα να βρω μεταλλικες βασεις, σιδεροπριονα κλπ ωστε να φτιαξω εδω και τωρα μεταλλικο καπακι και να κουμπωσει καταλληλα στη μητρικη.
Κι αυτο γιατι δε θελω να κανω ****** με αεροψυξη νερο και ξερο ψωμι.
Θα βαλω τα Windows 2003 Enterprise για να μπορεσω να εχω μεγαλα swap files (ανω απο 4 γιγα συνολικα) και να τρεξω 132Μ ψηφια.
Προφανως Λουκα δεν προκειται να παρασχοληθω με τον Celeron κατευθειαν θα φαει 1.58 ρευμα (το μεγιστο που αντεχει) και θα ψαξω στα πολυ γρηγορα τα ορια του με το προγραμμα του Ρωσσου.
Για να μη χασω πολυτιμο χρονο γιατι ο Celeron πλεον δεν υπακουει τις τιμες της Ιntel βασης δεδομενων εχει ξερχαβαλωθει.
Ακολουθως αφου βρω το περιπου MSF με του Ρωσσου κατευθειαν 132Μ Stability Tester και θα τρεχει 24ωρο.
Οσο θα περναει τα 24ωρα test θα ανεβαζω τον πυχη κατα 1MHz FSB.
Eκει που θα φαει τοιχο θα επαναλαβω δυο φορες ακομη μπας και ξεμπουκωσει.
Αν οχι θα τρεξω Large FFT Prime95 και θα δουμε αν περασει ή οχι.
Για να γινει συγκριση σε πιο ρεαλιστικη βαση με το προγραμμα.
Ειδες και παραπανω στον ελεγχο μνημης ο Stability Tester ειναι καλυτερος απο τα blends FFT του Prime95.
Oποτε πρεπει να κοντραριστουν οχι μονο στο CPU τμημα τα δυο προγραμματα επι ισοις οροις αλλα και σε διαφορετικη πλατφορμα. ;)
Ειδες τι κανω για χαλαλι σου! :040:
Αρα τι τους θελεις τους αλλους beta testers?
Εχεις εμενα τον καλυτερο οπου δε θα διστασω να βαλω και στα 220V το Celeron αν αντεχε! :044:
Πρεπει να κανω και κατι mods με ψυκτρακια στη μητρικη για να τραβηξει καλυτερο o/c φακ των PresHOT οι μητρικες αναβουν ευκολα.
Τις επομενες ημερες θα εχεις αποτελεσματα.

Διαβασε ξανα το 150ο ποστ μου γιατι εκανα ενημερωση στο τελος με τις αλλαγες που θελω να κανεις.
Αν θες κατι να προσθεσεις κανε post. :006:

DarthMoul
10-02-2005, 21:28
Κατ'αρχήν, σε win32 δεν μπορείς να έχεις RAM+swap > 4 Gbyte. Αν έχεις 1 Gbyte RAM, με 3 Gbyte swap είσαι στο όριο. Τα επιπλεόν το σύστημα θα τα αγνοήσει.

Μπορώ να γράφω το output στον δίσκο, αλλά οι προσπελάσεις στο filesystem με ασταθές σύστημα είναι ρίσκο. Επειδή το πρόγραμμα δεν θα το τρέχεις μόνο εσύ αλλά και άλλοι που ίσως να μην θέλουν να ρισκάρουν τα δεδομένα τους, θα πρέπει να το ξανασκεφτούμε. Επιπλέον, ακόμα και αν το κάνουμε τελικά, για να είναι βέβαιο ότι οι πληροφορίες θα γραφτούν ακόμα και στην περίπτωση του restart, θα πρέπει να μειώσουμε την αποτελεσματικότητα του προγράμματος. Το disk I/O έχουμε ξαναπεί ότι δίνει μεγάλες ανάσες στην CPU. Ίσως θα μπορούσαμε να κάνουμε log μία συνοπτική εγγραφή στο τέλος κάθε loop. Δεν συνιστώ κάτι παραπάνω. Και αυτό πολύ είναι.

MrSeanKon
10-02-2005, 21:36
Ίσως θα μπορούσαμε να κάνουμε log μία συνοπτική εγγραφή στο τέλος κάθε loop.

ΟΚ κανε αυτο δε με χαλαει.
Οσο για το swap file σου ειπα θα βαλω 2003 Enterprise αρα θα βαλω μπολικο.
Επιπλεον θα τρεχω κι ενα δευτερο αντιγραφο του προγραμματος 1Μ συνεχως σε below normal priority. ;)
Oταν θα πεφτει απο το 100% το κυριο προγραμμα λογω του swap file Θα αναβει εκεινο και δε θα αφηνει να ανασανει τοσο το συστημα. :D

DarthMoul
10-02-2005, 21:37
Επιπλεον θα τρεχω κι ενα δευτερο αντιγραφο του προγραμματος 1Μ συνεχως σε below normal priority. ;)

Αυτό θα πρέπει να το κάνεις σε άλλο directory.

MrSeanKon
10-02-2005, 21:41
Αυτό θα πρέπει να το κάνεις σε άλλο directory.

LOL το ξερω! :040:
Ισχυει οτι και με το SuperPi.
Ηδη χθες εκανα μερικες δοκιμες πριν ξεστησω τον Α64 κι ειδα οτι δεν τον αφηνει να παρει ανασες τον επεξεργαστη.
Ε και να ανασανει δε θα ειναι για περισσοτερο απο ενα δευτερολεπτο LOL θα αναβει το αλλο Stability Tester! :098:
Για να δω ποσο θα αντεξει με τα τεραβολτ! :042:

DarthMoul
10-02-2005, 21:46
Επιπλέον, όταν θα το τρέχεις διπλό, ο μέγιστος αριθμός ψηφίων που θα υπολογίζεις για το κάθε ένα θα πρέπει να είναι ο μισός. Δηλαδή αν η μνήμη σου φτάνει για να τρέξεις τον tester με 25 loops (που σημαίνει 32 Μ ψηφία), όταν θα τρέχεις διπλό θα πρέπει να βάζεις το πολύ 24 loops στο κάθε ένα. Κάθε loop παραπάνω διπλάσιάζει τις απαιτήσεις σε μνήμη.

MrSeanKon
11-02-2005, 22:12
Μα σου ειπα το αλλο καβουρδιστηρι 1Μ θα τρεχει και σε below normal ισα για να κραταει αναμμενο στο 100% τον επεξεργαστη. :044:
Επισης να γιατι το MSDOS ειναι χρησιμο: ;)
Εφτιαξα ενα μικρο batch file οπου εχει τις εντολες:

:1
cls
cputester 20
goto 1

αρα για απειρο χρονο (μεχρι να κολλησει το συστημα) :044: το ενα καβουρδιστηρι θα τρεχει συνεχως. ;)
Eιδικα χρησιμο για υπολογισμους ανω των 16Μ.
Επισης η εντολη cls χρησιμευει για να καθαριζει την οθονη και να μη βλεπουμε ενα μακρυναρι.
Στο αλλο thread που εκανα παρουσιαση του S&M εκανα μια εκτεταμενη συγκριση των αρετων υπαρχοντων προγραμματων.
Μπορεις να τη δεις εκει και να ποσταρεις οπου θες.
Δεν τα ανεβασα εδω αλλα εκει για να ειναι συγκεντρωμενα.

Επεται συνεχεια! :051: :027:
Οι επομενες εξι φωτο ειναι ληψεις απο εξι διαδοχικες εκτελεσεις του προγραμματος κανοντας 1Μ υπολογισμους (χρηση MSDOS batch file 165o post).

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4264
http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4265
http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4266
http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4267
http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4268
http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4269

Οπως φαινεται στο καθε περασμα αν αρχισουν να πεταγονται λαθη τοτε και ολα τα επομενα θα εχουν λαθη..
Αποριας αξιον ειναι οτι στο πρωτο περασμα εξηχθησαν 10 λαθη ενω στο δευτερο κανενα!
Δε συνεβη και στα επομενα περασματα αλλα ο αριθμος των λαθων ητο διαφορετικος.
Να λοιπον γιατι χρειαζομαι ολα αυτα που σου ζητησα.
Δε γινεται να καθομαι ενα 24ωρο μπροστα στο πισι και να κοιταζω ποτε πεταξε λαθη και το χειροτερο να τα μετραω και να προσθετω τους επιμερους χρονους ωστε να υπολογιζω μετα απο την παροδο Χ ωρων εμφανιστηκαν Ψ λαθη...
Και να σου κεντρισω περισσοτερο το ενδιαφερον θα σου κανω καποια ερωτηματα τα οποια δε θελω να απαντησεις αλλα να προβληματιστεις ποσες λεωφοροι ανοιγονται:
1) Αν σε καποιο FSB προκυψουν καποια λαθη εστω Χ τοτε πρεπει να χαμηλωθει η τιμη του?
2) Τι συμφερει να τρεχω για να εχω μεγαλυτερη ευαισθησια?
Δυο 2Μ/8Μ ταυτοχρονα ή ενα μονο 4Μ/16Μ?
(αυτο το λεω γιατι ανω των 16Μ η μνημη που απαιτειται ειναι μπολικη)..
3) Αν επαναλαμβανω σε semi stables FSBs το προγραμμα τοτε ο αριθμος των συνολικων λαθων θα ειναι περιπου ο ιδιος?
4) Κι αν ειναι μικροτερος τοτε πρεπει να ριξω λιγο το Vcore ή να δωσω λιγο παραπανω FSB και να κανω ελαφρυ καψιμο με τον Stretcher?
5) Μεχρι ποσες περιπου φορες πρεπει να επιμεινω?
6) Η εμφανιση των σφαλματων ειναι τυχαια?
7) Μηπως ακολουθει καποια κατανομη?
8) Μπορει να μοντελοποιηθει?
9) Εστω και στο περιπου?
10) Κι αν οχι μπορω να βαλω τυχαιες μεταβλητες ροπογεννητριες και να εφαρμοσω εννοιες Πιθανοτητων-Στατιστικης?
11) Θα μπορεσω να βγαλω καποια δικη μου κατανομη?

Αυτες ειναι μερικες απο τις ερωτησεις που θα μπορουσα να σου θεσω για να προβληματιστεις.
ΟΚ το φαινομενο ειναι πολυπλοκο αλλα σε μερικες περιπτωσεις ισως (αυτο το λεω τωρα γιατι δεν ξερω τι θα προκυψει στο μελλον) δυναται να δωθουν καποιες απαντησεις.
Ετσι ξεκινησα και με τα Tools πριν εναμισο χρονο.
Μαζευοντας στοιχεια κλπ και στο διαβα του χρονου ασχοληθηκα πως μπορω να μαντρωσω ολα τα δεδομενα κατω απο καποιες σχεσεις.

Λουκα,
πρεπει να καταλαβεις οτι ανηκουμε σε εντελως διαφορετικα στρατοπεδα.
Εσυ εισαι ενας κατεξοχην προγραμματιστης ενω εγω οχι.
Εσυ δεν ασχολεισαι με το πουσαρισμα για διαφορους λογους που εχεις πει ενω εγω ναι απο χομπυ.
Οι εμπειριες κι οι γνωσεις που διαθετει ο καθενας μας ειναι διαφορετικες.
Θυμησου (κανε ενα back λιγο στο thread) που ειχαμε μια κατα καποιον τροπο διαμαχη οχι με την εννοια του vs οπου ειναι φανατισμος αλλα με την εννοια οτι οι γνωμες μας διεφεραν σε καθαρα θεματα υλοποιησης.
Οπως και στο θεμα της βελτιστοποιησης οπου επεμενα και σου ελεγα "ασε τη βελτιστοποιηση αυτο το προγραμμα δεν ειναι benchmark εχει αλλο σκοπο και σε οποιον αρεσει αλλιως τη βολτα του"...
Θυμησου οτι καποια στιγμη ειχες απογοητευτει λιγακι ΟΚ ειναι ζορι ο κωδικας το ξερω και σου ειπα "ασε να γεννηθει το παιδι και μετα θα ωριμασει μην το δικαζουμε σε θανατο"....
Θυμαμαι που ειχα απογοητευτει πριν μερικες ημερες οταν εκανα συγκριση με τα Prime, S&M αλλα εκ των υστερων φανηκε η διαφορα μια και μελετηθηκε εκτενεστερα το θεμα (για τον Α64 αναφερομαι).
Και ποσο μαλλον σημερα οπου σας εδειξα και τα αποτελεσματα σε Intel.
"Το ενα χερι νιβει το αλλο και τα δυο μαζι το προσωπο" λεει ο θυμοσοφος λαος μας.
Αρα θα πρεπει να αξιοποιηθουν οι γνωσεις μας.
Ενα λεγομενο παντρεμα.
Στον προγραμματισμο πιστευω να εχεις την αναλογη βοηθεια απο το circular=τεμπελαρος :013: οταν ξεμπλεξει.
Κι εγω στα Μαθηματικα αν χρειαστω κατι ελπιζω ο emnezia=αρχιτεμπελαρος :013: να δωσει μια χειρα βοηθειας.
Οπως κι οι υπολοιποι χρηστες του forum μπορουν να βοηθησουν με τη θερμη που πρεπει να δειξουν σε κατι πρωτοποριακο για ολα τα ελληνικα forums κι οχι να αδιαφορησουν γυρνωντας την πλατη τους.

DarthMoul
11-02-2005, 22:22
Όπα! Αυτό που είδα δεν μου άρεσε καθόλου.
Από την στιγμή που σε κάποιο loop το ένα thread διαφοροποιήται από το άλλο, είναι λογικό όλες οι επόμενες συγκρίσεις να μην επιστρέψουν ισότητα!
Άρα θα πρέπει στο τέλος κάθε loop που υπάρχει ανισότητα αποτελεσμάτων να αξισώνουμε τις μεταβλητές για δούμε αν όντως και τα επόμενα loops αποτυγχάνουν.

Έτσι δεν είναι;

MrSeanKon
11-02-2005, 22:32
Χμ Darth αυτο ομως δεν ειναι επικινδυνο??
Γιατι αν οντως σε καποιο περασμα κανει λαθη στους υπολογισμους τοτε τα μεχρι εκει αποτελεσματα θα ειναι μουφες.
Αρα και να προχωρησει παραπερα παλι μουφες δε θα βγαλει?
Εννοεις να αρχικοποιησεις τις τιμες των μεταβλητων ξανα?? :confused:
Γιαυτο σου ειπα να γινεται κι ελεγχος στην εναρξη του Π.Α.Τ. ο διαολος εχει πολλα ποδαρια....

DarthMoul
11-02-2005, 22:37
Αν στο loop 7 χτυπήσει λάθος, τότε θα βγαλει όλα τα υπόλοιπα λάθος ακόμα και αν δεν έγινε λάθος στον υπολογισμό. Δεν χρειάζεται να κάνουμε επαναρχικοποίηση. Απλά κάνουμε p1 = p2 και συνεχίζουμε στο loop 8. Όπως και να έχει το ζήτημα το τελικό αποτέλεσμα π=3.14... θα βγει λάθος αλλά θα ξέρουμε το % σφάλμα της όλης διαδικασίας. Εκτός και αν δεν το χρειάζεσαι οπότε το αφήνω έτσι.

MrSeanKon
11-02-2005, 22:40
Δε βρισκω λογο Darth να προβεις σε μια τετοια κινηση αφου ετσι κι αλλιως θα ειναι λανθασμενα τα αποτελεσματα.
Μηπως θα ηταν προτιμοτερο σε περιπτωση σφαλματων να τερματιζονται και τα δυο threads και να ξεκιναει μια δευτερη εκτελεση?
Με ενημερωση ομως ολων των εξτρα παραμετρων που σου ζητησα --> συνολικος χρονος, περασματα, λαθη κλπ...
Τι λες? :confused:

DarthMoul
11-02-2005, 22:41
Οκ...No prob...Πιο εύκολο αυτό :)

MrSeanKon
13-02-2005, 01:01
Οπως ειδες στο δευτερο τρεξιμο δεν πεταξε λαθη.
Αρα καλυτερα να γινεται τερματισμος του προγραμματος....
Οποτε θα ξερω οτι (την επομενη ημερα που θα ξυπναω) βλεποντας 10 λαθη συνολικα και 15 περασματα --> οτι σε 10 περασματα εκ των συνολικων 15 προεκυψαν λανθασμενοι υπολογισμοι και σε 5 περασματα ηταν αλωβητο το συστημα.
Αυτο αν και δεν στο ειπα παραπανω στο 164ο ποστ θα δειξει κατα ποσο το προγραμμα μπορει να κανει κατι αναλογο με τον CPU Stretcher. :006:

Όσο για τα λάθη το ίδιο συμβαίνει και με τον Α64.
Αν βρει ένα λάθος τότε όλα πάνε κατά διαβόλου.
Mετά άρχισαν να κρεμάνε και τα ΧΡ.

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4304

Θα μπορούσες να βάλεις μια έξτρα μεταβλητή όπου θα κρατήσει το χρόνο που θα εξαχθεί το πρώτο λάθος?
Γιατί άλλο πράγμα είναι να κάνει 10 λάθη συνολικά στο 24ωρο και να εμφανιστεί το πρώτο στις δύο ώρες κι άλλο είναι να γίνουν 15 λάθη στο 24ωρο αλλά να εμφανιστεί το πρώτο λάθος στις επτά ώρες.
Τα θέλω για στατιστικούς σκοπούς.

DarthMoul
13-02-2005, 01:13
Οκ. Θα γίνει και αυτό. Δεν είναι δύσκολο

MrSeanKon
14-02-2005, 00:54
Συνεχιζοντας θα σου κανω ουκ ολιγα ερωτηματα!

1) Δοκιμασα να τρεξω τον CPU Stretcher v1.3 σε Normal Priority ανοιγοντας 500 threads μαζι!
LOL παγωσανε ολα μιλαμε το συστημα ετρεχε σε Realtime Priority στην ουσια.
Επομενως θα ηθελα να δινεις μια εξτρα παραμετρο για να μας ανοιγει πολλαπλα threads οσα γουσταρει ο καθενας.
Aς πουμε στο PcBench εχεις βαλει το μεγιστο 16.
Εγω Darth προτιμω να τρεξω 16 threads του 1Μ το καθενα ωστε να αρχισει να γονατιζει επιτελους κι ο Α64 και να γινει βαρυ το προγραμμα παρα να βαλω ενα των 16Μ και να κοπροσκυλαει.
Kι αυτο το λεω διοτι σωνει και καλα θελω το προγραμμα που εμπιστευομαι να καλυπτει και τον Α64 διοτι με Intel δεν ασχολουμαι (ασχετα αν πηρα Celeron για αρβαλα).
Στην τελικη δε βρισκω λογο να μη γινει.
Ετσι κι αλλιως να η ευκαιρια για να δουμε τι θα ειναι πιο ευαισθητο?
Τα 16 threads του 1Μ εκαστο ή ενα των 16Μ?
H 32 threads των 512Κ?
Mηπως 64 threads των 256Κ?
Θες και 128 threads των 128Κ?
Ο καθενας που θα χρησιμοποιησει το προγραμμα πρεπει να εχει και μια στοιχειωδη αντιληψη τι σημαινει να ανοιξεις τοσα threads μαζι.
Αν δεν καταλαβαινει τοτε προβλημα του θα πατησει το restart.
Σκεψου ποσο αερα θα μου δωσεις για να μπορεσω επιτελους να κανω αυτο που πρεπει.
Το σωστο ελεγχο.
Αν εγραφα εγω το προγραμμα θα εβαζα αυτη την επιλογη.
Ενα προγραμμα πρεπει να σου παρεχει πολλες δυνατοτητες να καλυπτει τον καθε χρηστη κι ειδικοτερα το CEO..
Αν ο αλλος χρηστης ειναι φτυαρι LOL ας παιξει Quake..
2) Το προγραμμα που εχεις φτιαξει χρησιμοποιει κι assembly κωδικα?
Δε γινεται να γραφει αποκλειστικα σε C?
Kαι με τι αντιτιμο?
Οχι για το χρονο επεξεργασιας αλλα η χρηση της assembly εγινε για να εχουμε βελτιστο τσιτωμα?
3) Δεν ξερω τι εκδοση ακριβως γραφεις τον κωδικα στη C.
Αυτη δεν εχει δυνατοτητα να βαζει απο μονη της Priority στο thread?
Π.χ. σε Builder δινεις την εντολη Thread->Priority=tpHighest; και τρεχει σε High Priority κλπ.
Φυσικα ο Task Manager δειχνει Normal Priority παντα γιατι το κυριο thread του CPU Stretcher τρεχει σε Normal ενω στην ουσια τα θυγατρικα ειναι αυτα που ζοριζουν το συστημα.
4) Οταν βγει η 0.3 εκδοση στον αερα με τις επιλογες και τις αλλαγες που σου ζητησα κι εχουμε συμφωνησει (μενει να δουμε τι θα κανεις με τα προσθετα threads) τοτε καλο ειναι πριν ξεκινησουμε να αλλαζουμε κωδικα GMP --> Karatsuba + FFT ή χρηση αλλης μεθοδου να τεσταρουμε εγω κι ο Vice CEO (στον Intel) τι ψαρια πιανει η καθεμια.
Κι αυτο στο λεω για τον εξης λογο:
Τι να το κανω αν η εκδοση 0.4 παει πιο γρηγορα στον Α64 αλλα ειναι περισσοτερο αναισθητη στο CPU testing.
Μεχρι τωρα τα παει θαυμασια σε Intel πλατφορμες (CPU+Memory).
Κι επιμενω στο beta testing ειδες καμια φορα αλλα σχεδιαζουμε στο χαρτι κι αλλα προκυπτουν.
Δυστυχως σε AMD δεν εχεις και το αναλογο υλικο αλλα μια αλλαγη στο κωδικα ισως βαρυνει περισσοτερο το προγραμμα.
Βεβαια κι εγω αλλα κι ο emnezia κανοντας beta testing θα δουμε προς τα που γερνει η πλαστιγγα.
5) Θες ο emnezia να σου φτιαξει ενα κυριλε interface για το προγραμμα?
Μου το ειχε ζητησει κι εμενα παλιοτερα να το κανει με τα Tools αλλα εμπλεξα με τη Builder και τελικα μπερδευομαι αλλα την παλευω καπως.
Πρεπει να γινει splitting των εργασιων αυτο νομιζω.
Πιστευω οτι δε θα μπορεις να κατσεις με τις ωρες και να σε πρηζουμε φτιαξε ετσι το ComboBox ή το Label δε μου αρεσε το GUI που εφτιαξες κλπ...
Ασε που μας περιμενει κι ο FFT στο μελλον και τοτε θα μας φυγει ο πατος...
Εχεις ΒΑΝ και το PcBench ετσι??
Επειδη εχουμε αρχισει να ασχολιομαστε με τουτο προγραμμα....
Αν ομως επιμενεις να το κανεις μονος σε GUI παω πασο.
6) Καταρχας οταν κανεις συγκριση των αποτελεσματων των δυο threads συγκρινεις ολα τα ψηφια?
Η τα τελευταια μονο?
Αυτο για οικονομια εξυπηρετει.
7) Η precision που εχεις ειναι σταθερη?

DarthMoul
14-02-2005, 01:25
1)Ίσως να γίνει σε μελλοντική έκδοση. Καμμία πραγματική εφαρμογή δεν κάνει κάτι τέτοιο άρα και ως test δεν έχει καμμία έννοια. Μόνο ως παιχνίδι. Κατά συνέπεια θα ασχοληθούμε με αυτό όταν θα υπάρχει περισσότερος χρόνος.
2)Ναι αλλά όχι εγώ. Η GMP. Τα έχω πει σε προηγούμενο post. Για x86 ναι χρησιμοποιεί assembly. Για x86-64 όχι. Καλύτερα τέτοιου είδους αιτήματα να τα κατευθύνεις στο development mailing list της GMP . Μπορείς να γραφτείς στην διεύθυνση gmp-devel@swox.com
3)ISO C99. Για τα priorities τα έχουμε ξαναπεί. Είναι OS specific. Στο linux δουλευει όπως ακριβώς το θέλεις. Δεν είμαι windows programmer αλλά μπορείς εσύ να γίνεις linux user.
4)Από εχθές ξεκίνησε το development της 0.3 και τα χαρακτηρηστικά της έχουν ήδη καθοριστεί. Όπως σου είπα και στο παρελθόν, η υλοποίηση του νέου αλγορίθμου δεν θα καταργήσει τον υπάρχοντα. Θα μπορείς να διαλέξεις.
5)Το interface θα γίνει όταν δούμε ότι είμαστε έτοιμοι για stable έκδοση. Δηλαδή στην 1.0. Αλλιώς θα ταλαιπωρηθεί άδικα όποιος το φτιάξει. Και η μόνη επιλογή που υπάρχει για GUI είναι qt libraries για καθαρά τεχνικούς λόγους. To pctbench είναι freezed προς το παρόν, μέχρι να ωριμάσει ο tester. Μετά το pctbech θα ενσωματώσει κάποιο από τον κώδικα του tester.
6) Το έχουμε ξαναπεί. Όλα για να πιέσουμε το cache και την μνήμη. Το κόστος σε χρόνο είναι ελάχιστο.
7) Ναι. Ιδιοτροπία της GMP. Για να αλλάξει θέλει πείραγμα.

MrSeanKon
14-02-2005, 02:29
ΟΚ Darth εγω παντως δεν το βλεπω για παιχνιδι αυτο.
Παιχνιδι μπορει να ειναι για καποιον αλλον για μενα θα ειναι χρησιμο εργαλειο..
Κι αναφερομαι για τα πολλαπλα threads.
LOL ο circular εμεινε καγκελο οταν ακουσε οτι αποπειρανθηκα κι ετρεξα 500 threads στον Α64 και μου ειπε οτι οι κατασκευαστες προτεινουν 16 μαξιμουμ ανα επεξεργαστη.
Παντως με 30 threads ο Α64 μου καπως την παλεψε στον CPU Stretcher... :077:
Τονιζω οτι ανοιγει ενα μητρικο thread και μετα ανοιγουν θυγατρικα σε ιδια προτεραιοτητα.

Ναι ΟΚ τωρα το θυμηθηκα με τις priorities που το ειχες πει παλιοτερα για το Linux.
Για την assembly επιτηδες σε ρωτησα αφου εχει τετοιο κωδικα μεσα το ξεχναω το προγραμμα δεν προκειται τωρα σε τετοια ηλικια να μαθω assembly γγια να το εφτιαχνα σε Builder.
Eμαθα λιγακι απο Windows νομιζω οτι ειμαι αρκετα καλα σε τετοιο επιπεδο μου αρκει. :077:
Εχεις το circular να σε βοηθησει... :036:
Eγω θα κανω τα υπολοιπα!

ΟΚ τοτε θα περιμενω εναγωνιως την 0.3 και μακαρι να μου ερθει γρηγορα η νεα μητρικη για να κανω τις δουλειες μου.
Και μια παρακληση!
Μπορει να σε ξενιζουν καποιες ερωτησεις μου αλλα εγω θελω απο το προγραμμα αυτο να μου παρεχεις απειρη ελευθερια και να μου δινεις τη δυνατοτητα να βγαλω το λαδι στον επεξεργαστη μου. ;)
Eτσι κι αλλιως πρεπει να παρεχεις μια τετοια δυνατοτητα!
Υπαρχουν διαφορων ειδων χρηστες!

DarthMoul
14-02-2005, 02:46
Πολύ καλά στα είπε ο circular. Το αναφέρει ρητά και το Intel Architecture Reference Manual for the IA32 Architecture. Γι αυτό και είχα μέχρι 16 στο pctbench. O λόγος είναι ότι με πάνω από 2 έχεις μείωση σε επιδόσεις και με πάνω από 16 μεγάλα latencies. Άρα δραματική πτώση επιδόσεων και μεγάλες ανάσες στην CPU πράγμα το οποίο δεν θέλεις σε έναν stability tester. Κάποια στιγμή θα σου δώσω telnet πρόσβαση σε έναν Alphaserver GS1280 με 128 CPUs για να τρέξεις το πρόγραμμα με 256 threads σε 30 seconds να σου φύγει η λύσσα. Τα δύο threads προς το παρόν είναι μια χαρά. Όταν βγάλει η Intel διπύρηνα SMT θα τα κάνουμε τέσσερα.

Από την στιγμή που θα έχουμε και logfile, δηλαδή πρόσβαση στον δίσκο, εγώ μεγαλύτερο priority δεν θα βάλω. Αλλιώς οι μισοί θα πάρουν το filesystem στο χέρι αν τους τύχει ένα restart ή μια μπλε οθόνη. Κάνουμε πρόγραμμα για να τους βοηθήσουμε, όχι για να κάνουμε ζημιά. Όποιος θέλει ας το αλλάξει από τον task manager με δική του ευθύνη. Ίσως κάποια στιγμή το κάνω μόνο για την linux έκδοση και το logfile θα δημιουργήται αρχικά σε unformatted partition και θα αντιγράφεται στο work directory στο τέλος. Θα δούμε.

Η assembly πάντως δε σε ενοχλεί σε τίποτα. Κάθε άλλο. Πιέζεται το σύστημα περισσότερο.

Η 0.3 είναι έτοιμη κατά το 1/3. Όταν την τελειώσω και κάνω όλες τις δοκιμές θα την ανεβάσω εδώ. Αν ξεφύγει κανένα bug θα βγάλουμε και 0.31 και 0.32 αν χρειαστεί.

MrSeanKon
14-02-2005, 02:58
να σου φύγει η λύσσα. .

Αυτη η λυσσα Λουκα με εχει πιασει γιατι θελω να ξεβρωμισει ο δισκος μου απο τα κ*λοPrime95 κλπ....
Θα μου πεις ρε μαστορα μας επρηξες αφου το προγραμμα παει καλα σε Intel και τα χωνει στο Prime95 γιατι δεν παιρνεις Intel?
Δε μπορω να σου δωσω απαντηση εδω τα εχω πει αλλου δε με εξυπηρετει η Intel τεσπα θα ειναι μεγαλη η απαντηση και θα ξεφυγουμε.
Αν ξαναπαρω Ιntel αυτος θα ειναι μονο για παιχνιδι οπως εχω το Celeron τωρα.
Αλλα οπως και να το κανουμε χαιρομαι που εμπιστευομαι την τυχη του Η/Υ σε ελληνικα χερια. :beerchug:
Εχω τα Tools για να μελεταω τις παλαβομαρες μου προσωρινα με καλυπτει καπως κι ο Tester σε Α64 ε οταν ωριμασει κι αλλο τι να σου ζητησω??

Sorry αν σε επρηξα αλλα ειμαι περηφανος για αυτο που κανεις.
Δεν μπορω να εκφρασω τα συναισθηματα μου μεσω πληκτρολογιου.

emnezia
14-02-2005, 13:52
Έφτιαξα ένα απλό interface για το πρόγραμμα (σε windows) http://home.ripway.com/2004-11/212568/PI.rar

Βέβαια εννοείται πως θα είναι πιο αργό απ'ότι σε καθαρή DOS γραμμή, αλλά θα διευκολύνει πολλούς που δεν τα πάνε καλά με το DOS.
Απλά παίρνει το output του προγράμματος και αναλύει ανάλογα.

DarthMoul
14-02-2005, 14:14
Μπράβο emnezia. Ορεξάτο σε βρίσκω :)
Τα qt libraries τα έχεις ακούσει; Knowledge is Power :023:
Στείλε ένα PM στον circular. Έχει να σου πει πολλά και ενδιαφέροντα για το θέμα ;)

emnezia
14-02-2005, 14:29
Τα qt libraries τα ξέρω από το Linux και KDE αν δεν κάνω λάθος.
Το θέμα είναι ότι δουλεύω σε VisualBasic οπότε δεν νομίζω να μπορώ να τα χρησιμοποιήσω.

DarthMoul
14-02-2005, 14:40
Δουλεύουν και σε windows μια χαρά. Θα σου πει λεπτομέριες ο circular. Αν δεν ξέρει ο Κώστας θα σου πω εγώ.

MrSeanKon
14-02-2005, 15:48
Thanks vice CEO ενημερωσα την τεραστια υπογραφη ηδη. :116:
DarthMoul θελω να σε ρωτησω κατι επ' ευκαιριας μια κι εισαι μεσα κι ο circular απουσιαζει....
Καταρχας ειπες περι multimedia testing (ισως στο μελλον κλπ) για τους AMD κλπ (θυμησου το υ2υ χθες βραδυ)...
Μπορεις σε παρακαλω με απλα λογια να μου πεις καποιες γενικες ιδεες??
Μην μπεις σε εκτεταμενη αναλυση την περιεργεια να μου λυσεις μονο.
Επισης ο circular ειχε πει στην αρχη για "Ελεγχο ψηφιακων υπογραφων" pardon??
Α εχω να σου πω και κατι αλλο!
Εχω την εντυπωση οτι το προγραμμα κανει και καψιμο παραλληλα ομως περιμενω να ερθει η νεα μητρικη καλυτερα.
Αρχιζει να τρεχει Prime95 Blends FFT στα 2475MHz με ελαφρως λιγοτερο ρευμα απο τα 1.654V ενω μεχρι προτεινος δεν το ετρεχε. :026:
Το plugin του vice CEO θα με διευκολυνει μεχρι να φτιαξεις εσυ Darth ο,τι εχουμε πει.
Στην τελικη ολοι μας μπορουμε να βαλουμε κι ενα λιθαρακι στο οικοδομημα.
Να μην τα κανει ολα ενας! :109:

DarthMoul
14-02-2005, 18:21
Multimedia testing. Πχ, να πάρεις ένα wav και να κάνεις amplification. Ή να αλλάξεις την χρωματική πληροφορία σε όλα τα frames ενός avi. Όλα αυτά τα προβλήματα λύνονται με ανυσματικούς αλγόριθμους που είναι λίγο πολύ standard. Αυτή η τυποποίηση επέτρεψε και στους κατασκευαστές να εισάγουν μέσα στην cpu μικροκώδικα βελτιστοποιημένο για αυτήν ακριβώς την δουλειά. Είναι τα MMX/SSE/3dnow και τα παρακλάδια τους.

Δεν μπορώ να είμαι 100% σίγουρος ότι ο Athlon θα στριμωχτεί με χρήση SSE σε συνδιασμό με threads αλλά νομίζω πως αν χτυπήσει κάπου, τελικά θα είναι εκεί. Αντί για multimedia testing θα μπορούσαμε να κάνουμε έλεγχο ψηφιακών υπογραφών που είπε ο circular ή υπολογισμούς checksum όπως αυτός που κάνει το pctbench αν θυμάσαι. Πάντα με χρήση SSE ή 3dnow. Στο pctbench είχω χρησιμοποιήσει λιγάκι sse για το tcp/ip checksum και ήδη ετοιμάζω το συγκεκριμένο κομμάτι κώδικα για να ενσωματωθεί στον tester αλλά μην το περιμένεις αυτό πριν από την 0.4.

Πάντως ας μην είμαστε αισιόδοξοι. Η GMP χρησιμοποιεί MMX κατά κόρον αλλά ο Athlon δεν τα βρήκε σκούρα. Η άλλη εκδοχή που σκέφτομαι είναι να στερήσουμε από τον Athlon το πλεονέκτημα της γρήγορης μνήμης. Να τον υποχρεώσουμε να δουλέψει μέσα στο L1 με πολύ μικρά κομμάτια κώδικα και εξίσου μικρά data. Αλλά από την άλλη έχει το ρολοί του πολύ πιο χαμηλά από τον P4 και ίσως να μην μασήσει. Απλώς θα βγει πιο αργός.

@emnezia. Τελικά μάλλον θα χρησιμοποιούμε το plugin μέχρι να φτιάξουμε δικό μας GUI στην 1.0. Αυτό σημαίνει πως θα πρέπει να το ανανεώνεις σε κάθε version για να υποστηρίζει τις νέες παραμέτρους. Σε τι το έχεις φτιάξει;

MrSeanKon
15-02-2005, 01:55
@emnezia. Τελικά μάλλον θα χρησιμοποιούμε το plugin μέχρι να φτιάξουμε δικό μας GUI στην 1.0.

Xμ θα προτεινα τη μη χρηση του...
Η εικονα μιλαει μονη της...

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4371

To stress ετρεχε μια ωρα ενω το bench πεταξε στα τρια λεπτα λαθος.
Επισης επειδη ο emnezia διαβαζει συνεχως την εξοδο αργει το plugin και δινει ανασες στον επεξεργαστη κατι που δε θελουμε.
Βλεπετε οτι χαμηλωσα το FSB γιατι πρεπει να βρω ενα καταλληλο modded BIOS για την @@ροEpox και μεχρι να ερθει η Gigabyte εσφιξα και τα timings.

Ενδιαφεροντα αυτα που ειπες Darth!
Κατι για wav ενισχυση και τα ρεστα χμ με εφερες πισω στο παρελθον που επεξεργαζομουν δισκους βινιλυου....
Οσο για τον αναθεματισμενο τον Αθλον καπου θα τη βρουμε την ακρη θα στριμωχθει τι να γινει....
Στην αναγκη κοβω να γινεται διασπαση σε δυο προγραμματα.
Ενα για Intel (οπως ειναι τωρα) και ενα για AMD.

Aσχετα οτι σε εχω πρηξει θαρρω οτι το να φτιαξεις GUI πρεπει να ειναι απλο ζητημα? :102:
Σε Borland αν ειχα ετοιμο τον κωδικα ειναι μισης ωρας δουλεια.
Τουλαχιστον εχω μαθει κατι!
Ο emnezia το εφτιαξε σε Visual Basic.

DarthMoul
15-02-2005, 09:27
Δεν πειράζει. Θα φτιάξουμε το GUI στην 1.0 σε qt. Δεν θα έχουμε τα προβλήματα του plugin και θα δουλεύει σε X windows για όσους τρέχουν unix και κάνουν overclocking. Οι qt libraries έχουν το πλεονέκτημα ότι είναι opensources και 100% φορητές σε όλα τα λειτουργικά.

MrSeanKon
15-02-2005, 18:25
:040: Τωρα νομιζω οτι καποιος που τρεχει Unix να κανει o/c??
Λιγο τραβηγμενο τεσπα εχω να κατσω σε Unix pc απο τοτε που ημουν φοιτητης.....
Παντως βρηκα και κατι αλλο αναποδο στο plugin....
Αν για καποιο λογο κολλησει καποιο προγραμμα που τρεχεις το Benchmark συνεχιζει να τρεχει...
Γιαυτο Darth ειναι επιτακτικη η αναγκη να το κανεις GUI μετα την 0.3.
Δες την επομενη φωτο

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4376

Φαινεται οτι τρεχει μονο το ενα (μπλε μπαρα) ενω παραλληλα ειχα ανοιξει αλλα δυο (συνολικα 3 PI βλεπεις στον Task Manager).
Πεταξε καποιο απο τα αλλα δυο το μυνημα με την stack αλλα κολλησε και δευτερο.

DarthMoul
15-02-2005, 18:59
Μην πανικοβάλεσαι. Κανονικό είναι αυτό. Αφού τρέχει με 2 threads + 1 control thread + το main programma = 4 threads. Τίποτα δεν κόλλησε. Η φυσιολογική συμπεριφορά του είναι αυτή.

emnezia
15-02-2005, 21:41
Το πρόβλημα με το bench και το stress θα το διορθώσω το βράδυ! Ξέχασα να βάλω το stress να τρέχει 1Μ. Το είχα βάλει λιγότερο για να κάνω κάποια τεστ στην έξοδο του.

MrSeanKon
16-02-2005, 23:21
ΟΚ no problem παιδες εχουμε χρονο θα τα διορθωσουμε ολα.
Απλα να συντονιστειτε μεταξυ σας (DarthMoul + emnezia) οσο θα λειπω.
DarthMoul ο emnezia ειμαι εγω κατ' επεκτασιν.
Μπορεις να βασιστεις και στο Γιαννη ηδη εχει προσφερει πολλα στα projects (βλεπε Tools).
Kι ο circular θα λυσει καποιο δικο μου προβλημα γιατι εχει γινει ενα μπαχαλο με τις MDI φορμες στα Tools :093: κι επειδη σκοπευω να τα κανω ολα στην Professional Edition.
Μη συγχεεις τα O/c Tools με τον Stability Tester.
Αλλο project το ενα κι αλλο το αλλο.
Προφανως δε θα παρατησω τιποτα ειδικα τωρα που προχωρησαν τοσο μακρυα.
To κυριο προβλημα αμφοτερων μας Darth ειναι οτι δουλευουμε σε εντελως διαφορετικα περιβαλλοντα και δε μπορει να βοηθησει ο ενας τον αλλον.
Ευτυχως που υπαρχει κι ο circular στη μεση. :040:
Βεβαια ο κωδικας των Tools δε συγκρινεται σε δυσκολια με αυτον που εσυ φτιαχνεις.
Ειναι απλος θα ελεγα το μανικι του ειναι το πολυ μπλα μπλα κι οι υπερβολικες ωρες που πρεπει να τρεχω τα μαθηματικα πακετα για να βαζω μεσα τυπους, δεδομενα κλπ...
Απλα θα μπω για καποιο διαστημα σε καραντινα.

DarthMoul
17-02-2005, 19:40
Σε αυτήν την έκδοση έχουμε κάποιες αλλαγές:

1) Ο αριθμός των loops πλεον καθορίζεται με την παράμετρο -b. Για το 1M θα πρέπει να δώσετε -b 20 (2^20 = 1M).

2) Με την παράμετρο -e καθορίζεται πόσες επαναλήψεις θα τρέξουν. Για να τρέξετε το 1M πέντε φορές πρέπει να δώσετε τις παραμέτρους -b 20 -e 5.
Αν δεν δώσετε καθόλου το -e συνεπάγεται εξορισμού -e 1.

3) Η παράμετρος -p είναι όπως την γνωρίζατε. Δημιουργεί το αρχείο CPUPI.DAT με τα ψηφία του π που έχει υπολογίσει. Είναι καλύτερο να μην την χρησιμοποιήσετε σε συνδιασμό με την -e.

4) H παράμετρος -l ορίζει την δημιουργία του logfile systester.log

Τα *.rar αρχεία περιλαμβάνουν το εκτελέσιμο systester.exe και την καινούργια βιβλιοθήκη cygwin1.dll. Διαγράψτε την παλιά πριν εγκαταστήσετε την καινούργια.

Το systester.zip περιλαμβάνει τα sources.

Θα ακολουθήσουν και οι εκδόσεις 0.31 και 0.32 που θα περιλαμβάνουν τις διορθώσεις των bugs που θα αναφέρεται.

Δεν θα κάνω καμμία νέα προσθήκη χαρακτηριστικών πριν από την 0.4. Μην κάνετε τον κόπο να μου ζητήσετε τίποτα καινούργιο.

Αυτό που χρειάζομαι τώρα είναι feedback και bug reports.

DarthMoul
17-02-2005, 20:10
C:\>systester -b 20 -e 5

Εδώ είναι δύο screen captures από την εκτέλεση της παραπάνω εντολής.

MrSeanKon
17-02-2005, 20:30
OK τωρα βλεπω πιο μουρατο το προγραμμα εχει οντως αρκετουτσικες απο τις επιλογες που ζητησαμε.
Χμ για να σε ρωτησω....
Ελεγχο στο Π.Α.Τ. κανει??
Εννοω στην αρχη που υπολογιζει τις τετραγωνικες ριζες κλπ αν ανοιγουν 2 threads.

DarthMoul
17-02-2005, 20:34
Ναι. Επιπλέον έκανα την αρχικοποίηση multithreaded. Γενικότερα το πρόγραμμα είναι 1%-2% πιο αργό λόγω όλων αυτών που προσθέσαμε. Οι χρήστες P4 ίσως να μην καταλάβουν την διαφορά γιατί θα κερδίσουν από το δεύτερο thread της αρχικοποίησης.

MrSeanKon
18-02-2005, 01:13
Mια χαρα ειναι το προγραμμα.
Στις δυομιση ωρες που ετρεξα το συστημα (16Μ --> 1 περασμα, 4Μ --> 3 περασματα, 1Μ --> 39 περασματα) δεν πεταξε λαθη.
Η μονη υποδειξη που εχω να κανω ειναι να μην εκτυπωνει το μακρυναρι (σιγα τον πολυελαιο) μετα το calculating αλλα να δειχνει 1Μ, 2Μ κ.ο.κ.
Βαριομουνα να περιμενω αλλες ωρες ετσι κι αλλιως ηθελα να μπω μεσα και να ποσταρω εγκαιρα! :116:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4423

Επισης παρολο που εσφιξα τις μνημες φαινεται οτι αντεχουν.
Μια χαρα λοιπον μια και το προγραμμα ειναι πολυ καλο για AMD memory testing.
LOL εβαλα και λιγο το καλοριφερ λαδιου για να ανεβασει temps αλλα ειπαμε Katsumcooled! :116:

DarthMoul
18-02-2005, 01:17
Πρέπει να δοκιμάσεις την ευαισθησία του σε σύγκριση με άλλα προγράμματα όπως έκανες και με την προηγούμενη έκδοση. Αν και δεν νομίζω να βρεις διαφορές.

MrSeanKon
18-02-2005, 01:27
Λουκα εχω μητρικη για τα μπαζα.
Ασε να ερθει η Gigabyte και θα δουμε.
Θα κανω πιο εξαντληντικες κοντρες.
Αν και δε νομιζω κι εγω να πιασει το Prime95 στο CPU testing αλλα ειπαμε με καλυπτει για βιντεοσυμπιεσεις και Maths σε CPU.
Για μνημη ειναι ο,τι πρεπει για ΑΜD το ειπα και παραπανω το εχω πει 100 φορες κιολας!
Ας δοκιμασουν και τα αλλα μελη σε Ιντελ.

DarthMoul
18-02-2005, 01:33
Με αυτόν τον αλγόριθμο καλά είναι. Για παραπάνω θελουμε κάτι πιο γρήγορο. Θα το φτιάξω στην πορεία. Στην 0.4 ή στην 0.5.

MrSeanKon
18-02-2005, 01:50
Σημειωνω οτι ετρεχαν 3 προγραμματα μαζι (ισως καποιος να μην το προσεξει).

Darth στο site του Prime95 (http://www.mersenne.org/source.htm) εχει ενα τμημα του κωδικα του τον εχεις κοιταξει καθολου?
Τεσπα μια και πανε ολα ΟΚ προσανατολιζεσαι να αλλαξεις πληρως τον κωδικα και να μελετησουμε τα αλλα που λεγαμε στο παρελθον?
Εκει θα φανει κι αν αξιζει η μεταβαση διοτι αν ο νεος κωδικας ειναι πιο αναισθητος τοτε ειναι ανωφελο.
Πραξη θα χρειαστει.

DarthMoul
18-02-2005, 01:54
Δεν θα υπάρξει μετάβαση. Θα γίνει προσθήκη. Ούτως η άλλως ο tester κάποια στιγμη θα "γεννήσει" bench. Κανένας κόπος δεν θα πάει χαμένος

MrSeanKon
18-02-2005, 02:02
Αλιμονο δεν εννοουσα κατι τετοιο.
Φυσικα ειμαι επηρεασμενος απο το o/c μονο.
Σιγουρα υπαρχουν κι αλλα πραγματα που απορεουν απο το προγραμμα αυτο κι οχι μονο ο ελεγχος ευσταθειας.
Απλα :017: τι αλλο θα μπορουσαμε να κανουμε.....
Θα μου πεις οτι κι εγω πριν εναμισο χρονο ξεκινησα να γραφω εναν εκτιμητη να υπολογιζει το MSF του AMD XP σε ενα παραθυρο MSDOS και τωρα εχει γινει ολοκληρο πακετο κι εχει ο Θεος ακομη....

Παντως θα προτεινα στο Γιαννη να μη μπλεξει με plugin αφου το προγραμμα κανει πολλα απο αυτα που θελαμε.
Το GUI του λειπει.

emnezia
28-02-2005, 01:08
Μίλησα με τον seankon πριν λίγες μέρες και μου είπε να σου πω μερικά πράγματα
Εμείς χρησιμοποιήσαμε αναδρομική μέθοδο. Το Pifast εναλλακτικά χρησιμοποιεί σειρές με κάθε όρο του αρθροίσματος Fourier να υπολογίζει 4 δεκαδικά ψηφία.
Πάντως αν θες να δοκιμάσεις ταχύτητα σύκρινε στο 1Μ των borwein και Chudnovsky για να δεις πια συμφέρει.
Μια άλλη μέθοδος υπολογισμού του pi είναι η εξής:

(pi^2)/8 = 1 + 1/9 + 1/25 + ... + 1/(2n+1)^2 + ....

δηλαδή προσθέτεις αντιστρόφους τετραγώνων περιττών.
Προσθέτοντας μέχρι το 31^2 έχεις περίπου 1000 όρους του pi.

Πάντως και ο Sean κι εγώ πιστεύουμε πως αν αυξήσεις την ταχύτητα υπολογισμού, τότε δεν καλυτερεύεις τον υπολογισμό της ευστάθειας του επεξεργαστή. Αντίθετα ίσως και να έχεις το αντίθετο αποτέλεσμα.

MrSeanKon
07-03-2005, 22:44
Λοιπον μιλησα εκτεταμενα με το Λουκα τηλεφωνικως emnezia κι αποφασισαμε να χρησιμοποιηθει η αναδρομικη μεθοδος.
Μαλλον δεν ειναι αναδρομικη επαναληπτικη ειναι.
Ο Chudnovsky θελει πολλες πραξεις και δε λεει δινει 14 ψηφια καθε φορα ασε το PiFast του Γαλλου εχει δικες του ρουτινες και τις εχει κανει ειδικα optimized ας τα πει αυτα ο Λουκας καλυτερα τεσπα παμε παρακατω.
Επομενως θα προτεινα να ασχοληθεις με τη μεθοδο Bailey Darth μεχρι να βαλει το χερι του ο circular.
H μητρικη μου ξαναρθε και σε περιμενει.
Θελεις καποιες παραπανω υποδειξεις περι Bailey???
Αυτο που σου ειπε ο emnezia για τη νεα δυναμοσειρα το καταλαβες???
Η να κανω καποια στιγμη οταν βρω χρονο περαιτερω ποστ στον οδηγο αναφορας των Μαθηματικων????
Για τις σειρες κλπ...
Ομως να ξερεις οτι μπορει να αργησω γιατι οι δυναμοσειρες τυπου Τaylor αφορουν το pcbench κι εχω τωρα στο προσκηνιο τα Tools κλπ....
Χμ μπορουμε στο μελλον να επεκτεινουμε το system stability tester με υπολογισμο του e=2.7182 και του ln2, sqrt(2) κλπ....

DarthMoul
07-03-2005, 22:52
Θα κοιτάξω τον Bailey που είναι η πιο ενδιαφέρουσα περίπτωση (αφήνει τα λάστιχα στον δρόμο όπως είπες) μόλις καθαρίσει το κεφάλι μου. Ίσως η καλύτερη επιλογή για την ώρα είναι εκτεταμένες δοκιμές στην υπάρχουσα έκδοση με παράλληλη κατασκευή ενός qt gui για να γίνει το πρόγραμμα πιο ελκυστικό και ευπαρουσίαστο. Αυτό το τελευταίο είναι κάτι που θα το συζητήσω με τον circular.

MrSeanKon
07-03-2005, 22:56
Λουκα εχεις αποριες περι Bailey????
Αυτο θελω να μου πεις να ξερω.
Αν κοιταξεις τα προηγουμενα ποστ με 13 επαναληψεις υπολογιζει 333G ψηφια αλλα επειδη θα τρωει τοιχο η GMΡ δεν προκειται να παμε τοσο ψηλα.
Με τη σειρα για το π=3.14 του benchmark σου εχεις αποριες??

DarthMoul
07-03-2005, 23:03
Όταν θα ξεκινήσω την κατασκευή θα έχω απορίες. Ακόμα δεν έχω καμμία :)
Εννοείς απορίες για την σειρά taylor του pctbench; Όχι καμμία. Αν είχα δεν θα το έφτιαχνα :) Μην ασχολείσαι ακόμα με το pctbench. Θα το δούμε στην ώρα του.

MrSeanKon
09-03-2005, 11:38
Thanks Darth αλλα κι εγω θελω απο τη μερια μου να βοηθαω οσο μπορω βεβαια (διαθεσιμοτητα ελευθερου χρονου) γιαυτο τα ειπα παραπανω κι οχι να βγαζω την ουρα μου εξω. :)

Η μεθοδος του Borwein ειναι απλη στην υλοποιηση ενω του Bailey εχει πολυπλοκοτητα και μπολικες πραξεις κι αναρωτιεμαι κατα ποσο το τελικο αποτελεσμα θα γινεται γρηγοροτερα... :confused:
Μεν ανα βροχο εξαγει περισσοτερα δεκαδικα ψηφια αλλα το ζητημα ειναι ποσο χρονο θα κανει.
Επισης δεν ξερω κατα ποσο θα μπορεσεις να βαλεις παραπανω εξτρα κωδικα που να ζοριζει τον επεξεργαστη κλπ...
Ολα αυτα θα τα δειξει η πραξη οταν βγαλεις στον αερα τη μεθοδο αυτη και θα τη συγκρινουμε εγω κι ο emnezia στα συστηματα μας.
Με αλλα λογια θα ειναι διπλη η κοντρα Borwein vs Bailey:
Και στο χρονο αποκρισης αλλα και στο ζορισμα.....
Αρα νομιζω οτι δεν ειναι αναγκη να ασχοληθειτε με το GUI απο τωρα.....
Αφου εχουμε φθασει στο προτελευταιο σκαλοπατι ας ανεβουμε αλλο ενα και μετα θα ακολουθησει το GUI....
Τι λες?

DarthMoul
09-03-2005, 12:06
Και ο δικός μου χρόνος είναι πιεσμένος. Αν ο circular έχει χρόνο για το gui, ας ξεκινήσει. Αλλιώς θα ξεκινήσω εγώ την επέκταση μόλις πάρω ανάσα.

MrSeanKon
15-03-2005, 00:54
Στην επομενη εικονα....
5.5 ωρες περιπου.....
Επειδη προγραμματιζα και στη Borland δεν εβαλα πολλα δεκαδικα ψηφια...
Νομιζω οτι ειναι ΟΚ το προγραμμα βαριεμαι να το ξαναδοκιμαζω.....
Θα περιμενουμε οταν βγαλεις τη νεωτερη εκδοση..... :077:

http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4969

Σημειωνω οτι τα ορια του επεξεργαστη με το Prime95 ειναι τα 2475MHz με το δεδομενο Vcore.

DarthMoul
15-03-2005, 01:39
Αυτό σημαίνει πως το Prime95 είναι πιο ευαίσθητο; :017:

schumifer
15-03-2005, 06:54
Τώρα βέβαια ίσως ξεπερνάω τα όρια ποστάροντας εδώ ,αλλά το prime ιδιαίτερα σε AMD 64 νομίζω ότι έχω ξαναδιαβάσει ότι παραείναι ευαίσθητο. Ο μέτριος σε υπερχρονιστική δυνατότητα 2000+ μου είναι στα 2200(1.9 βολτ) 100% 24/7 μήνες τώρα και ήδη είμαι 50-60 ΜΗΖ πάνω από τη μέγιστη που αντέχει το s&m και ίσως 100 ή και παραπάνω από τη μέγιστη σταθερή συχνότητα που αντέχει το Prime. Μήπως ήρθε η ώρα για ένα πρόγραμμα σαν το δικό σας που να μην είναι απλά μια ένδειξη ότι το σύστημα αντέχει και λίγο ως αρκετά ακόμη?

MrSeanKon
16-03-2005, 15:54
Κυριοι τα εχω πει εκει (http://www.pctechnology.gr/vbull/vb/showpost.php?p=63995&postcount=7)....
Oλο το thread θα βρειτε εδω (http://www.pctechnology.gr/vbull/vb/showthread.php?t=6451)
Eπομενως μεχρι να βγαλει νεωτερη εκδοση ο Darth ή να βελτιωσουν τη GMP δεν προκειται να αλλαξει κατι στην κοντρα Prime95 vs System Stability Tester (στο CPU τμημα).


Darth οριστε κι αυτο που ζητησες.
Αν και ειχε απαντηθει αυτο εκει (http://www.pctechnology.gr/vbull/vb/showthread.php?t=5144&page=6&pp=20)

Δεκαδικα ψηφια ανα βροχο της Bailey
http://www.pctechnology.gr/vbull/vb/attachment.php?attachmentid=4988

Ρωτησε αν κατι δεν καταλαβαινεις γιατι εχω μπλεξει ασχημα με τα φακTools και με βλεπω να τα :067: ΒΑΝ και να γινουν ξανα σε MSDOS.... :043: :012:

1Κ=1024, 1Μ=1024*1024

DarthMoul
18-03-2005, 02:07
Προσπαθώ να φτιάξω τον Bailey σε ansi C χωρίς GMP για να μελετήσω λιγάκι τον αλγόριθμο. Στο jpeg που έχεις μέσα στο rar, στην δεύτερη γραμμή στο τέλος, έχει μια ύψωση στο 2y-1+n. Δεν βγαίνει νόημα.

Χρειάζομαι και έναν πίνακα με τα περιεχόμενα των y, a, α και β για τους τρεις πρώτους βρόγχους αν είναι εύκολο.

MrSeanKon
18-03-2005, 12:21
Θες να σου γραψω κατευθειαν σε C τον αλγοριθμο?
Φυσικα μετα απο δυο επαναληψεις θα συγκλινει μια κι η ακριβεια θα εχει ξεπεραστει.
Λοιπον θα προσπαθησω σημερα ή αυριο και θα σου απαντησω

DarthMoul
18-03-2005, 12:43
Τον έχω έτοιμο. Μόνο με αυτό το 2y-1+n δεν βγάζω νόημα. Αν είναι να ξεκαθαρίσει αυτό το ζήτημα, γράψτον να δω τι ακριβώς γίνεται.

MrSeanKon
18-03-2005, 13:27
Λουκα αυτο σημαινε 2*Υn-1 δηλαδη πολλαπλασιαζεις με τον διπλασιο του προηγουμενου ορου του Υn.

ΟΚ τωρα εχεις αποριες?

DarthMoul
18-03-2005, 13:35
Ok...Thanks...Θα δω στην πορεία αν έχω άλλη απορία και θα σου πω.

MrSeanKon
18-03-2005, 13:59
42 hits εχει η τρεχουσα εκδοση....
Παντως θα περιμενω εναγωνιως τη νεα εκδοση για να δουμε πως θα παει το στριγμωμα στην αναθεματισμενη :067: AMD...
Mε τρεις επαναληψεις θα τερματισει η ANSI C. :040:
Οντως λιγο πικρα ο τυπος ε?
Σιδηροδρομος αλλα αμα θα σου παρεχει δυνατοτητες να κανεις καλυτερα κολπα πιστευω να αξιζει....
Κοιταξα και στο Δικτυο μπας και υπαρχει κατι αλλο στην ιδια φιλοσοφια αλλα δε βρηκα κατι.....

DarthMoul
18-03-2005, 15:45
Υπάρχει και αλγόριθμος 43% πιο γρήγορος από τον Bailey. Πάντως τώρα που τον μελετάω αρχίζω να έχω αμφιβολίες. Θα δούμε την πράξη. Αν δεν μας ικανοποιήσει θα βρούμε άλλον :)

Το στρίμωγμα της AMD εξαρτάται από την GMP. Εδώ είναι το roadmap. Μάλλον θα περιμένεις κανέναν χρόνο ακόμα:

Future releases

4.2 will probably be released in early 2005. It comes with an improved configuration system, and several functional improvements and some speed improvements.

5.0 is planned for 2006. This release will make all functions of GMP sub-quadratic, including gcd, gcdext, plain division (last cases), exact division, modular computation (by means of redc), etc. The mpn layer will be extended to be much more complete, and mpz will as a result become simpler. More complete list:





An extended mpn layer with a^b mod c, redc, and many other functions currently only available in mpz, or not available in GMP at all.
Much faster multiplication assembly loops for many machines, by means of "overlapped software pipelining". Since these loops are basic GMP building blocks, all higher level operations are affected. Flow chart (http://www.swox.com/gmp/mb-4wssp.png) outlining the principles.
Faster huge operands multiplication by means of improved FFT code.
Faster small operands division by means of multi-limb divisor inverse approximations.
Asymptotically faster division by means of Newton inverses and Barrett's algorithm.
New user-visible mod and division routines for invariant divisors.
New user-visible multi-limb routines for invariant multiplicands.
Sub-quadratic gcd, extended gcd, redc, exact division.
Improved allocation scheme for library-internal temporaries. This will streamline things, and avoid allocating huge amounts of memory on the stack, but also reduce overall temporary allocation.
Improvements for better caching effectiveness. (In assembly code, in operands splitting strategies, and in temporary allocation.)
Support at the mpn and mpz levels for operands of up to 2^56 bits (on 64-bit machines). Current limits are: on 32-bit machines, 2^31 bits; on 64-bit machines, 2^37 bits.
Pending vendor sponsorship: new assembly support for AMD64, improved assembly support for POWER4, POWER5, PPC970, Alpha, SPARC, Itanium.

MrSeanKon
18-03-2005, 20:17
Ποιος αλγοριθμος ειναι αυτος Darth?
Εχεις link??
Επαναληπτικη μεθοδος ειναι? :108:

DarthMoul
18-03-2005, 21:18
Bellard λέγετε. Ανακαλύφθηκε το 1997, έναν χρόνο μετά τον Bailey

http://64.233.183.104/search?q=cache:5qVHljODgOIJ:www.andrews.edu/~calkins/physics/Miracle.pdf+43%25+bailey+pi&hl=el
http://fabrice.bellard.free.fr/pi/

MrSeanKon
18-03-2005, 21:22
Ας δοκιμασουμε πρωτα τον Bailey και θα δουμε... :040:
Με το μαλακο μικρα βηματα μην σπασουμε τα μουτρα μας!
Ετσι κι αλλιως το προγραμμα ειναι αρκετα καλο το μονο μειον που βλεπω ειναι το σπα***δικο interface του κι αμφιβαλλω αν μπορεσετε να το κανετε κυριλε σε QT....
Τεσπα απο τις αρχικες απογοητευσεις που ειχαμε στα πρωτα posts που ψαχνομασταν εχουμε βρει την ακρη του κουβαριου κι αρχιζει να ξετυλιγεται.

DarthMoul
18-03-2005, 21:23
Δοκίμασε τον στο Mathematica να δεις τι χρόνους κάνει και πες μας.

MrSeanKon
18-03-2005, 21:29
Εννοεις να βαλω τη Borwein αλλα και τη Bailey να φανε τα μουστακια τους? :108:
Και να δουμε με το συγκεκριμενο προγραμμα ποια παει καλυτερα??
Ναι αυτο το ειχα σκεφθει οποτε θα ητανε μια καλη ενδειξη για το πως μπορει να πανε τα πραγματα....
Απο επομενη εβδομαδα ομως τωρα ψαχνομαι αλλου...

DarthMoul
19-03-2005, 14:35
Σήμερα άνοιξα το source tree της 0.4. Οι επιλογές στον bailey θα είναι δύο. Η μία για υπολογισμό 2Μ και η άλλη για υπολογισμό 64M.

Θα χρειαστώ έναν πίνανα με τις τιμές των a, y, α και β για τους τρείς πρώτους βρόγχους ώστε να μπορέσω να κάνω validation.

Πηγαίνει σαφώς καλύτερα από τον borwein, οπότε δεν χρειάζεται η δοκιμή στο Mathematica. Στα 2Μ υπολογίζω πως o bailey θα κάνει το 1/3 του χρόνου που χρειάζεται ο borwein.

Αντιμετωπίζω σοβαρό πρόβλημα με τις νιοστές ρίζες. Η GMP δεν έχει συνάρτηση για να κάνω ύψωση σε πραγματικό :( Το 2^(1/5) που έχει ο τύπος και κάτι άλλα τέτοια κόλπα πρέπει να τα φτιάξουμε εμείς.

MrSeanKon
19-03-2005, 16:05
E δεν εχω αναπτυξει τη μεθοδο που βγαινουν αυτα τα ***** στον Οδηγο Μαθηματικων???
Διαλεγεις καταλληλη συναρτηση και βγαινει ο επαναληπτικος τυπος...
Mπορεις να τα δεις εκει (http://www.pctechnology.gr/vbull/vb/showthread.php?t=1988&page=2&pp=20)
Kαταρχας γιατι δεν βαζεις και ενδιαμεσες τιμες?
Με 11 βροχους μπορει να υπολογισει 8Μ ψηφια τουλαχιστον....
Γιατι ισως θελει πολυ μνημη και ***** δε θα τρεχουν τα 64Μ....

DarthMoul
19-03-2005, 16:23
Η GMP μου δίνει τετραγωνική ρίζα και ύψωση σε ακέραια δύναμη. Κανένας τρόπος για να υπολογίζω πέμπτες ρίζες εύκολα υπάρχει; :017:

MrSeanKon
19-03-2005, 16:36
Αφου γραφω εκει

" Για να βρουμε την τετραγωνικη ριζα ενος αριθμου f θα χρησιμοποιησουμε τη συναρτηση g(x)=x^2-f.
Ετσι η σχεση ειναι αυτη που δειχνει η ογδοη φωτο."

Επομενως βαζοντας την g(x)=x^5-f θα βρεις αυτο που θελεις ομως εχω ενα κεφαλι καζανι και δεν μπορω να τα υπολογισω τωρα υπολογισε τα δεν ειναι δυσκολο το εχω ριξει στα Tools..... :025:

DarthMoul
22-03-2005, 18:00
Το πρόβλημα με την πέμπτη ρίζα το έλυσα με newton/raphson αλλα χτύπησα τοίχο. Σε 64 bits περιβάλλον η πέμπτη ρίζα στον υπολογισμό του y χτυπάει NaN στο τρίτο loop. Το ίδιο κάνει στα 32 bits στο δεύτερο loop. Δεν ξέρω αν είναι bug της GMP ή απλά φτάσαμε στο όριο της, αλλά μου τινάζει τα πάντα στον αέρα :( Μάλλον η μέθοδος παραείναι βαριά για συμβατικό μηχάνημα με συμβατικό software. Θα δοκιμάσω από περιέργεια σε ένα SuperDome που έχω πρόσβαση να δω τι κάνει και εκεί, αλλά μάλλον αυτό δεν θα έχει πρακτική αξία για το project.

MrSeanKon
22-03-2005, 18:04
:017: Γιατι αραγε να βρηκε τοιχο?
Τουλαχιστον οπως ειδες με τον πινακα τιμων που σου εδωσα στην προηγουμενη σελιδα στους 3 βροχους θελει 31 δεκαδικα ψηφια αρα ειναι νωρις ακομη....
Μαλλον κατι αλλο παιζει τωρα αν ειναι καποιο υπουλο λαθος στην ιδια τη GMP μεσα ή εχεις κανει κατι το οποιο δεν εχεις βρει ακομη οπως παλιοτερα ειναι πικρα να ψαχνεις ενα σωρο σχεσεις.....
Καταλαβαινω και παρακαταλαβαινω το δυσκολο του εργου εχω εδω και 4 μερες χαθηκα μεσα στις φορμες για να βγουν τα interfaces..... :087:

DarthMoul
22-03-2005, 18:14
Έκανα ένα spreadsheet στο KCalc με όλους τους υπολογισμούς για να κάνω validation στο πρόγραμμα και δεν βρήκα κανένα λάθος :017:

Το NaΝ είναι διαίρεση με το μηδέν. Καμμιά κρυφή στρογγυλοποίηση μου μυρίζει αλλά άντε να την βρεις τώρα.

MrSeanKon
22-03-2005, 18:19
Εχεις δικιο....
Θα μηδενιζεται ο παρονομαστης=ολοκληρο μακρυναρι καπου και πεταει λαθος...
Αφησε το να παγωσει καμμια εβδομαδα κοιταξε ο,τι αλλο εκτος απο αυτο κι επανερχεσαι δριμυτερος....
Τωρα που κοιταξα λιγο τη μεθοδο του Fabrice Bellard ειδα οτι ειναι σειρα....
Το ποσο θα μας εξυπηρετησει (τσιτωμα) ειναι αλλο ζητημα....
Για benches σιγουρα θα κανει...

Κουτσομπολιο
Ο Stelaras στον Prescott που εχει (υδροψυκτος ειναι) ειναι 100MHz παρακατω με τον System Stability Tester απο οτι τον αφηνει το Prime95.
Να λοιπον ενα δευτερο δειγμα οτι το προγραμμα κανει θραυση στους Intel. :001:
Βεβαια δεν εχει ποσταρει ακομη γιατι ψαχνεται LOL τι να βρει ομως :106: τεσπα μου τα ελεγε στο MSN προχθες.

DarthMoul
22-03-2005, 18:35
Εγώ βλέπω πως στις νιοστές ρίζες η GMP είναι χελώνα. Και αυτό δεν είναι μόνο δικιά μου διαπίστωση. Στο forum της GMP οι χρήστες παραπονούνται πως ο κώδικας του x^(1/n) είναι naive, δηλαδή αφελής. Δουλεύει μεν με newton raphson, αλλά δεν έχουν κάνει καθόλου optimization. Μόνο για τους Itanium δουλεύει γρήγορα γιατί εξυπηρετεί ο αλγόριθμος την αρχιτεκτονική.

Όταν βρω το bug έχω να αντιμετωπίζω και αυτό. Αλλιώς ο bailey θα είναι πολύ πιο αργός από τον borwein. Θα δούμε.

ΥΓ. Φυσικά και κάνει θραύση στους Intel. Αφού η Intel βάζει το χέρι της σε αυτά τα projects (εννοω την GMP) για να βοηθήσει τους επεξεργαστές της. Όταν αποφασίσει να ξυπνήσει και η AMD, θα έχουμε και εκεί το ίδιο αποτέλεσμα.

Stelaras
22-03-2005, 21:21
Εχεις δικιο....
Κουτσομπολιο
Ο Stelaras στον Prescott που εχει (υδροψυκτος ειναι) ειναι 100MHz παρακατω με τον System Stability Tester απο οτι τον αφηνει το Prime95.
Να λοιπον ενα δευτερο δειγμα οτι το προγραμμα κανει θραυση στους Intel. :001:
Βεβαια δεν εχει ποσταρει ακομη γιατι ψαχνεται LOL τι να βρει ομως :106: τεσπα μου τα ελεγε στο MSN προχθες.
Δεν ειναι τοσα τελικα . Περιπου στα 2FSB το εντοπιζω (32 Μhz δηλαδη). Το πλεονεκτημα του stability tester ειναι οτι ειναι οτι θελεις λιγοτερο χρονο για να διαπιστωσεις που εισαι σταθερος . Μεσα σε μιση ωρα, ξερεις τι γινεται με το CPU σου .
Eχετε κανει πραγματικα πολλη καλη δουλεια !

MrSeanKon
22-03-2005, 21:33
:040: Δεν ξερω τι τελικα σου συμβαινει αυτα μου ειχες πει οποτε τα μετεφερα.
Aν προσεξες καλα τα posts στο αλλο thread εδω τα links (http://www.pctechnology.gr/vbull/vb/showpost.php?p=75664&postcount=210) ο CeleronD φαινεται να πατωνει κατα 3MHz με το συγκεκριμενο προγραμμα εναντι των Prime95, Stress Prime 2004 στο CPU ελεγχο.
Δυστυχως οπως ειπε κι ο Darth το προβλημα ειναι οτι η AMD κραταει κρυφα τα χαρτια της.....
Αλλιως θα ειχε κι εκει την αναλογη επιτυχια το προγραμμα τεσπα για ελεγχο μνημης τον στριμωξε....
Ισως Darth στριμωχθουν περισσοτερο οι διπυρινοι A64..
Που θα παει θα τους πιασουμε.... :117:

DarthMoul
23-03-2005, 17:57
Επειδή κοντεύω να χαζέψω με τον borwein και τα division by zero που μου πετάει η GMP, υπάρχει περίπτωση να βρούμε τα περιεχόμενα των a και y για τους τρεις πρώτους βρόγχους;

MrSeanKon
23-03-2005, 17:59
Δηλαδη θελεις τις ακριβεις τιμες των παραμετρων αυτων???
Και με ποσα δεκαδικα ψηφια??
Να βαλουμε 40??
Γιατι μεχρι 31 βρησκει σωστα στα πρωτα τρια περασματα οποτε δεν εχει και νοημα να βαλουμε 400...

DarthMoul
23-03-2005, 18:00
Και 12 ψηφία μου φτάνουν. Validation θα κάνω.

MrSeanKon
23-03-2005, 18:06
ΟΚ τοτε εγω θα βαλω σταθερη precision και θα σου δωσω τις παραμετρους σε ενα πινακα.
Παντως για 4 βροχους αν ξαναγινει καποιο λαθος θα ειναι λιγο πικρα γιατι πως να ανεβασω πινακα με 167 ψηφια.....
Βεβαια υπαρχει και η λυση να τα βαλω σε αρχεια *.txt.
Δωσε μου ομως λιγες μερες γιατι εχω ανοιξει πολλα μετωπα.
Θα προσπαθησω να κανω οτι το καλυτερο....
Ισως κανω και για 5 βροχους ασχετα αν βγουν 848 ψηφια αλλα θα δουλεψει το cut and paste.
Δεν σου υποσχομαι αυτο παντως επι του παροντος θα δουμε αν χρειαστει.

DarthMoul
23-03-2005, 18:09
Ok...Εγώ θα λείπω το τριήμερο και θα επανέλθω την δευτέρα οπότε δεν θα τα χρειαστώ.

MrSeanKon
23-03-2005, 22:13
Στην πρωτη φωτο σου ξαναδειχνω τον τυπο του Bailey.
Προσεξε οτι η αριθμηση ξεκιναει απο το μηδεν οχι μονο στον τυπο αυτο αλλα και στα αποτελεσματα που εξαγονται στην συνεχεια.
Η δευτερη φωτο δειχνει την παραμετρο Y μετα το περας του πρωτου βροχου με ακριβεια 17 δεκαδικων ψηφιων.
Η τριτη φωτο --> περας δευτερου βροχου με 37 δεκαδικα ψηφια.
Η 4η δειχνει την ιδια παραμετρο μετα απο αλλον ενα βροχο με 180 δεκαδικα ψηφια.
Η αναποδη καθετος σημαινει οτι συνεχιζεται η εξοδος στην επομενη γραμμη αλλα μαζεψα το παραθυρο γιατι αλλιως δεν γινονταν 600Χ600 οι φωτογραφιες.
Η 5η φωτο δειχνει την παραμετρο a me 17 δεκαδικα ψηφια.
Η 6η με 37 δεκαδικα ψηφια επισης.
Και τελος η 7η με 180 ξανα.
Επιτηδες εβαλα αυτα τα νουμερα για να ξανακοιταξεις τον πινακα που σου δινει τα δεκαδικα ψηφια ανα βροχο.
Ελπιζω να μην εχεις κανει καποιο λαθος στην εξαγωγη του Newton Raphson τυπου για την 5η ριζα ενος αριθμου.

DarthMoul
23-03-2005, 22:28
Και το δικό μου πρόγραμμα βγάζει ακριβώς τα ίδια μέχρι το δεύτερο loop. Μετά επιστρέφει NaN :( Κανονικά το a δεν θα έπρεπε να συγκλίνει με το π;

MrSeanKon
23-03-2005, 22:42
To 1/a ισουται με π....
Μηπως εχεις κανει καποιο λαθος στον τυπο της Newton Raphson??
Μπορεις να μου τον ποσταρεις (για την 1/5)...

DarthMoul
23-03-2005, 22:44
Ο Newton Raphson είναι μια χαρά. Θα το βρω μην ανησυχείς. Ευχαριστώ για την βοήθεια, αλλιώς δεν θα έβγαζα άκρη.

MrSeanKon
23-03-2005, 22:56
Τωρα εχω απορια.....
Πως θα βγαλεις ακρη???
Τι βοηθεια πηρες?? :047:

DarthMoul
23-03-2005, 23:05
Το mathematica δεν μπορεί να κάνει λάθος. Άρα έχω λάθος εγώ στον υπολογισμό του y(n). Το οποίο είναι ένας από τους 14 τύπους. Άρα δεν χρειάζεται να ξαναψάξω τους υπόλοιπους 13 ;)

schumifer
24-03-2005, 01:28
Κάποτε οι διάλογοι αυτοί καθώς και τα μηνύματα που πιθανόν να έχετε ανταλλάξει πρέπει να δημοσιοποιηθούν αυτούσια και συγκεντρωμένα για να βλέπει ο κόσμος πού μπορούν να φτάσουν 2 ΜΟΝΟ μυαλά με λίγη συνεργασία και το λίγο χρόνο που τους απομένει.

SeanKon μην ανησυχείς το ποστ αυτό θα αυτοκαταστραφεί σε μια δύο μέρες ...

MrSeanKon
24-03-2005, 01:49
διοτι ειναι μια καλη κινηση.
Ειναι ενας διαφορετικος τροπος να εκφρασεις τα αισθηματα σου απεναντι μας κι οχι με τη συνηθισμενη οδο.
Ετσι κι αλλιως μας χρειαζονται τονωτικες ενεσεις αλλα οχι να το παρακανουν.
Το προγραμμα ξεκινησε απο καποιες ιδεες που ειχα ο Λουκας βεβαια τραβαει το μεγαλο ζορι κι εγω τον βοηθω ελαχιστα.
Αν διαβασεις απο την αρχη το thread (ειναι οντως τεραστιο) θα δεις το ρολο μου.
Η μονη μας ηθικη ανταμοιβη ειναι να βρει το προγραμμα αυτο οπως και τα υπολοιπα που φτιαχνουμε ευρεια ανταποκριση.
Χρηματα δεν κερδιζουμε.
Κανουμε το χομπυ μας.
Χαιρομαι που γνωριστηκα και συνεργαζομαι με το Darth καιτοι ειμαστε διαφορετικοι!
Δεινος προγραμματιστης ο Darth παλαβοAMDας εγω παντρεψαμε τις γνωσεις για το κοινο οφελος.

Οσο για την κοντρα μεταξυ Bailey και Borwein εδειξε οτι η Borwein καιτοι δινει λιγοτερα ψηφια ανα βροχο (απο ενα σημειο και μετα) ειναι ομως πολυ γρηγορη.
Η Bailey μεθοδος δεν εχει πρακτικη αξια μονο θεωρητικη θα ελεγα.
Αυξανουν γεωμετρικα τα ψηφια ανα βροχο αλλα κι ο χρονος εκτελεσης παει Diracοειδως προς τα πανω...
Τζαμπα λοιπον ασχοληθηκαμε συνεπως προτεινω να ασχοληθουμε με κατι αλλο αργοτερα οσο το QT GUI αργει.
Δεν ανεβασα ενα σωρο φωτο δεν ειχε και νοημα να δειξω μπολικα captures.

DarthMoul
24-03-2005, 23:06
O bailey έχει σαφώς λιγότερες πράξεις αλλά είναι πιο αργός για τεχνικούς λόγους. Οι νιοστές ρίζες στην GMP είναι πολύ αργές για τους λόγους που εξήγησα παραπάνω. Έχει κοιτάξει κανείς τον αλγόριθμο του pi fast;

MrSeanKon
01-04-2005, 18:56
Τεσπα τα ειπαμε αυτα στο MSN τις προαλλες DarthMoul ειδομεν.

circular τα ειπαμε και τηλεφωνικα επιτελους πρεπει το προγραμμα αυτο να μπει στη θεση που του αρμοζει κι οχι να μου σκοτιζονται καθε τοσο τα ***** με το γυφταριο=Pathfinder.
Επομενως αφου μας εχεις υποσχεθει οτι στις επομενες ημερες οτι θα φτιαξεις την GUI εκδοση ανεβασε την στο official site των O/c Tools (οπως ειχαμε συζητησει) και να την λαμβανουν απο εκει οι χρηστες.
Προτεινω να ανεβαζει εκει κι ο DarthMoul το pcbench (μια και θα διαφημιστει το site στο εξωτερικο) τεσπα πειτε τα μονοι σας και κανονιστε τα αυτα ειναι δικα σας θεματα αρκετες σκοτουρες εχω στο κεφαλι.
Hit counter για τα προγραμματα μην ξεχασεις circular (αυτο μας ενδιαφερει παρα πολυ).
Φυσικα πριν ανεβασεις την τελικη εκδοση δε θα τη μοιρασουμε στο ευρυ κοινο.
Θα μας ειδοποιησεις με sms (εμενα) να μπω και να την κατεβασω και να σου πω αν χρειαζεται τιποτα να αλλαξει ή να προσθεσεις κατι αλλο κλπ.
comboboxes θα εχει και selected items ενα κουμπι FIRE κι ενα STOP.
Aμα θελεις να βαλεις μπιχλιμπιδια βαλε ο,τι σε φωτισει ο Γιαραμπης.
Eπισης το sticky thread που εχεις ανοιξει για το pcbench και κανεις εσυ τις ανακοινωσεις μετονομασετο και να δινεις κι εκει τα links για τον System Stability Tester.

Kαποιες συντομες οδηγιες:
1) Ο αριθμός των loops πλεον καθορίζεται με την παράμετρο -b. Για το 1M θα πρέπει να δώσετε -b 20 (2^20 = 1M).
2) Με την παράμετρο -e καθορίζεται πόσες επαναλήψεις θα τρέξουν. Για να τρέξετε το 1M πέντε φορές πρέπει να δώσετε τις παραμέτρους -b 20 -e 5.
Αν δεν δώσετε καθόλου το -e συνεπάγεται εξορισμού -e 1.
3) Η παράμετρος -p είναι όπως την γνωρίζατε. Δημιουργεί το αρχείο CPUPI.DAT με τα ψηφία του π που έχει υπολογίσει. Είναι καλύτερο να μην την χρησιμοποιήσετε σε συνδιασμό με την -e.
4) H παράμετρος -l ορίζει την δημιουργία του logfile systester.log
Ριξε και μια ματια στα προηγουμενα posts εχω κανει ενα σωρο screen captures.
Aμα κατι δεν καταλαβεις ριξε post και τηλεφωνο να μπω να το δω.

DarthMoul δεν ξερω τι παιζει αλλα το *.log file τα βγαζει τα αποτελεσματα σε μια γραμμη σαν μακαρονι.
κατεβασε το *.rar και θα καταλαβεις.
Eχω βαλει μεσα 2 log files.
Το πρωτο ειναι αυτο οπως δημιουργειται ενω το δευτερο ειναι αυτο που δημιουργησα εγω πατωντας enter στο τελος καθε βροχου.
Το Office XP το εμφανιζει κανονικα το *.log file ενω το NotePad εμφανιζει κατι κουτακια.
Δεν ξερω ποιον χαρακτηρα εκτυπωνεις για να αλλαζει γραμμη.
Με την fprintf(file_handler,"κειμενο","\n) δε θα υπηρχει προβλημα μια κι αυτη χρησιμοποιουσα συνεχως στις εκδοσεις των O/c Tools.

DarthMoul
01-04-2005, 19:10
Το unix βάζει μόνο LF στο τέλος της γραμμής. Το DOS και τα Win θέλουν LFCR. Η έκδοση του tester που χρησιμοποιήτε εσείς στα Win είναι Cygwin, δηλαδή unix system call emulator για Windows. Άρα όλα τα outputs είναι σε unix format και όχι σε DOS.
Μπορεί να φτιαχτεί πολύ εύκολα με την προσθήκη ενός fprintf(fp,"%c",13).

MrSeanKon
02-04-2005, 22:04
Καλως να το βαλετε αυτο Darth στην GUI εκδοση για να μη μας σκοτιζει...
Δεν ξερω αν εχει να ρωτησει κατι ο circular... :050:
Tα comboboxes με ενδιαφερουν τι αλλο θα βαλετε ειναι δικη σας δουλεια.
Η εξοδος circular θα ειναι σε editor μεσα στο προγραμμα?
Οπως ο Rich Editor της @@ροΒorland??