Über den Service
ÜbersetztIch entwickle Hochleistungs-Code in Chapel, einer Sprache, die speziell für produktives wissenschaftliches Rechnen im großen Maßstab entwickelt wurde. Wenn Ihr Modell, Solver oder Datenverarbeitungspipeline auf einem Kern feststeckt, werde ich die Berechnung auf alle verfügbaren Kerne und dann über einen gesamten Cluster verteilen. Meine Hauptaufgabe besteht darin, gewöhnlichen numerischen Code in ein Programm zu verwandeln, das Tausende von Threads beschäftigt, ohne dass Sie alles von Hand neu schreiben müssen. Ich verwende parallele Schleifen forall, verteilte Domänen und das Locale-Modell, um Arrays über Knoten zu verteilen, und wo der Algorithmus eine feinere Kontrolle benötigt, wende ich Aufgabenparallelismus durch begin, cobegin und synchronisierende Variablen an. Typische Aufgaben, die ich übernehme: Portierung sequentieller C- oder Fortran-Kerne nach Chapel, Parallelisierung von Template- und Matrixoperationen, Aufbau verteilter Hash-Tabellen und Graphdurchläufe sowie Profilierung, warum Berechnungen bei Datenbewegungen und nicht bei arithmetischen Operationen stillstehen. Ich messe alles. Bevor ich die Arbeit als abgeschlossen betrachte, zeige ich starke und schwache Skalierungskurven, damit Sie sehen, wie sich der Code verhält, wenn die Kerne und die Problemgröße wachsen, und erkläre, wo die Grenzen herkommen. Die Ergebnisse umfassen sauberen, kommentierten Quellcode, ein Rezept zum Erstellen unter Ihrem Compiler und Launcher, einen kurzen Skalierungs- und Speicherbericht sowie Anweisungen zum Ausführen auf Ihrer Hardware oder Ihrem Scheduler. Ich habe Chapel-Code für Monte-Carlo-Methoden, N-Körper-Aufgaben, Schritte der computergestützten Hydrodynamik und große spärliche lineare Algebra geschrieben. Korrektheit zuerst, dann Geschwindigkeit: Ich füge reproduzierbare Tests hinzu und überprüfe die Ergebnisse gegen eine vertrauenswürdige Basislinie, bevor ich optimiere. Nennen Sie die Knotenzahl, den Verbindungstyp und den Kern, der den Flaschenhals bildet, und ich werde ehrliche Beschleunigungs- und Aufwandsschätzungen abgeben.