14.09.2011, 09:18
(Dieser Beitrag wurde zuletzt bearbeitet: 14.09.2011 09:42 von Lucki.)
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Primzahlen finden
(14.09.2011 08:04 )jg schrieb: Das ist jetzt aber geschummelt! Du parallelisiert die 1000 Durchläufe zur Berechnung der Primzahlen, nicht den einzelnen Berechnungs-Algorithmus selber.
Ja richtig, die äußerste Schleife ist doch nur dazu da, die Berechnung 1000 mal zu wiederholen, um damit die Zeitdauer, die man sonst nur auf 1 ms genau erhalten hätte, genauer auflösen zu können.
Und in den inneren For-Schleifen geht die Parallelisierung nicht, da die Strukturen Shift-Register enthalten.
Bei der Androhung von Gerd:
Zitat:Wenn ihr mir jetzt alle auf die Pelle rückt, muss ich mein VI wohl mal auf MultiCore trimmen - bisher läuft es nur auf einem CPU-Kern
handelt es sich möglicherweis nur um einen Bluff, um uns Angst zu machen . Denn bei jedem Finden einer neuen Primzahl werden ja immer die vorangegangenen Ergebnisse verwendet - darauf beruht ja gerade die Schnelligkeit des Codes. Ein Paralleles Arbeiten kann ich mir da schwer vorstellen.
zu Hartz IV: Entschuldigung, der Scherz war von mir, und ich hatte hatte vergessen, diesen emotikonmäßig als solchen zu kennzeichnen, so daß daraus unversehens Ernst wurde. Aber ob mit oder ohne Kennzeichnung: mit meinem Humor habe ich nicht immer ein glückliches Händchen, und das hier ist wohl auch eher schief gegangen.
Übrigens: 1990 war ich ein Jahr arbeitslos, und in dieser Zeit hatte ich Labview im Selbtstudium gelernt.
|
|
|
14.09.2011, 13:57
(Dieser Beitrag wurde zuletzt bearbeitet: 14.09.2011 14:21 von GerdW.)
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Primzahlen finden
Hallo Lucki,
Zitat:Bei der Androhung von Gerd:
Wenn ihr mir jetzt alle auf die Pelle rückt, muss ich mein VI wohl mal auf MultiCore trimmen - bisher läuft es nur auf einem CPU-Kern
handelt es sich möglicherweis nur um einen Bluff, um uns Angst zu machen Big Grin. Denn bei jedem Finden einer neuen Primzahl werden ja immer die vorangegangenen Ergebnisse verwendet - darauf beruht ja gerade die Schnelligkeit des Codes. Ein Paralleles Arbeiten kann ich mir da schwer vorstellen.
Nein, das war kein Bluff. Da sollte durchaus das Aufbohren auf 2 CPU-Kerne möglich sein, wenn man parallel 2 "benachbarte" Zahlen siebt und somit (vorher) 2 Iterationen nun in einer erledigt. Aber man sollte dafür schon die DataValueReferences benutzen...
@Jens:
Wenn du in deinem VI noch die ExpressionNode gegen echtes G austauscht, kannst du nochmal ~5% rausholen (2x²+2x = (2x+2)*x = 2*(x+1)*x)...
|
|
|
14.09.2011, 14:42
(Dieser Beitrag wurde zuletzt bearbeitet: 14.09.2011 14:44 von BNT.)
|
|
|
14.09.2011, 19:30
|
rasta
LVF-Gelegenheitsschreiber
Beiträge: 245
Registriert seit: Oct 2006
LabVIEW 2009-2017
2006
EN
53909
Deutschland
|
RE: Primzahlen finden
(14.09.2011 08:04 )jg schrieb: (14.09.2011 07:25 )rasta schrieb: Hallo Lucki,
Dein vi dauert auf meiner privaten Stromspar-CPU ~18ms.Daraufhin habe Ich die "Configure Iteration Parallelism" - Möglichkeit
der For-Schleife benutzt und zumindestens auf meinem Rechner interessante Ergebnisse erhalten.
1.) Auto Core mit Configure Iteration Parallelism -- ~ 3,8ms
2.) Single Core -mit Configure Iteration Parallelism -- ~7,5ms
3.) Single Core-ohne Configure Iteration Parallelism -- ~18ms
Außer dieser For-Schleifenänderung ist es immer noch Dein Code.
Gruß
Ralf
Das ist jetzt aber geschummelt! Du parallelisiert die 1000 Durchläufe zur Berechnung der Primzahlen, nicht den einzelnen Berechnungs-Algorithmus selber.
Gruß, Jens
Jens,
ich schummele doch nicht , ich hätte lediglich den Off-Topic Hinweis setzten sollen.
Mir ging es um die (für mich) interessanten Ergebnisse Vergleich Nr 2.) mit Nr.3)
Im Task-Manager ist bei beiden 1 Kern voll ausgelastet, jedoch 2.) Faktor ~2,4 schneller als Nr.3)
Warum?
Vielleicht hat ja jemand eine Antwort..
Gruß Ralf
|
|
|
19.01.2012, 10:17
|
Hook1986
LVF-Gelegenheitsschreiber
Beiträge: 149
Registriert seit: Jan 2012
2010
2011
DE_EN
Deutschland
|
RE: Primzahlen finden
(14.09.2011 09:16 )jg schrieb: Anbei eine kleine Optimierung von Lucki's VI. Die Anzahl der Durchläufe der FOR-Loop lässt sich deutlich minimieren.
Auf einem i7 920 gewinne ich damit ca. 1 ms (9,2 ms zu 10,2 ms).
Dafür hast du das Ergebnisarray aber auch ein wenig zu klein dimensioniert. Es fehlen knapp 7000 Werte (bei 1000000 durchläufen).
MfG Carsten
|
|
|
19.01.2012, 21:25
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Primzahlen finden
Oh, da hast du Recht. Da habe ich mir zu sehr auf die Aussage von GerdW verlassen.
(09.09.2011 21:44 )GerdW schrieb: Wikipedia (in den 60er/70er Jahren war da ja noch nicht dran zu denken) ist da sehr hilfreich: Anzahl der Primzahlen bis x ~= x/ln(x). Ist eine gute Abschätzung, um Speicher zu reservieren, in dem die Ergebnisse abgelegt werden...
Naja, das ist die Gelegenheit, gleich mal den Formelknoten rauszuschmeißen.
Primzahl4.vi (Größe: 18,98 KB / Downloads: 381)
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
19.01.2012, 21:46
(Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2012 21:47 von GerdW.)
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Primzahlen finden
Hallo Jens,
Anmerkungen:
- ich hatte nicht umsonst "~=" geschrieben
- Wikipedia schreibt pi(x) ~ x/lnx
- Wikipedia zeigt eine Grafik zu pi(x), der man entnehmen kann, das x/ln(x) etwas zu kleine Werte approximiert (wie du gemerkt hast )
- Faktor 2 wie bei dir ist deutlich zu hoch, ich rechne da mit ca. 1,4 (und bin auf der sicheren Seite)
- jetzt solltest du noch die Debugging-Features ausschalten und über die darauf folgende Beschleunigung staunen (bei LV2011 ca. Faktor 3,5 auf meinem Laptop)
|
|
|
19.01.2012, 22:00
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Primzahlen finden
Hi, Gerd,
das "~" hatte ich damals schon gesehen und bemerkt, aber irgendwie habe ich die endgültige Ergebnis-Größe des Arrays nicht mehr überprüft. Ganz klar mein Fehler, nicht deiner , und gemerkt hat es Carsten
Toller Tipp mit Debugging, bringt auf meinem Heim-PC etwas mehr als Faktor 2 (ca. 5 ms zu 12 ms) unter LV2010.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
20.01.2012, 09:11
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
RE: Primzahlen finden
Dass ich das auch mal erleben darf.
Gruß Markus
(19.01.2012 22:00 )jg schrieb: Ganz klar mein Fehler
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
20.01.2012, 11:37
(Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2015 14:58 von Lucki.)
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Primzahlen finden
Die Fomel pi(x) ~ x/lnx wurde ja 1793 bereits vom 15jährigen Gauß vermutet, und das bietet einen schönen Vorwand, um etwas
[Werbung]
einzuschleußen:
In dem 3D-Film über Gauß "Die Vermessung der Welt", Kinostart 25. Oktober 2012, spielen in der Schulklasse, in der der kleine Gauß, statt die Zahlen von 1-50 zu addieren, die Summenformel für eine arithmetrische Reihe verwendete, meine beiden Enkelkinder mit.
Mit dreckigen Gesichtern und Händen, kurz geschorenen Haaren. (Mein Enkeltochter hat sich allerdings geweigert, ihre blonden Locken abschneiden zu lassen, durfte trotzdem mitmachen) Gedreht wurde die Szene in Görlitz, als Gage bekam jeder 150 Euro. Fahrtkosten 2x Dresden-Görlitz blieben allerdings an mir hängen.
|
|
|
| |