Cargando…
Parallelization of the AliRoot event reconstruction by performing a semi- automatic source-code transformation
<!--HTML-->Chip multiprocessors are going to support massive parallelism to provide further processing capacities by adding more and more physical and logical cores. Unfortunately the growing number of cores come along with slower advances in speed and size of the main memory, the cache hi...
Autor principal: | |
---|---|
Lenguaje: | eng |
Publicado: |
2012
|
Materias: | |
Acceso en línea: | http://cds.cern.ch/record/1460884 |
Sumario: | <!--HTML-->Chip multiprocessors are going to support massive parallelism to provide
further processing capacities by adding more and more physical and logical
cores. Unfortunately the growing number of cores come along with slower
advances in speed and size of the main memory, the cache hierarchy, the front-
side bus or processor interconnections. Parallelism can only result in
performance gain, if the memory usage is optimized, memory locality improved
and the communication between threads is minimized. But the domain of
concurrent programming has become a field for highly skilled experts, as the
implementation of multithreading is difficult, error prone and labor intensive.
A full re-implementation for parallel execution of existing offline frameworks,
like AliRoot in ALICE, is thus unaffordable. An alternative method, is to use a
semi-automatic source-to-source transformation for getting a simple parallel
design, with almost no interference between threads. This reduces the need of
rewriting the developed software and avoids excessive communication between
threads.
This paper evaluates the adaption of the AliRoot event reconstruction, by
taking the following steps: introduction of thread-safety to bring the
original sequential and thread unaware source-code into the position of using
multithreading; identification of classes that can be shared between threads as
a method to reduce the memory footprint; transformation of the source code to
share these classes; verification of the resulting code to localize and
eliminate any remaining interferences between threads. |
---|