Eine neue Sprache für das Technical Computing

Frauenpower

Die Programmiersprache Julia beweist ihre Stärken vor allem bei der Parallelverarbeitung über mehrere Cores oder Cluster-Knoten hinweg. Einfach, schnell und parallel soll sie sein – was ist dran?
RAID-Technologie verspricht höhere Performance und mehr Sicherheit beim permanenten Speichern von Daten. Die ADMIN-Redaktion gibt einen Überblick über ... (mehr)

In den frühen Tagen des Personalcomputers kauften oder bastelten sich viele einen PC, um die Computerei für sich selbst zu erkunden. Viele von ihnen hatten zwar Zugang zu einem Mainframe oder sogar einem Minicomputer, fanden es aber dennoch reizvoll, den Rechner für ihre privaten Versuche direkt neben sich stehen zu haben. Als einziger Nutzer und Besitzer konnten die PC-Pioniere erstmals alles kontrollieren und mit Hard- und Software spielen, ohne auf andere Rücksicht nehmen zu müssen.

Typ Anwenderentwickler

Aus diesem Herumspielen erwuchs schließlich eine ganze neue Industrie, wie manche meinen. Die relativ geringen Kosten erlaubten es jedem Neugierigen, die ersten PCs ganz nach den eigenen Bedürfnissen zu erkunden und in Beschlag zu nehmen. Dabei waren Programmierwerkzeuge zu Anfang rar, und viele der ersten Benutzer programmierten Assembler oder tippten Maschinencode ein. Wenig später erschien Microsofts Basic auf der Bildfläche und wurde zu einer der ersten Hochsprachen des jungen PC. Sprachen wie C oder Fortran, die es früher nur auf größeren Systemen gab, folgten bald darauf. Die PC-Revolution brachte einen neuen Typ Entwickler hervor: Jemanden, der über Fachwissen auf einem Spezialgebiet verfügte und einen programmierbaren PC zur Hand hat. Über Nacht entstanden so unzählige Applikationen. Manche wurde kommerziell sehr erfolgreich, andere eroberten eine Nische.

HPC erkunden

Wollte man diese Lektion auf die Welt des High Performance Computing (HPC) übertragen, dann könnte man fragen: "Aber wie soll man denn damit herumspielen?" Die Antwort ist nicht einfach. Mit Blick auf die Hardware reichen ein paar PC, ein Ethernet-Switch und das MPI (Message Passing Interface) für einen kleinen Cluster. Oder man benutzt eine Grafikkarte und CUDA (die parallele Berechnungsarchitektur von NVIDIA) als einfache GPU-Hardware. Wie in der Jugendzeit des PC laden relativ geringe Kosten die Bastler zum Herumspielen ein. Aber wie sieht es auf der Softwareseite aus? Welche Software kann man als Experte in einem bestimmten Fachgebiet nutzen, um HPC-Methoden kennenzulernen?

Viele der Kerntools der HPC-Welt sind für Experten anderer Gebiete zu speziell. Fortran, C/C++, MPI oder CUDA zu lernen ist eine große Herausforderung. Alle diese Werkzeuge operieren nahe an der Hardware und erfordern einen großen Einarbeitungsaufwand. Deshalb greifen viele Experten lieber zu Sprachen wie Python, R oder MATLAB. Sie bewegen sich auf einer höheren Ebene näher am Problem des Anwenders und sind für ihn daher leichter zu benutzen. Allerdings sind die performanteren Sprachen wie C oder Fortran oft statisch kompiliert, wogegen die bequemeren auf dynamisches Kompilieren setzen, was das Herumspielen und die Interaktion mit Code-Fragmenten erlaubt. Die Sprachen auf höherem Level sind dafür wieder oft ausdrucksstärker und brauchen weniger Codezeilen.

Ein anderer Aspekt, der alle Sprachen betrifft, ist die Parallelverarbeitung. Das Problem kam durch die Einführung der Multicore-Prozessoren in die Welt. Heute hat ein typischer Desktoprechner wenigstens vier Kerne. Dazu kommt die Einführung von Multicore-Servern, HPC-Clustern und dem GPU-Computing, was viele Low-Level-Programmiermodelle fragmentiert hat. Sprachen höherer Ordnung versuchen diese Probleme vor dem Anwender zu verbergen, was unterschiedlich gut gelingt – die Parallelverarbeitung bleibt ein Nachzügler.

Bereits seit einer ganzen Weile fehlt eine Sprache für HPC-Experimente, in der ein Fachexperte (etwa ein Biologe) schnell und einfach ein Problem so formulieren könnte, dass er dabei moderne HPC-Hardware so einfach wie einen Desktop-PC einsetzen könnte. Eine solche Sprache, die den Nutzer nicht zwingt, sich mit den Details der darunter liegenden Hardware auseinanderzusetzen, wird gebraucht. (Auch wenn einige meinen, es hätte niemals Basic geben dürfen.)

Ä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