3 research outputs found

    Modellierung von paralleler Software für homogene und heterogene Multiprozessor-Systeme

    Get PDF
    Multicore-Prozessoren stellen leistungsstarke Architekturen für die Signal- und Videoverarbeitung dar, die zunehmend auch in Echtzeitanwendungen eingesetzt werden. Da Multicore-Prozessoren in Hochsprachen programmiert werden, bieten sie eine hohe Flexibilität und Portabilität der Software. Eingebettete Multicore-Prozessoren werden beispielsweise im Bereich der kamerabasierten Fahrerassistenzsysteme zur Berechnung anspruchsvoller Algorithmen mit strengen Echtzeitkriterien verwendet. Die Fusion und Auswertung der gesammelten Daten aus einer Vielzahl von Sensoren besitzt eine hohe Rechenkomplexität und einen hohen Speicherbedarf. Gleichzeitig haben derartige Algorithmen kurze Entwicklungszyklen, was den Einsatz von flexibler Multicore-Software attraktiv macht. Eine optimale Auslastung aller Ressourcen und eine gute Portabilität der Software zwischen Plattformen benötigt allerdings eine skalierbare parallele Implementierung. Für die Parallelisierung steht eine Vielzahl von Strategien zur Auswahl, die auf unterschiedlichen Plattformen jeweils andere Laufzeiteigenschaften und Limitierungen, wie z.B. Synchronisationen oder Speicherbandbreite, aufweisen. Moderne Plattformen kombinieren meist heterogene Prozessoren mit applikationsspezifischen Beschleunigern, was eine parallele Programmierung zusätzlich erschwert. Diese Arbeit adressiert die Programmierbarkeit von parallelen Plattformen mit dem Ziel Entwickler bei der Parallelisierung zu unterstützen. Dazu wird die Abstraktionsschicht Modular Parallelization Abstraction Layer (MPAL) vorgestellt, die eine neue Schnittstelle zur parallelen Programmierung von Multicore- und Manycore-Prozessoren, sowie Beschleunigern, wie Grafikprozessoren oder Field Programmable Gate Arrays, bereitstellt. MPAL ermöglicht eine einfache Konfiguration der verwendeten Frameworks und der Parallelität, sowie die Kontrolle des heterogenen Architektur-Mappings. Des Weiteren bietet MPAL Profiling-Methoden, die die Extraktion der Skalierungscharakteristiken erlauben, die wiederum bei der Identifikation von Engpässen helfen. Weiterhin werden in dieser Arbeit Einflussfaktoren auf die Skalierbarkeit untersucht und modelliert, damit diese durch signifikante Modellparameter dargestellt und ausgewertet werden können. Unter Verwendung der Modellparameter als Deskriptoren stellt diese Arbeit eine neue Methode der Performance-Prädiktion vor. Damit können das erwartete Skalierungsverhalten, sowie potentielle Engpässe nach einer Portierung der Software, abgeschätzt werden. Die vorgestellten Methoden werden mit Referenz-Methoden zur parallelen Programmierung und Performance-Prädiktion verglichen und im Anschluss mithilfe von zwei Fahrerassistenzalgorithmen (Stereo-Vision und Fußgängererkennung) evaluiert.Multicore processors represent powerful architectures for signal- and video-processing, even applicable for real-time applications. Because these chips are programmable in high-level programming-languages, they offer good flexibility and software portability. For instance in the field of camera-based advanced driver assistance systems, which appear as demanding applications with strict real-time constraints, embedded multicores serve as target platforms. Such algorithms feature not only complex computations and high memory consumption due to the fusion of multiple sensor-data, but they also have short development cycles, which makes the flexibility of multicore-software even more desirable. However, gathering the theoretical peak performance of multicore processors requires parallel programming and a scalable work distribution in order to obtain software that is portable across platforms. Furthermore, parallel programming opens up a huge design space of parallelization strategies each with potential bottlenecks, like synchronization-count or memory bandwidth, which vary between platforms. Modern processors are often equipped with application specific accelerator architectures, resulting in multiple heterogeneous computational units eventually each requiring individual programming techniques. This work addresses the programmability of parallel platforms with the aim of supporting developers during the parallelization process. In order to ease the parallel programming, the middleware modular parallelization abstraction layer (MPAL) is introduced, which offers a new interface for programming multi-/manycores and accelerators (e.g., graphics processors, or field programmable gate arrays), while the actually used frameworks can be configured dynamically. MPAL allows the configuration of the parallelism and to control the architecture mapping including heterogeneous scheduling and data transfers. Furthermore, MPAL offers in-line profiling methodologies, which enable the extraction of the parallel runtime behavior and scalability characteristics, which help to analyze the parallelization success and identify bottlenecks. Most relevant, influencing scalability characteristics are modeled to represent trends in few significant and comparable model-parameters. Using these model-parameters as descriptive features, this work contributes a statistical performance prediction method, which allows for an estimation of the scalability trend and potential bottlenecks after porting a parallel software between platforms. All introduced methods are compared with state-of-the-art programming techniques and prediction methods, and will be evaluated using two driver-assistance algorithms (stereo-vision and pedestrian detection)

    On-Chip-Netzwerk-Architekturen für eingebettete hierarchische Multiprozessoren

    Get PDF
    Ax J. On-Chip-Netzwerk-Architekturen für eingebettete hierarchische Multiprozessoren. Bielefeld: Universität Bielefeld; 2019.Das Ziel der vorliegenden Arbeit ist die Realisierung und Analyse einer skalierbaren Verbindungsstruktur für ein Multi-Prozessorsystem auf einem Chip (MPSoC). Durch die zunehmende Digitalisierung werden in immer mehr Geräten des täglichen Lebens und der Industrie mikroelektronische Systeme eingesetzt. Hierbei handelt es sich häufig um energiebeschränkte Systeme, die zusätzlich einen stetig steigenden Bedarf an Rechenleistung aufweisen. Ein Trend, diesen Bedarf zu decken ist die Integration von zunehmend mehr Prozessorkernen auf einem einzelnen Mikrochip. Many-Core-Systeme mit vielen hunderten bis tausenden ressourceneffizienten CPU-Kernen versprechen hierbei eine besonders hohe Energieeffizienz. Im Vergleich zu Systemen mit wenigen leistungsfähigen, jedoch auch komplexeren CPUs, wird bei Many-Cores die Rechenleistung durch massive Parallelität erzielt. In der AG Kognitronik und Sensorik der Universität Bielefeld wird dazu das CoreVA-MPSoC entwickelt. Um hunderte von CPUs auf einen Chip zu integrieren, verfügt das CoreVA-MPSoC über eine hierarchische Verbindungsstruktur. Diese besteht aus einem On-Chip-Netzwerk (NoC), welches eine Vielzahl von CPU-Cluster koppelt. In jedem CPU-Cluster sind mehrere ressourceneffiziente VLIW-Prozessorkerne über eine eng gekoppelte Bus-Struktur verbunden. Der Fokus dieser Arbeit ist die Entwicklung und Entwurfsraumexploration einer ressourceneffizienten NoC-Architektur für den Einsatz im CoreVA-MPSoC. Die Entwurfsraumexploration findet dazu auf verschiedenen Ebenen statt. Auf der Ebene der Verbindungsstruktur des NoCs werden verschiedene Topologien und Mechanismen der Flusskontrolle untersucht. Des Weiteren wird die Entwicklung und Analyse eines synchronen, mesochronen und asynchronen NoCs vorgestellt, um die Skalierbarkeit und Energieeffizienz dieser Methoden zu untersuchen. Eine weitere Ebene bildet die Schnittstelle zum Prozessorsystem bzw. CPU-Cluster, die einen maßgeblichen Einfluss auf die Softwareentwicklung und Gesamtperformanz des Systems hat. Auf Systemebene wird schließlich die Anbindung verschiedener Speicherarchitekturen an das NoC vorgestellt und deren Auswirkung auf Performanz und Energiebedarf analysiert. Ein abstraktes Modell des CoreVA-MPSoCs mit Fokus auf dem NoC erlaubt die Abschätzung von Fläche, Performanz und Energie des Systems, bzw. der Ausführung von Streaming-Anwendungen. Dieses Modell kann im CoreVA-MPSoC-Compiler für die automatische Abbildung von Anwendungen auf dem MPSoC eingesetzt werden. Zehn Streaming-Anwendungen, vorwiegend aus dem Bereich der Signal- und Bildverarbeitung, zeigen bei der Abbildung auf einem CoreVA-MPSoC mit 32 CPUs eine durchschnittliche Beschleunigung um den Faktor 24 gegenüber der Ausführung auf einer CPU. Ein CoreVA-MPSoC mit 64 CPUs und insgesamt 3MB Speicher besitzt bei einer prototypischen Implementierung in einer 28-nm-FD-SOI-Standardzellenbibliothek einen Flächenbedarf von 14,4mm2. Bei einer Taktfrequenz von 700MHz liegt die durchschnittliche Leistungsaufnahme bei 2W. Eine FPGA-basierte Emulation auf einem FPGA-Cluster aus Xilinx Virtex-5-FPGAs erlaubt zudem eine skalierbare Verifikation eines CoreVA-MPSoCs mit nahezu beliebig vielen CPUs

    Verbesserung der Programmierbarkeit und Performance-Portabilität von Manycore-Prozessoren

    No full text
    Parallele Prozessoren sind heutzutage, in allen Arten von Rechnersystemen zu finden: von großen Datenzentren bis zu den kleinsten mobilen Geräten. Die Programmierung dieser modernen parallelen Rechnersysteme ist aufwändig und fehleranfällig. Um optimale Performance zu erreichen, muss Software zusätzlich speziell angepasst werden. Dabei muss dieser Optimierungsprozess zurzeit für jede neue Prozessorarchitektur wiederholt werden, d.h. Performance ist nicht portabel. Diese Dissertation widmet sich diesen zwei zentralen Herausforderung der parallelen Programmierung. Das entwickelte und implementierte SkelCL Programmiermodel verbessert die Programmierbarkeit moderner paralleler Prozessoren mithilfe wiederkehrender paralleler Muster (sog. algorithmische Skelette). In der Dissertation wurde zusätzlich eine neuartige Technik zur Codegenerierung entworfen, basierend auf formell definierten Transformationsregeln, die Performance-Portabilität ermöglicht. Ausgehend von einem nachweislich korrekten und portablen Programm wird automatisch hardware-spezifischer und hoch-effizienter paralleler Code generiert
    corecore