RAID-Technologie verspricht höhere Performance und mehr Sicherheit beim permanenten Speichern von Daten. Die ADMIN-Redaktion gibt einen Überblick über ... (mehr)

Hands on

Weil Julia neu ist, befinden sich einige Aspekte der Sprache noch in Entwicklung. Die sehr gute Dokumentation [6] ist einen Blick wert. Weil die Dinge noch im Fluss sind, empfiehlt es sich das jeweils aktuellste Release aus dem Netz zu beziehen. Im Moment unterstützt Julia

  • GNU/LInux, x86, 64- und 32-Bit
  • Darwin OS/X, x86, 64- und 32-Bit
  • FreeBSD, x86, 64- und 32-Bit

Die folgenden Beispiele wurden auf einem Limulus-Cluster [7] mit einer Intel i5-2400S-CPU und 4 GByte RAM unter Scientific Linux 6.2 gerechnet. Wer Julia nicht kompilieren möchte, kann es online ausprobieren [8]. Wer eine eigene Version haben möchte, braucht ein Arbeitsverzeichnis mit mindestens 2 GByte freiem Plattenplatz. Dort gibt man ein:

git clone https://github.com/JuliaLang/julia.git

Ist der Download beendet, hat man ein neues Julia-Directory. Anschließend wechselt der Anwender dort hinein und gibt »make« ein – dann hat er Zeit für einen Kaffee oder eine Runde mit dem Hund. Der Build dauert eine Weile, besorgt sich aber alle nötigen Pakete selbst. Ist alles durchgelaufen, sollte sich ein Julia-Binary im Arbeitsverzeichnis finden. Um Julia zu starten, genügt

./julia

Erscheint dann nicht der Titel aus Listing 1 versucht man es mit

Listing 1

Julia Header beim Startup

 

./julia -q

Am besten baut man den Pfad zur ausführbaren Datei nun in seine PATH-Variable ein.

Wie bei vielen interaktiven Tools kann man jetzt Ausdrücke eingeben wie:

julia> sqrt(2*7)+(6/4)
5.241657386773941

Wie oben schon erwähnt sind sowohl eine User Manual wie auch Library-Referenz online abrufbar und helfen bei der Erkundung von Julia. Weil Julia auf HPC-Umgebungen ausgerichtet ist und Parallelverarbeitung dort eine große Rolle spielt, ist das auch ein integraler Teil von Julia.

Eintauchen in Julia

Hochspachen, die die Komplexität von MPI verbergen, erleichtern den Umgang mit Parallelverarbeitung. Das hat jedoch seinen Preis in Form einer verminderten Effizienz. Dieser Preis scheint oft gerechtfertigt, weil der Bequemlichkeitsvorteil den Effizienznachteil aufwiegt, aber das MPI hat nach wie vor seine Berechtigung.

Wie im Julia-Manual beschrieben bietet Julia eine einfaches, einseitiges Messaging-Modell: "Julias Implementierung des Message Passing unterscheidet sich von der anderer Umgebungen wie etwa MPI. Die Kommunikation in Julia ist generell einseitig, was heißt, dass Julia nur mit einem Prozessor in einer Zwei-Prozessor-Operation umgehen muss. Darüber hinaus handelt es sich bei diesen Operationen typischerweise nicht um Dinge wie 'Nachricht verschicken' und 'Nachricht empfangen', sondern sie ähneln eher dem Aufruf von Benutzerfunktionen."

Die Autoren heben außerdem hervor, dass Julia zwei eingebaute Primitive enthält: "… Remote References und Remote Calls. Eine Remote Reference ist dabei ein Objekt, dass von jedem Prozessor genutzt werden kann, um auf ein Objekt zu verweisen, dass ein bestimmter Prozessor speichert. Eine Remote Call ist eine Anforderung eines Prozessors, eine Funktion mit bestimmten Argumenten auf einem anderen (oder demselben) Prozessor auszuführen."

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019