Kostenloser svn (subversion) repository Anbieter

Geschrieben von everflux am November 14th, 2007

Gerade wenn es darum geht im Team z.B. für die Universität Aufgaben zu lösen, machen sich Versionskontrollwerkzeuge bezahlt. Vor allem kostenlose.
Subversion ist der CVS Nachfolger, doch nicht jeder möchte eigene Infrastruktur betreiben um ein Subversion Repository bereit zu stellen. (Es steht ja wohl außer Frage, dass trotz Studiengebühren so neumodischer Krams wie Versionskontrollsoftware nicht für Studenten mal eben zur Verfügung steht.)
Zum Glück gibt es verschiedene Anbieter, die auch kostenlos SVN Repositories anbieten. Meist gibt es dann Einschränkungen was die Größe, Anzahl der Benutzer oder auch die Lizenzen der erstellten Produkte angeht.
Gut gefallen hat mir hier OpenSVN: https://opensvn.csie.org/
Es ist kostenlos, leicht einzurichten und es gibt keine besonderen Einschränkungen zu beachten.
Ein weiterer Anbieter ist auch Google: http://code.google.com/hosting/

Inversion of control und Unit tests in der Lehre

Geschrieben von everflux am November 6th, 2007

Gut, das buzz word klingt cool und gemeint ist doch eher etwas anderes: Regelmäßig haben oebungszettel kaum was mit dem vorgetragenen Inhalt einer Vorlesung zu tun. Regelmäßig ist das eigentliche Problem, herauszufinden wie man an Aufgaben heran geht, oder wo man abschreiben kann, und nicht das eigentliche Lösen der Aufgaben.

In der Schule werden Hausaufgaben in der Regel wesentlich besser auf den Stoff abgestimmt, selten werden ganze Wochen-Arbeitszettel recycled wie an der Universität. Ist natürlich mehr Arbeit, sehe ich ein.

Aber wieso dreht man das Konzept dann nicht um? Als erste Folie wirft man den oebungszettel der Woche an die Wand. Der Dozent erklärt daran kurz was in der Woche also drann kommen wird und hat jetzt die Verpflichtung alles zu unternehmen damit die Studenten in die Lage versetzt werden den Zettel erfolgreich bearbeiten zu können. Für oebertragungsleistungen kann man natürlich noch eine Aufgabe an den Schluß stellen oder zu einer Aufgabe lediglich skizzieren worum es geht.
Leider hab ich so ein Vorgehen noch nie gesehen. Ich könnte mir gut vorstellen, dass die Motivation die Inhalte zu verstehen und zu lernen dadurch verbessert wird, ist doch wenigstens klar wo man als Student hin möchte.
Das bringt natürlich auch Nachteile für den Dozenten – möchte er eine Vorlesung umstrukturieren so wird er seine Zettel überarbeiten müssen.
Aber gerade um Refactoring ohne neue Defekte sicher zu stellen sind Unit Tests ja da…

Brent’s theorem

Geschrieben von everflux am Juli 11th, 2007

Brent’s theorem habe ich wirklich lange anschauen müssen, bis ich es einigermaßen verstanden habe. Ich werde daher für alle anderen, denen es mit Brent’s theorem vielleicht ähnlich geht, versuchen eine anschauliche Erklärung zu liefern.
Wie viele andere Erkenntnisse aus dem Bereich parallel computing ist das Theorem von Brent noch nicht sehr alt – 1974 stellt er es auf.
Die Aussage selber ist sehr kurz:

Ein beliebiger Parallelalgorithmus mit der Berechnungszeit t, der m Operationen ausführt, kann auf p Prozessoren in der Zeit t + (m-t)/p ausgeführt werden.

