Websites

Parallelität benötigt Killer-Anwendung für Massenannahme

Strahlensätze, 1./2. Strahlensatz, Streckenverhältnisse, Zentrum, Parallelen, Strahl

Strahlensätze, 1./2. Strahlensatz, Streckenverhältnisse, Zentrum, Parallelen, Strahl
Anonim

Die Hinzufügung von mehreren Kernen zu Mikroprozessoren hat eine bedeutende Gelegenheit für parallele Programmierung geschaffen, aber eine überwältigende Anwendung wird benötigt, um das Konzept in den Mainstream zu bringen, sagten Forscher während einer Podiumsdiskussion auf der Hot Chips Konferenz

Die meiste Software wird heute noch für die sequenzielle Ausführung geschrieben und Programmiermodelle müssen geändert werden, um die Vorteile schnellerer Hardware und einer steigenden Anzahl von Cores auf Chips zu nutzen, sagten Panelisten. Programmierer müssen Code so schreiben, dass Aufgaben aufgeteilt und gleichzeitig über mehrere Kerne und Threads hinweg ausgeführt werden können.

Eine Menge Fokus und Geld sind in den Aufbau schneller Maschinen und besserer Programmiersprachen geflossen, sagte David Patterson, ein Computer Wissenschaftsprofessor an der Universität von Kalifornien, Berkeley, auf der Konferenz in Stanford am Montag. Dem Schreiben von Desktop-Programmen wurde vergleichsweise wenig Aufmerksamkeit geschenkt, aber Anwendungen wie Spiele und Musik könnten dies ändern. Benutzer solcher Programme benötigen die beste Echtzeitleistung, so dass Programmierer möglicherweise Modelle annehmen müssen, die Aufgaben über mehrere Threads und Kerne aufteilen.

Zum Beispiel könnten neuartige Formen der Parallelität die Qualität der auf PCs wiedergegebenen Musik verbessern und Smartphones, sagte Patterson. Code, der die Kanäle und Instrumente besser trennt, könnte letztlich durch parallele Interaktion Klänge erzeugen.

Die Universität von Kalifornien, Berkeley, verfügt über ein paralleles Computerlabor, in dem Forscher versuchen zu verstehen, wie Anwendungen verwendet werden, um den Code zu optimieren für Handheld-Geräte. Ein Projekt zielt darauf ab, das Browsen in Desktop-Qualität auf Handheld-Geräte zu bringen, indem Code basierend auf bestimmten Aufgaben wie dem Rendern und Parsen von Seiten optimiert wird. Ein anderes Projekt beinhaltet die Optimierung von Code für einen schnelleren Abruf von Gesundheitsinformationen. Das Labor wird in erster Linie von Intel und Microsoft finanziert.

Berkeley-Forscher versuchen Parallelität zu erreichen, indem sie Code-Bits, die ursprünglich mit Skriptsprachen wie Python und Ruby on Rails geschrieben wurden, durch neuen Low-Level-C-Code ersetzen. Der neue Code konzentriert sich speziell auf bestimmte Aufgaben wie die Analyse eines bestimmten Sprachmusters in einer Spracherkennungsanwendung, sagte Patterson in einem Interview am Mittwoch. Der Code wird unter Verwendung von OpenMP oder MPI geschrieben, Anwendungsprogrammierschnittstellen, die entworfen sind, um parallele Anwendungen auf Maschinenebene zu schreiben.

Experten müssen diesen hoch spezialisierten parallelen Code schreiben, sagte Patterson. Es reduziert die Entwicklungszeit für Programmierer, die sonst Python und Ruby on Rails verwenden würden, die die Anwendungsentwicklung vereinfachen, sich aber nicht auf Parallelität konzentrieren, sagte Patterson im Interview. Das Labor hat gezeigt, dass die Ausführung bestimmter Aufgaben um den Faktor 20 mit dem Low-Level-Maschinencode sprunghaft ist.

Das Konzept der Parallelität ist nicht neu und war vor allem die Domäne des Hochleistungsrechnens. Geringe Parallelitätsgrade waren schon immer möglich, aber Programmierer hatten eine schwierige Aufgabe mit einem Mangel an Software-Werkzeugen und sich ständig ändernden Hardware-Umgebungen.

"Threads müssen richtig synchronisieren", sagte Christos Kozyrakis, Professor für Elektrotechnik und Elektronik Informatik an der Stanford University, während einer Präsentation vor der Podiumsdiskussion. Code muss in einer Form geschrieben werden, die vorhersehbar ist und skaliert, wenn mehr Kerne verfügbar werden.

