Python mit meinem Quad Core

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
smith0815
User
Beiträge: 99
Registriert: Dienstag 13. April 2010, 11:08

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?
BlackJack

@smith0815: Deine Programme mit `multiprocessing` umschreiben.
deets

@BlackJack

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

@deets: Wenn `numpy` das GIL hinreichend freigibt, würde das wohl auch ausreichen.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
smith0815
User
Beiträge: 99
Registriert: Dienstag 13. April 2010, 11:08

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.
pudeldestodes
User
Beiträge: 65
Registriert: Samstag 9. Juni 2007, 23:45

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).
smith0815
User
Beiträge: 99
Registriert: Dienstag 13. April 2010, 11:08

ne klappt bei mir nicht
bleibt bei einem.

kann das an der 32er Version liegen?
pudeldestodes
User
Beiträge: 65
Registriert: Samstag 9. Juni 2007, 23:45

Ich kann es leider nicht ausprobieren. Aber zumindest gibt es ATLAS+LAPACK-Pakete auch für 32-bit Ubuntu.

Welches Betriebssystem nutzt du denn?
Antworten