Immer gut, wenn man wichtige Aussagen knapp formulieren kann – aber was bedeutet Brents theorem nun?
Wichtig für das Verständnis des Satzes ist zum einen das Wissen, dass die Ausführung von einer PRAM Maschine, also einem Parallelrechner durchgeführt wird, und zum anderen die Erklärung der Berechnungszeit t.
Die Berechnungszeit wird dabei allgemein in Zeitschritte eingeteilt. In jedem Zeitschritt werden alle Befehle ausgeführt, die von keinen anderen Befehlen abhängig sind.
t ist dabei dann die längste Befehlsfolge, die von anderen Befehlen abhängig ist. (Alle kürzeren Befehlsfolgen sind ja bereits parallel bearbeitet und beendet worden)
Beispiel:
Wir haben ein Array mit 10 Werten, die aufsummiert werden sollen.
Jetzt könnte man so vorgehen:
position = start; while (position < 10) { ergebnis = ergebnis + array(position); position = position+1;}
Dabei hängt nun jede Berechnung von dem Ergebnis der vorigen Berechnung ab!
t ist damit also 10.
Die Gesamtzahl der Operationen ist auch 10, also ist auch m = 10.

Mit Brent’s Theorem berechnen wir also:
T = 10 + 0/p, es ist also möglich auf einer Parallelmaschine in 10 Zeiteinheiten das Array aufzusummieren. Wäre auch schrecklich wenn es nicht ginge, man kann von der Parallelmaschine ja einfach nur einen Prozessor nutzen, und sequentiell arbeiten.

Brents theorem besagt nicht:

  1. Es gibt keinen besseren Algorithmus für das Problem
  2. Es gibt keine bessere Implementierung für den Algorithmus
  3. Eine entsprechende Implementierung ist leicht zu finden

Aber mit dem Theorem von Brent kann man zeigen, dass eine entsprechende Implementierung existiert!

Jetzt versuchen wir mal die Array-Summe anders zu bilden, da Addieren assoziativ ist, könnte man die Summenbildung parallelisieren.
Wir zerteilen das Array in Summen aus je zwei Elementen:
1+2, 3+4, 5+6, 7+8, 9+10
Das geht – auf der Parallelmaschine – in einem Zeitschritt!
Die Ergebnisse bearbeiten wir nochmals so:
3+7, 11+15, 19
Wieder ein Zeitschritt. Und nochmal:
10 + 26, 19
36 + 19 = 55
Und das in nur 4 Zeitschritten! Durch die Parallelisierung ist das wesentlich schneller.

Etwas formaler: Dieser Algorithmus hat für ein Array mit n Elementen log(n) Schritte, also t= log(n). m – die „Gesamtarbeit“ – ist wieder n.
Die Zeit nach Brent’s Theorem ist somit  T = log(n) + (n – log(n) ) /p.

Wichtig in diesem Zusammenhang ist noch die Frage nach der Kosteneffizient oder Kostenoptimalität:

  • Egal wie viele Prozessoren wir parallel arbeiten lassen, es geht nicht schneller als O (log n)
  • Bei n Prozessoren benötigen wir log(n) Zeit
  • Bei log(n) Prozessoren benötigen wir log(n) + log(n) Zeit – das ist aber wieder O (log n)
  • Mit einem Prozessor benötigen wir n Zeitschritte

Die Arbeitsleistung wird jetzt so ausgerechnet:
Anzahl der Prozessoren mal der geleisteten Arbeit, also

  • Ein Prozessor: 1 * n
  • log(n) Prozessoren: log(n) * n
  • n Prozessoren: n*n

Kostenoptimal ist ein Algorithmus, wenn er nicht mehr Kosten verursacht als ein äquivalenter sequentieller Algorithmus. Mit n Prozessoren ist man somit nicht mehr Kosteneffizient!

OpenMPI – MPI-2 kompatible Library unter Ubuntu

Geschrieben von everflux am Juli 10th, 2007

Für ein Projekt an der Universität beschäftige ich mich derzeit mit MPI zur Entwicklung paralleler bzw. verteilter Anwendungen.
Um nicht alles auf dem Uni-Cluster testen zu müssen – und weil ich gerne selber experimentiere – ist mein Blick natürlich direkt auf die Ubuntu Bordmittel gefallen.
Dabei ist mir dann das OpenMPI Paket ins Auge gefallen. MPI-2 und OpenSource! Wer damit experimentieren möchte, installiere sich einfach das Paket.