Compiler müssen auch intelligenter und scharfsinniger gemacht werden, um Threads rechtzeitig zu zerlegen, damit Ausgaben in einer korrekten Reihenfolge empfangen werden, sagte Kozyrakis. Fehlerhafte Versuche, Parallelität in Code zu erstellen, können fehlerhafte Software erzeugen, wenn bestimmte Berechnungen nicht in einer bestimmten Reihenfolge ausgeführt werden. Das ist ein Problem, das allgemein als Rennbedingungen bezeichnet wird. Codierer müssen möglicherweise auch lernen, wie man mehrere Programmiertools verwendet, um feinere Ebenen der Parallelität zu erreichen, sagten Panelisten.

"Es gibt keinen Lazy-Boy-Ansatz bei der Programmierung", sagte Patterson auf der Konferenz.

Speicher- und Netzwerklatenz haben zu Engpässen im Datendurchsatz geführt, die die Leistung durch die parallele Ausführung von Tasks zunichte machen könnten. Es gibt auch verschiedene Programmierwerkzeuge für unterschiedliche Architekturen, die es schwierig machen, die gesamte verfügbare Hardware zu nutzen.

Viele heute verfügbare Parallelitätstools sind so ausgelegt, dass sie die Parallelverarbeitungsfähigkeiten von CPUs und Grafikprozessoren nutzen, um die Systemleistung zu verbessern. Apple, Intel, Nvidia und Advanced Micro Devices gehören zu den Unternehmen, die OpenCL unterstützen, eine parallele Programmierumgebung, die in Apples nächstem Betriebssystem Mac OS X 10.6, auch Snow Leopard genannt, unterstützt wird. OpenCL konkurriert mit Microsoft, das seine proprietären DirectX-Tools für die parallele Programmierung propagiert, und Nvidia, das das CUDA-Framework anbietet.

OpenCL enthält eine C-ähnliche Programmiersprache mit APIs (Anwendungsprogrammierschnittstellen), um die Verteilung von Kerneln über die Hardware zu verwalten als Prozessorkerne und andere Ressourcen. OpenCL könnte Mac OS dabei helfen, Videos schneller zu decodieren, indem es die Pixelverarbeitung auf mehrere CPU- und Grafikprozessoren in einem System verteilt.

Alle vorhandenen Tools sind auf unterschiedliche Softwareumgebungen ausgerichtet und nutzen verschiedene Ressourcen, so Patterson. OpenCL zum Beispiel ist mehr auf die Ausführung von Aufgaben auf GPUs ausgerichtet. Proprietäre Modelle wie DirectX lassen sich schwer in heterogenen Computerumgebungen implementieren, während einige Modelle wie OpenCL sich nur an bestimmte Umgebungen mit GPUs anpassen.

"Ich glaube nicht, dass [OpenCL] über alle Architekturen hinweg akzeptiert wird." Patterson sagte. "Wir müssen in der Zwischenzeit andere Dinge ausprobieren", wie er versuchte, die Programmiermodelle mit häufig verwendeten Entwicklungswerkzeugen wie Ruby on Rails zu verbessern, sagte er.

Während die Zuschauer darauf hinwiesen, dass Parallelismus ein Problem für jahrzehntelang gaben die Panelisten an, dass die Universitäten jetzt einen neuen Ansatz verfolgen, um an mehreren Programmierwerkzeugen zu arbeiten, um Parallelität zu ermöglichen. Nach Jahren der Finanzierung der Chipentwicklung schenkt die Regierung der parallelen Verarbeitung durch Finanzierungsprogramme mehr Aufmerksamkeit.

Kozyrakis sagte, dass Stanford ein Labor eingerichtet hat, das "die parallele Anwendungsentwicklung für die Massen bis 2012 praktisch machen soll" Die Forscher arbeiten mit Firmen wie Intel, AMD, IBM, Sun, Hewlett-Packard und Nvidia zusammen.

Ein sofortiger Test für Entwickler könnte sein, zu versuchen, bestehenden Legacy-Code für die Ausführung auf modernen Chips, Berkeley's Patterson, parallel zu konvertieren sagte. Einige Unternehmen bieten automatische Parallelisierung an, aber das Umschreiben und Kompilieren des Legacy-Codes, der ursprünglich für die sequenzielle Ausführung geschrieben wurde, könnte eine große Herausforderung sein.

"In diesen Bereichen ist Geld zu verdienen", sagte Patterson