Python und qsub
Verfasst: Dienstag 13. September 2011, 22:01
Hm,
ich weiss grad nicht wie ich das lösen soll: ich habe ein Python-Skript was ein cpp-Programm aufruft, rund 20000 mal. Dabei wird eine Datei eingelesen, etwas berechnet und das Ergebnis als Zeile in eine Ergebnisdatei geschrieben, die dann 20000 Zeilen hat. Die anderen Jobs habe ich entweder als Shell-Skript geschrieben, das klappte aber die Shellskript-Sprache kann ich nicht so gut, dass ich das jetzige Vorhaben umsetzen könnte - da sind ein paar Prüfungen und Prozeduren drin, für mich zu kompliziert.
Eine andere Herangehensweise war von mir, dass ich mir die dann einzureichenden Shell-Skripte schon vorab erzeugen lasse und dann diese via qsub einreiche - das geht hier auch nicht, denn bei den wenigen 100 war das locker machbar, bei 20000 geht mir das aber auf den Zeiger. Vollautmatisch losschicken ist denke cih auch nicht machbar, denn ich habe nur eine begrenzte Zahl von Knoten zur Verfügung, sagen wir 20, wenn da plötzlich 500 in die Queue gesteckt werden, dann wird das vermutlich nicht klappen und mir werden einfach viele später rausgeräumt. Außerdem wundere ich mich ja ob das überhaupt hinhaut, wenn die Zieldatei für die Jobs ja die gleiche ist, wie das dann gedeichselt wird.
Eigentlich ist das eine einfaches Vorhaben: ich will einen Knoten, es soll genau ein Job eingereicht werden. Dieser Job hat dann eine for-Schleife mit den 20000 Programmstarts die nacheinander aufgerufen werden.
Wie macht man das? Wie würdet ihr das machen? Wo kann ich dazu was nachlesen? Danke vorab.
ich weiss grad nicht wie ich das lösen soll: ich habe ein Python-Skript was ein cpp-Programm aufruft, rund 20000 mal. Dabei wird eine Datei eingelesen, etwas berechnet und das Ergebnis als Zeile in eine Ergebnisdatei geschrieben, die dann 20000 Zeilen hat. Die anderen Jobs habe ich entweder als Shell-Skript geschrieben, das klappte aber die Shellskript-Sprache kann ich nicht so gut, dass ich das jetzige Vorhaben umsetzen könnte - da sind ein paar Prüfungen und Prozeduren drin, für mich zu kompliziert.
Eine andere Herangehensweise war von mir, dass ich mir die dann einzureichenden Shell-Skripte schon vorab erzeugen lasse und dann diese via qsub einreiche - das geht hier auch nicht, denn bei den wenigen 100 war das locker machbar, bei 20000 geht mir das aber auf den Zeiger. Vollautmatisch losschicken ist denke cih auch nicht machbar, denn ich habe nur eine begrenzte Zahl von Knoten zur Verfügung, sagen wir 20, wenn da plötzlich 500 in die Queue gesteckt werden, dann wird das vermutlich nicht klappen und mir werden einfach viele später rausgeräumt. Außerdem wundere ich mich ja ob das überhaupt hinhaut, wenn die Zieldatei für die Jobs ja die gleiche ist, wie das dann gedeichselt wird.
Eigentlich ist das eine einfaches Vorhaben: ich will einen Knoten, es soll genau ein Job eingereicht werden. Dieser Job hat dann eine for-Schleife mit den 20000 Programmstarts die nacheinander aufgerufen werden.
Wie macht man das? Wie würdet ihr das machen? Wo kann ich dazu was nachlesen? Danke vorab.