h1

h2

h3

h4

h5
h6
000667504 001__ 667504
000667504 005__ 20250613101611.0
000667504 020__ $$a978-3-86359-442-8
000667504 0247_ $$2URN$$aurn:nbn:de:hbz:82-rwth-2016-062610
000667504 0247_ $$2HBZ$$aHT019072155
000667504 0247_ $$2Laufende Nummer$$a35474
000667504 0247_ $$2datacite_doi$$a10.18154/RWTH-2016-06261
000667504 037__ $$aRWTH-2016-06261
000667504 041__ $$aEnglish
000667504 082__ $$a004
000667504 1001_ $$0P:(DE-82)IDM00334$$aTerboven, Christian$$b0$$urwth
000667504 245__ $$aAbstractions for Performance Programming on Multi-Core Architectures with Hierarchical Memory$$cChristian Terboven$$honline, print
000667504 246_3 $$aAbstraktionen zur performanten Programmierung von Multi-Core Architekturen mit hierarchischem Speicher$$yGerman
000667504 250__ $$a1. Auflage
000667504 260__ $$aAachen$$bApprimus Verlag$$c2016
000667504 300__ $$a1 Online-Ressource (ii, 160 Seiten) : Illustrationen, Diagramme
000667504 3367_ $$2DataCite$$aOutput Types/Dissertation
000667504 3367_ $$2ORCID$$aDISSERTATION
000667504 3367_ $$2BibTeX$$aPHDTHESIS
000667504 3367_ $$02$$2EndNote$$aThesis
000667504 3367_ $$0PUB:(DE-HGF)11$$2PUB:(DE-HGF)$$aDissertation / PhD Thesis$$bphd$$mphd
000667504 3367_ $$2DRIVER$$adoctoralThesis
000667504 3367_ $$0PUB:(DE-HGF)3$$2PUB:(DE-HGF)$$aBook$$mbook
000667504 4900_ $$aErgebnisse aus der Informatik$$v7
000667504 500__ $$aAuch veröffentlicht auf dem Publikationsserver der RWTH Aachen University
000667504 502__ $$aDissertation, RWTH Aachen University, 2016$$bDissertation$$cRWTH Aachen University$$d2016$$gFak01$$o2016-06-17
000667504 5203_ $$aParallelprogrammierung für Systeme mit gemeinsamem Speicher (Shared Memory) scheint auf den ersten Blick oftmals recht einfach, wie zum Beispiel das Einfügen von OpenMP Pragmas in den Programmcode. Dabei hängt die für Anwendungen erreichbare Leistung von bestimmten Eigenschaften der Systemarchitektur ab - beispielsweise die erreichbare Speicherbandbreite innerhalb der Speicherhierarchie - und in wie weit diese in der Anwendungsentwicklung berücksichtigt wurden. Diese Arbeit präsentiert Lösungen um Shared Memory-parallele Anwendungen mittels eines methodischen Ansatzes für aktuelle und kommende Architekturen auszulegen. Für dieses Ziel wird eine erfolgreiche Strategie aus dem Software-Engineering eingesetzt: die Einführung von Abstraktionen.Mit dem uneinheitlichen Speicherzugriffsverhalten auf großen Shared Memory Systemen sowie bei der Berücksichtigung von Energieeffizienz wurde der Ausdruck und die Verwaltung von Datenlokalität wichtig auf aktuellen Systemarchitekturen, mit weiter steigender Bedeutung. Weder wurden die de facto Parallelisierungsstandards MPI und OpenMP dafür ausgelegt, noch ist diese Aufgabe interessant und geeignet für Anwendungswissenschaftler. Geeignete Abstraktionen für Parallelität und Datenlokalität müssen um erfolgreich zu sein gleichzeitig leistungsfähig und einfach in der Anwendung in bestehende Programmcodes sein. Die Bedeutung des Wortes Abstraktion in dieser Arbeit ist zweifältig: zum einen ist damit die methodische Auswahl der Systemarchitektureigenschaften gemeint die wichtig sind um Anwendungsperformance zu erreichen, und zum zweiten, bezeichnet es den Entwurf von Konzepten und Softwarekomponenten für die Parallelprogrammierung und Parallelisierung von Simulationsanwendungen.Damit die Abstraktion vom Endnutzer akzeptiert werden können, müssen vorhandene Daten- und Programmstrukturen soweit wie möglich unverändert bestehen bleiben können, insbesondere in Objekt-orientierten Programmen. Entsprechend müssen die Abstraktionen in einer allgemein verwendbaren Form ausgedrückt werden, beispielsweise müssen sie sich mit üblichen Designmustern integrieren lassen. Um dieses Ziel zu erreichen, werden in dieser Arbeit im ersten Schritt Speicherverwaltungsstrategien für NUMA Systeme identifiziert. Anschließend wird ein leistungsfähiges und dennoch einfach anzuwendendes Thread-Affinity Modell für OpenMP entwickelt. Schließlich wird für die Speicherverwaltungsstrategien und das Thread-Affinity Modell gezeigt, wie sie auch für die Parallelisierung mit Objekt-orientierten Abstraktionen geeignet sind. Um dies zu unterstützen werden mehrere Benchmarks und Experimente gezeigt um das Verhalten von OpenMP Implementierungen zu analysieren. In ihrer Gesamtheit liefert diese Arbeit somit einen methodischen Ansatz zur Entwicklung paralleler technisch-wissenschaftlicher Software für Multi- und Many-Core-Architekturen.$$lger
000667504 520__ $$aShared memory parallel programming, for instance by inserting OpenMP pragmas into program code, might look simple at first sight. However, the achievable performance of real-world applications depends on certain machine properties - for instance the achievable memory bandwidth within the memory hierarchy - and in how far the application programmer has taken these into account. This thesis presents solutions for designing shared memory parallel applications targeting current and future system architectures by following a methodical approach. Therefore, it builds on a successful strategy from the software engineering discipline: the introduction of abstractions.With large shared memory machines typically providing a non-uniform memory access, and taking energy efficiency into account, expressing and managing data locality is important today and will be even more so on the next generation of machines. The de-facto standard parallelization paradigms MPI and OpenMP were not well-equipped to allow for that, nor is this a task a domain scientist is interested in solving. Suitable abstractions for handling parallelism and data locality have to be powerful enough to fulfill their purpose while being simple enough to be applicable to existing application codes. The means of abstraction in this work are twofold: first, it relates to the methodical selection of those architecture-specific properties that are important to achieve performance, and second, it relates to the design of parallel programming model concepts and of software components to foster the parallelization of simulation codes.For the abstractions to be acceptable by end users, existing data structures and code designs should be left unmodified as much as possible, in particular in object-oriented codes. Hence, the abstractions have to be formulated in a broadly accepted form, for instance they have to integrate well with common design patterns. To achieve this goal, this work first identifies several memory management idioms for NUMA machines. Second, a powerful yet simple-to-use and flexible thread affinity model for OpenMP is developed. Third, the memory management idioms and the thread affinity model are shown to support the parallelization with object-oriented abstractions. To support all this, a set of benchmarks and experiments to analyze OpenMP implementation behavior is presented. This work as a whole proposes a methodic approach to develop parallel scientific software for multi- and many-core architectures.$$leng
000667504 591__ $$aGermany
000667504 653_7 $$aOpenMP
000667504 653_7 $$aNUMA
000667504 653_7 $$aMulti-Core
000667504 653_7 $$aParallel HPC
000667504 7001_ $$0P:(DE-82)096216$$aMüller, Mathias S.$$b1$$eThesis advisor
000667504 7001_ $$0P:(DE-82)003917$$aBischof, Christian$$b2$$eThesis advisor
000667504 7001_ $$0P:(DE-82)011774$$aChapman, Barbara$$b3$$eThesis advisor
000667504 8564_ $$uhttps://publications.rwth-aachen.de/record/667504/files/667504.pdf$$yOpenAccess
000667504 8564_ $$uhttps://publications.rwth-aachen.de/record/667504/files/667504_source.zip$$yRestricted
000667504 909CO $$ooai:publications.rwth-aachen.de:667504$$popenaire$$popen_access$$purn$$pdriver$$pVDB$$pdnbdelivery
000667504 9101_ $$0I:(DE-588b)36225-6$$6P:(DE-82)IDM00334$$aRWTH Aachen$$b0$$kRWTH
000667504 9141_ $$y2016
000667504 915__ $$0StatID:(DE-HGF)0510$$2StatID$$aOpenAccess
000667504 9201_ $$0I:(DE-82)123010_20140620$$k123010$$lLehrstuhl für Informatik 12 (Hochleistungsrechnen)$$x0
000667504 9201_ $$0I:(DE-82)120000_20140620$$k120000$$lFachgruppe Informatik$$x1
000667504 961__ $$c2016-10-14T12:24:46.361768$$x2016-08-22T11:25:55.383102$$z2016-10-14T12:24:46.361768
000667504 9801_ $$aFullTexts
000667504 980__ $$aphd
000667504 980__ $$aVDB
000667504 980__ $$aI:(DE-82)123010_20140620
000667504 980__ $$aI:(DE-82)120000_20140620
000667504 980__ $$aUNRESTRICTED
000667504 980__ $$abook