Seite 1 von 1

Python mit meinem Quad Core

Verfasst: Freitag 24. Juni 2011, 14:01
von smith0815
Hi

Ich arbeite grad mit Python 2.7 und habe gemerkt, dass Python nur 1 Kern von 4 benutzt.
Kann ich daran etwas ändern?

Weiter verwende ich:
- numpy 1.6.1
- scipy 0.9.0
- matplotlib 1.0.1

alles in der 32er Version, da keine 64er vorhanden

Kann ich irgend was machen, dass alle Kerne verwendet werden?

Re: Python mit meinem Quad Core

Verfasst: Freitag 24. Juni 2011, 14:15
von BlackJack
@smith0815: Deine Programme mit `multiprocessing` umschreiben.

Re: Python mit meinem Quad Core

Verfasst: Freitag 24. Juni 2011, 14:28
von deets
@BlackJack

Waeren bei Numpy nicht schon threads ausreichend? Das heavy lifting ist doch in C, und gibt doch hoffentlich das GIL frei.

Re: Python mit meinem Quad Core

Verfasst: Freitag 24. Juni 2011, 15:05
von BlackJack
@deets: Wenn `numpy` das GIL hinreichend freigibt, würde das wohl auch ausreichen.

Re: Python mit meinem Quad Core

Verfasst: Freitag 24. Juni 2011, 16:08
von CM
Das hängt davon ab,
- welche Funktionen aufgerufen werden (nicht alles ist parallelisiert)
- "wie groß die Herausforderung ist" (nicht alles lohnt sich parallel aufgerufen zu werden, numpy entscheidet teils selbständig)
- und ob eine parallelisierte BLAS/ATLAS-Version vorliegt.

Etwas präzisere und detaillierte info hier.

Gruß,
Christian

Re: Python mit meinem Quad Core

Verfasst: Sonntag 26. Juni 2011, 10:42
von smith0815
Das heißt aber unterm Strich, dass ich die einzelnen Teile zur Berechnung selber festlegen muss.
Oder?

Jetzt habe ich eine Matrix-Berechnung, die immer und immer wieder durchgeführt werden muss,
d.h. ich sitzte für einen Durchlauf etwa 1 Stunde.
Ich brauche leider einige Tausend.

Gibt es keine Möglichkeit, dass das System das selber aufteilt?
Wird wohl aber nicht klappen glaub ich, da die Durchgänge nicht gleichzeitig ablaufen können.

Re: Python mit meinem Quad Core

Verfasst: Sonntag 26. Juni 2011, 11:05
von pudeldestodes
Jetzt habe ich eine Matrix-Berechnung, die immer und immer wieder durchgeführt werden muss [...]
Ich weiß nicht genau von was es abhängig ist, ob eine Matrixoperation auf mehreren Kernen berechnet werden kann, oder nicht. Aber du kannst ja mal testen, ob es bei dir überhaupt generell funktioniert:

Code: Alles auswählen

a = numpy.random.rand(10000, 500)
b = numpy.random.rand(500, 10000)
c = numpy.dot(a, b)
Das oben genannte Schnipsel sollte mehrere Kerne anspringen lassen. Auf meinem Ubuntu werden hier zwei Kerne genutzt. An dem Versuch alle vier Kerne meines Rechners zu nutzen bin ich aber gescheitert (ich spekuliere, dass man dafür LAPACK+ATLAS neu kompilieren müsste - weiß es aber nicht wirklich. Die scheinbar aktuellste Anleitung (für Ubuntu) steht dafür glaube ich hier).

Re: Python mit meinem Quad Core

Verfasst: Montag 27. Juni 2011, 00:12
von smith0815
ne klappt bei mir nicht
bleibt bei einem.

kann das an der 32er Version liegen?

Re: Python mit meinem Quad Core

Verfasst: Dienstag 28. Juni 2011, 09:43
von pudeldestodes
Ich kann es leider nicht ausprobieren. Aber zumindest gibt es ATLAS+LAPACK-Pakete auch für 32-bit Ubuntu.

Welches Betriebssystem nutzt du denn?