68 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)

    Methoden und Werkzeuge zum Einsatz von rekonfigurierbaren Akzeleratoren in Mehrkernsystemen

    Get PDF
    Rechensysteme mit Mehrkernprozessoren werden häufig um einen rekonfigurierbaren Akzelerator wie einen FPGA erweitert. Die Verlagerung von Anwendungsteilen in Hardware wird meist von Spezialisten vorgenommen. Damit Anwender selbst rekonfigurierbare Hardware programmieren können, ist mein Beitrag die komponentenbasierte Programmierung und Verwendung mit automatischer Beachtung der Datenlokalität. So lässt sich auch bei datenintensiven Anwendungen Nutzen aus den Akzeleratoren erzielen

    Beschleunigung ausgewählter paralleler Standard Template Library Algorithmen

    Get PDF
    A diploma thesis presenting a hardware-oriented parallelization of the C++ Standard Template Library. Strategies like thread pooling and thread affinity are used to enable speedups already for small input sizes and to best exploit the underlying hardware. Comparisons with existing approaches are used for evaluations

    Entwurfsraumexploration eng gekoppelter paralleler Rechnerarchitekturen

    Get PDF
    Sievers G. Entwurfsraumexploration eng gekoppelter paralleler Rechnerarchitekturen. Bielefeld: Universität Bielefeld; 2016.Eingebettete mikroelektronische Systeme finden in vielen Bereichen des täglichen Lebens Anwendung. Die Integration von zunehmend mehr Prozessorkernen auf einem einzelnen Mikrochip (On-Chip-Multiprozessor, MPSoC) erlaubt eine Steigerung der Rechenleistung und der Ressourceneffizienz dieser Systeme. In der AG Kognitronik und Sensorik der Universität Bielefeld wird das CoreVA-MPSoC entwickelt, welches ressourceneffiziente VLIW-Prozessorkerne über eine hierarchische Verbindungsstruktur koppelt. Eine enge Kopplung mehrerer Prozessorkerne in einem Cluster ermöglicht hierbei eine breitbandige Kommunikation mit geringer Latenz. Der Hauptbeitrag der vorliegenden Arbeit ist die Entwicklung und Entwurfsraumexploration eines ressourceneffizienten CPU-Clusters für den Einsatz im CoreVA-MPSoC. Eine abstrakte Modellierung der Hardware- und Softwarekomponenten des CPU-Clusters sowie ein hoch automatisierter Entwurfsablauf ermöglichen die schnelle Analyse eines großen Entwurfsraums. Im Rahmen der Entwurfsraumexploration werden verschiedene Topologien, Busstandards und Speicherarchitekturen untersucht. Insbesondere das Zusammenspiel der Hardware-Architektur mit Programmiermodell und Synchronisierung ist evident für eine hohe Ressourceneffizienz und eine gute Ausnutzung der verfügbaren Rechenleistung durch den Anwendungsentwickler. Dazu wird ein an die Hardwarearchitektur angepasstes blockbasiertes Synchronisierungsverfahren vorgestellt. Dieses Verfahren wird von Compilern für die Sprachen StreamIt, C sowie OpenCL verwendet, um Anwendungen auf verschiedenen Konfigurationen des CPU-Clusters abzubilden. Neun repräsentative Streaming-Anwendungen zeigen bei der Abbildung auf einem Cluster mit 16 CPUs eine durchschnittliche Beschleunigung um den Faktor 13,3 gegenüber der Ausführung auf einer CPU. Zudem wird ein eng gekoppelter gemeinsamer L1-Datenspeicher mit mehreren Speicherbänken in den CPU-Cluster integriert, der allen CPUs einen Zugriff mit geringer Latenz erlaubt. Des Weiteren wird die Verwendung verschiedener Instruktionsspeicher und -caches evaluiert sowie der Energiebedarf für Kommunikation und Synchronisierung im CPU-Cluster betrachtet. Es wird in dieser Arbeit gezeigt, dass ein CPU-Cluster mit 16 CPU-Kernen einen guten Kompromiss in Bezug auf den Flächenbedarf der Cluster-Verbindungsstruktur sowie die Leistungsfähigkeit des Clusters darstellt. Ein CPU-Cluster mit 16 2-Slot-VLIW-CPUs und insgesamt 512 kB Speicher besitzt bei einer prototypischen Implementierung in einer 28-nm-FD-SOI-Standardzellenbibliothek einen Flächenbedarf von 2,63 mm². Bei einer Taktfrequenz von 760 MHz liegt die durchschnittliche Leistungsaufnahme bei 440 mW. Eine FPGA-basierte Emulation auf einem Xilinx Virtex-7-FPGA erlaubt die Evaluierung eines CoreVA-MPSoCs mit bis zu 24 CPUs bei einer maximalen Taktfrequenz von bis zu 124 MHz. Als weiteres Anwendungsszenario wird ein CoreVA-MPSoC mit bis zu vier CPUs auf das FPGA des autonomen Miniroboters AMiRo abgebildet

    Online- und Offline-Prozessierung von biologischen Zellbildern auf FPGAs und GPUs

    Get PDF
    Wenn Bilder von einem Mikroskop mit hohem Datendurchsatz aufgenommen werden, müssen sie wegen der großen Bildmenge in einer automatischen Analyse prozessiert werden. Es gibt zwei Ansätze: die Offlineprozessierung, die Verarbeitung der Bilder auf einem Cluster, und die Onlineprozessierung, die Verarbeitung des Pixelstroms direkt von den Sensoren. Für die Bewältigung der Bilddaten in der Offlineprozessierung setzt diese Arbeit auf Grafikkarten und demonstriert eine Implementierung der Haralick-Bildmerkmalerkennung in CUDA. Dabei wird der Algorithmus um den Faktor 1000, gegenüber einer CPU-Lösung, beschleunigt. Dies ermöglicht den Biologen weitere Tests und einen schnelleren Erkenntnisgewinn. Die Onlineprozessierung setzt auf FPGAs, die sich mit den Sensoren elektrisch verbinden lassen. Dabei soll sich der Algorithmus dem Bedarf der Biologen entsprechend verändern lassen. Diese Arbeit zeigt die Entwicklung eines OpenCL-FPGA-Kompilierer-Prototyps. Die Biologen können Algorithmen in OpenCL schreiben und in ein Hardwaredesign für den FPGA übersetzen, was in einer Hardwarebeschreibungssprache für sie zu komplex wäre. Neben der Einfachheit hat die parallele Sprache OpenCL den Vorteil der Portierbarkeit auf andere Architekturen. Falls der FPGA-Kompilierer wegen existierender Einschränkungen den Algorithmus nicht übersetzen kann, lässt sich das OpenCL-Programm auch für die GPUs in der Offlineprozessierung übersetzen

    Latenzzeitverbergung in datenparallelen Sprachen = [Latency Hiding in Dataparallel Languages]

    Get PDF
    Das ungünstige Verhältnis von Kommunikations- zu Rechenleistung fast aller Parallelrechner, das sich in Kommunikationslatenzzeiten von mehreren hundert bis tausend Prozessortaktzyklen manifestiert, verhindert in vielen Fällen die effziente Ausführung von kommunikationsintensiven feingranularen datenparallelen Programmen. Zur Lösung dieses Problems untersucht diese Arbeit Techniken zur Latenzzeitverbergung, die durch Vorladeoperationen die Kommunikationszeit des Netzwerkes verdecken. Der vorgeschlagene Ansatz VSCAP (Software Controlled Access Pipelining with Vector commands) erweitert bestehende Techniken um Vektorbefehle und kann die anfallenden Latenzzeiten für eine große Anzahl von Anwendungen fast vollständig verbergen. Meine Beiträge sind: - Modellierung von VSCAP, einer Erweiterung von SCAP mit Vektorbefehlen. - Entwurf von Konzepten, mit denen Kommunikationsaufträge in datenparallelen Programmen in Datenfließbänder des VSCAP-Verfahrens überführt werden können. - Implementierung dieser Konzepte und Integration in den Prototypübersetzer Kar-HPFn. Die Leistungen von VSCAP bei der Latenzzeitverbergung wurden durch Modellierung und Laufzeittests von 25 Programmen, darunter 3 kompletten Anwendungen, untersucht. Die Ergebnisse sind: - Nachweis der praktischen Einsetzbarkeit von VSCAP (und damit als Spezialfall auch SCAP) auf einem realen Rechner. - Berechnung des Grades der Latenzzeitverbergung von VSCAP und Bestätigung der Modellierung durch automatisch generierte Programme. - Bestätigung der Beschleunigung von VSCAP gegenüber SCAP um einen Faktor gleich der Vektorlänge L durch Modellierung und Messungen. - Erster Übersetzer auf Parallelrechnerarchitekturen mit gemeinsamem Adreßraum, der zur Kommunikation nur Vorladeoperationen einsetzt. - Nachweis der automatischen, für den Programmierer transparenten und effizienten Übersetzung von datenparallelen Applikationen in Programme, die zur Kommunikation das VSCAP-Verfahren anwenden, am Beispiel von HPF. - Vergleichbare Leistung von KarHPFn-generiertem VSCAP und der hochoptimierten Kommunikationsbibliothek auf der Cray T3E, bei dynamischen Kommunikationsmustern sogar ein mehr als 6-facher Laufzeitgewinn von VSCAP. - 3- bis mehr als 5-facher Laufzeitgewinn von KarHPFn-generiertem VSCAP gegenüber Portland Group HPF beim Test von drei Applikationen (Veltran, FIRE und PDE1) auf bis zu 128 Prozessoren mit identischen HPF-Quellen, bei Programmen mit großem Kommunikationsaufwand sogar mehr als ein Faktor 15
    corecore