matrix-invertierung auf cluster

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
michas
Beiträge: 380
Registriert: 12.08.2002 20:35:09
Wohnort: München

matrix-invertierung auf cluster

Beitrag von michas » 07.11.2002 19:43:09

hi zusammen,

ich hab hier nen kleinen cluster. (8 rechner, mpi und debian 8))
der läuft soweit auch ganz gut. und ein linpack-benchmark bringt sogar satte 15 Gflops. (naja, ok, da gibts wesentlich schnellere :) )

problem:
nun versuche ich hier ein problem zu lösen, bei dem es im wesentlichen um das invertieren einer matrix geht.
scalapack scheint mir da genau das richtige dafür zu sein. (oder kennt jemand ne bessere lösung?)
ach ja, das ganze sollte möglichst in fortan geschrieben werden, da das dann in ein bestehendes fortran-programm eingebaut werden soll. (ich hatte zuvor aber noch nicht viel mit fortran zu tun, und hab mich jetzt selber mal ein bischen eingelesen.)

nun bekomm ich das aber mit der invertieren nicht wirklich hin. :(
am mpi kanns lich liegen, das läuft. am scalapack sollte es dank debian ja eigentlich auch nicht liegen.
also scheint das problem wohl mal wieder an mir zu liegen. :)

ich hab also erstmal versucht das beispielprogramm zu übersetzen.

mit ein paar kleinen (pfad-)anpassungen beim übersetzen hab ich das auch soweit übersetzt bekommen, wenn ich es aber wie angegeben starten möchte, bekomme ich folgende fehlermeldung:

Code: Alles auswählen

rcmd: socket: Address family not supported by protocol
hat jemand ne ahnung, was mir das sagen will?
was hab ich falsch gemacht?

hat jemand überhaupt schon mal sowas gemacht?

hoffe, das mir jemand weiterhelfen kann.
- michas

Jens Oeser
Beiträge: 96
Registriert: 17.07.2002 17:04:22
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von Jens Oeser » 11.11.2002 13:07:17

Hallo,

ich kann Dir nicht wirklich bei Deinem Problem mit scalapack helfen. Allerdings beschäftige ich mich in meiner Diplomarbeit mit parallelen Rechnen auf Linuxclustern. Dazu benutzte ich ebenfalls MPI und PETSc. PETSc findest Du als fertiges Paket für Debian inklusive einer sehr guten Dokumentation und Anleitung. Mit PETSc solte sich Dein Problem auf wenige Funktionsaufrufe beschränken lassen. Lies einfach mal in der Doku.

Ich hoffe das hilft weiter. Leider habe ich keine Ahnung in Bezug auf scalapack. :?

Tschüß Jens.

Benutzeravatar
suntsu
Beiträge: 2947
Registriert: 03.05.2002 10:45:12
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: schweiz
Kontaktdaten:

Beitrag von suntsu » 11.11.2002 13:22:36

Nur mal eine sehr dumme Frage ohne Bezug auf dein Problem. :D

Wie lange hat ein seti-Packet bei dir(wenn das darauf läuft)??
Wär noch interessant :P :P

gruss
man'derauchXXGigaflopswill'uel

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 11.11.2002 18:27:45

ca. 8 Minuten (24x Dual Athlon MP1800+) 8O

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Benutzeravatar
michas
Beiträge: 380
Registriert: 12.08.2002 20:35:09
Wohnort: München

Beitrag von michas » 12.11.2002 21:44:23

hi jens,
danke für den tipp mit petsc.
ich habs mir grad mal angeschaut, und es scheint soweit auch ganz brauchbar zu sein.
ich hab aber keine funktion zum matrix-invertieren gefunden. gibts da nen trick?
wo ist eigentlich der vorteil von petsc gegenüber scalapack? (schließlich wirst du doch in deiner arbeit auch begründen warum du ausgerechnet petsc einsetzt. ;) )

> seti
sagt blos das seti-programm is so schlau, das das sogar mit clustern zurechtkommt?!
im idealfall bekommt man mit 8 P4/2000 natürlich 8mal die leistung eines einzelnen prozessors. dazu muss das problem aber entsprechend zerlegbar sein, und das benutzte programm auch so geschrieben sein, das es den cluster ausnutzt.

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 12.11.2002 22:30:12

michas hat geschrieben:> seti
sagt blos das seti-programm is so schlau, das das sogar mit clustern zurechtkommt?!
im idealfall bekommt man mit 8 P4/2000 natürlich 8mal die leistung eines einzelnen prozessors. dazu muss das problem aber entsprechend zerlegbar sein, und das benutzte programm auch so geschrieben sein, das es den cluster ausnutzt.
Nein natürlich (?) kann setiathome nicht korrekt mit Clustern umgehen. Der Wert von 8 Minuten ist halt hochgerechnet: Wenn ich auf allen Nodes je 2 seti Clients starte, dann habe ich nach ca. 6,4 Stunden 48 Workunits fertig. So gesehen ist seti natürlich Clusterfähig, da die gestellte Aufgabe ja fast beliebig parallelisierbar ist (sonst würden die das nicht im Internet rechnen lassen). Allerdings sind Workunits schon die kleinste praktikable Einheit, so dass man die nicht mehr über mehrere Jobs verteilen kann. Auf der anderen Seite macht der seti Client hauptsächlich FFT in verschiedenen Auflösungen, und das wäre theoretisch auf mehrere Rechner parallelisierbar...

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Jens Oeser
Beiträge: 96
Registriert: 17.07.2002 17:04:22
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von Jens Oeser » 13.11.2002 14:12:15

Hi,
michas hat geschrieben:hi jens,
danke für den tipp mit petsc.
ich habs mir grad mal angeschaut, und es scheint soweit auch ganz brauchbar zu sein.
ich hab aber keine funktion zum matrix-invertieren gefunden. gibts da nen trick?
wo ist eigentlich der vorteil von petsc gegenüber scalapack? (schließlich wirst du doch in deiner arbeit auch begründen warum du ausgerechnet petsc einsetzt. ;) )
Ich habe mich mal auf die Suche nach einer solchen Funktion für die Matrixinvertierung gemacht und innerhalb PETSc gibt es keine. :( Aber wenn ich richtig liege, berechnet man die Determinante und multipliziert 1/Determinante mit der transponierten Matrix. :?
Demnach müßten Dir folgende Funktionen helfen:
MatTranspose() und MatMult() oder MatScale()
Schau aber mal genau nach.

In meiner Diplomarbeit muss ich keine Matrix invertieren sondern lineare Gleichungssysteme mittels Krylovunterraummethoden lösen. Da ich kein Numeriker oder Mathematiker sondern Geophysikstudent bin, brauche ich eine Bibliothek die mir so viel wie möglich an Programmierarbeit abnimmt. Dabei sollte sie stabil sein, gut dokumentiert, ständig weiterenwickelt werden und sauberen sowie effizienten Code benutzen. Das alles erfüllt PETSc in meinen Augen. Darüber läßt sich aber diskutieren. :wink:

Tschüß Jens

Antworten