h1

h2

h3

h4

h5
h6
http://join2-wiki.gsi.de/foswiki/pub/Main/Artwork/join2_logo100x88.png

Reviewing and improving data race detection techniques for vectorized OpenMP applications = Überblick und Verbesserung von Techniken zur Erkennung von Data Races in vektorisierten OpenMP Anwendungen



VerantwortlichkeitsangabeKaloyan Ignatov

ImpressumAachen : RWTH Aachen University 2023

Umfang1 Online-Ressource : Illustrationen


Bachelorarbeit, RWTH Aachen University, 2023

Veröffentlicht auf dem Publikationsserver der RWTH Aachen University


Genehmigende Fakultät
Fak01

Hauptberichter/Gutachter
; ;

Tag der mündlichen Prüfung/Habilitation
2023-10-13

Online
DOI: 10.18154/RWTH-2023-10915
URL: https://publications.rwth-aachen.de/record/973639/files/973639.pdf

Einrichtungen

  1. Lehrstuhl für Informatik 12 (Hochleistungsrechnen) (123010)
  2. Fachgruppe Informatik (120000)

Inhaltliche Beschreibung (Schlagwörter)
Clang (frei) ; Data Race Detection (frei) ; HPC (frei) ; LLVM (frei) ; OpenMP (frei) ; SIMD (frei) ; SPEC (frei) ; ThreadSanitizer (frei)

Thematische Einordnung (Klassifikation)
DDC: 004

Kurzfassung
Da die sequenzielle Verarbeitungsgeschwindigkeit ein Plateau erreicht hat, ist modernes Computing zunehmend auf Parallelisierung angewiesen, um Leistungssteigerungen zu erzielen. Neben der Parallelisierung auf Node- und Thread-Ebene haben sich Hardwarehersteller zunehmend auf die Parallelisierung auf Anweisungsebene verlassen, die das SIMD-Paradigma (Single Instruction, Multiple Data) verwendet, um die einzelnen CPU-Taktzyklen effizienter auszunutzen. Ein Paradebeispiel für diesen Wandel sind die AVX-512-Erweiterungen von Intel, mit denen die x86-Architektur um SIMD-Vektorbefehle erweitert wurde. Die zunehmende Parallelität birgt jedoch das Risiko der Einführung von Data Races, eine bekanntermaßen schwer zu beseitigende Art von Fehlern, die durch zwei oder mehr unsynchronisierte Zugriffe auf eine gemeinsame Speicherstelle verursacht werden, von denen mindestens einer ein Schreibvorgang ist. Daher wurden im Laufe der Zeit zahlreiche Tools zur Erkennung von Datenrennen entwickelt, wie z. B. ThreadSanitizer. Obwohl ThreadSanitizer einer der bekanntesten Data-Race-Detektoren darstellt, der Integration in Compilern wie GCC und Clang findet, ist er in seiner ursprünglichen Form zum Zeitpunkt dieser Arbeit nicht in der Lage, die meisten Arten von Data-Races zu erkennen, die Vektor-Speicheroperationen beinhalten. In dieser Arbeit wird ein modifizierter ThreadSanitizer vorgestellt, der diese Lücke in der Funktionalität behebt. Als Basis für die angewandten Modifikationen wurde das ThreadSanitizer LLVM-Tool aus Clang/16.0.5 verwendet. Darüber hinaus wurden Mikrobenchmarks für verschiedene Vektorspeicheroperationen erstellt, um die Leistungs- und Korrektheitsevaluierung zu ermöglichen, sowohl für das in dieser Arbeit vorgestellte Tool als auch für jedes andere Tool, das eine ähnliche Funktionalität implementieren möchte. Die Leistung in realen Szenarien wurde mit Anwendungen aus der SPEC OMP2012-Benchmark-Suite unter Verwendung der JUBE-Benchmarking-Umgebung gemessen.

With sequential processing speed having reached a plateau, modern computing is increasingly reliant on parallelization for performance gains. Apart from node and thread level parallelism, hardware manufacturers have been progressively leaning on instruction level parallelism, which leverages the single instruction, multiple data paradigm (SIMD) to more efficiently utilize individual CPU clock cycles. A prime example of this shift are Intel's AVX-512 extensions, which implemented support for SIMD vector instructions to the x86 architecture. However, increasing parallelism carries the risk of introducing data races, a notoriously difficult to remove type of bug caused by two or more unsynchronized accesses to a shared memory location, with at least one of them being a write. Thus, numerous data race detection tools, such as ThreadSanitizer, have been developed over the years. Despite being one of the most prominent data race detectors, integrated in compilers such as GCC and Clang, ThreadSanitizer in its original form is, at the time of this writing, incapable of detecting most types of data races involving vector memory operations. This work presents a modified ThreadSanitizer, which addresses this gap in functionality. As a basis for the applied modifications, the ThreadSanitizer LLVM tool found in Clang/16.0.5 was used. Furthermore, microbenchmarks that target various vector memory operations have been created with the aim of facilitating performance and correctness evaluation, both for the tool presented in this thesis, and for any other tool which seeks to implement similar functionality. Performance in real-world scenarios was measured with applications from the SPEC OMP2012 benchmark suite, using the JUBE benchmarking environment.

OpenAccess:
Download fulltext PDF
(additional files)

Dokumenttyp
Bachelor Thesis

Format
online

Sprache
English

Interne Identnummern
RWTH-2023-10915
Datensatz-ID: 973639

Beteiligte Länder
Germany

 GO


OpenAccess

QR Code for this record

The record appears in these collections:
Document types > Theses > Bachelor Theses
Publication server / Open Access
Faculty of Computer Science (Fac.9)
Public records
Publications database
120000
123010

 Record created 2023-11-21, last modified 2025-10-20


OpenAccess:
Download fulltext PDF
(additional files)
Rate this document:

Rate this document:
1
2
3
 
(Not yet reviewed)