Ein einfaches MPI Programm könnte beispielsweise so aussehen:

#include
#include

int main (int argc, char **argv)
{
 int rank, size;
 MPI_Init (&argc, &argv);
 MPI_Comm_size(MPI_COMM_WORLD, &size);
 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 printf („Hello world from process %d, of %d\n“, rank, size);
 MPI_Finalize();
 return 0;
}

Kompiliert wird das ganze dann mittel mpicc hello.c (einem Wrapper um GCC und Konsorten) und anschließend kann man das ganze mittels mpirun -np X hello aufrufen.
(Das X ist dabei die Anzahl der gestarteten Instanzen)
Jetzt fehlt nur noch der AMD mit 4 Kernen zum spielen…

Klausuren erstmal fertig

Geschrieben von everflux am Februar 20th, 2006

Klausuren durch! Yeah!

Laberbacken

Geschrieben von everflux am Oktober 17th, 2005

Heute in der Uni: Ich sitze gerade an meinem Laptop und versuche dieses fuckelig Uni-PPTP mit OpenVPN ans laufen zu bekommen, während ich so über den kaputten Routen hocke, kommt ein alter Bekannter an: Ey, wie gehts!?
Naja ok…
Kennst du dich mit IPsec unter….
Nein – das Ipsex kotzt mich nur an.
Achso. Ja ich hab auch schon von openvpn gehört, aber das ist mir zu unsicher!
Unsicher?
Ja! Ich brauche RSA mit 2048…
Achso! Ja klar.
Ja es geht da um nen Wlan mit WPA2 und Radius-Authentifizierung und…
Moment, ich muß gerade mein Blog schreiben. plonk

Später Erfolg

Geschrieben von everflux am April 24th, 2005

Neben einer leckeren Gans, die ich bei meinen Eltern gespeist habe, habe ich heute als kleines Erfolgserlebnis meine erste partielle Integration hinbekommen.
Ist nur etwas spät.

Sun Ultra-1

Geschrieben von everflux am April 20th, 2005

So ein Mist, Mathe hat wohl nicht so ganz hingehauen. Sehr ärgerlich.
Mehr anstrengen?

Die Sun ultra-1.
Nach der Bergung einiger der ultra-1 versuchte ich eine Weile das verflixte Firmware-Passwort zu löschen – die Kisten ließen sich einfach nicht gescheit booten.
Nach einigen hot-swap Aktionen und gefrickel half dann das halten von stop-n beim booten weiter.
Jetzt geht es darum auf eine der Büchsen ein System zu installieren.

Mittels etwas RARP und TFTP scheint die Debian Installation zu klappen. Erstmal eine Kiste klar machen und von dem aus kann man dann ja weiter installieren.
Also so einfach geht es auch nicht – das Partitionieren will einfach nicht gelingen. Closed-mist…

Matheklausur

Geschrieben von everflux am April 15th, 2005

Eine echt bescheidene Nacht – irgendwelche Helden haben um halb vier in der Nacht eine Party im Treppenhaus gefeiert. Danke!
Die Mathe Klausur hätte ruhig auch besser laufen können. Keine Ahnung ob ich falsch, nicht genug oder zuviel gelernt habe, oder einfach nicht in der Lage bin, sowas zu meistern.
In einer Woche gibs die Ergebnisse. Prinzip Hoffnung.

Uni: restart

Geschrieben von everflux am April 11th, 2005

Die Uni hat wieder angefangen, und Jony hat sich für Essen-Sowi statt Münster-Mathe entschieden. Jetzt werd ich mir einen neuen oebungspartner suchen müssen – schade.


http://everflux.de/
Copyright © 2007, 2008 everflux. Alle Rechte vorbehalten. All rights reserved.