Abstract
Programming multicore embedded systems is a
real challenge and is often realized using OpenMP that is used to
parallelize sequential code. Unfortunately, auto-parallelizers and
modern compilers can provide only limited auto-parallelization
potential for embedded code that contains use of pointers and
nested conditional statements, together with complicated data and
control dependencies. Nevertheless, many of these loops could
have been manually parallelized using the same building blocks
of loop transformations. This can be done by using the fact that
the programmer knows the intended semantic of the loop and thus
can modify the code, overcoming dependencies which the
automatic parallelizer cannot ignore.
To help developers with this parallelization effort, we introduce
a new source-level advisory tool called OCA - Optimizing Code
Advisor, which provides recommendations on possible loop
parallelization. The recommendations are formed by constructing
basic and compound loop transformations extracted from a
symbolic analysis applied on the program’s Abstract Syntax Tree.
The OCA tool is an Eclipse plugin that provides the programmer
with the needed steps on how to manually parallelize the code in
order to extract maximal performance using OpenMP [10]
constructs. OCA’s recommendations cannot be applied
automatically to refactor the code but rather to be used as
guidelines on how to apply them manually as it relies on the user
to handle issues that may arise from memory aliasing and
memory side effects.
We applied OCA recommendations on the Bzip2 [11] source code
and were able to show the parallelization effectiveness of the too
real challenge and is often realized using OpenMP that is used to
parallelize sequential code. Unfortunately, auto-parallelizers and
modern compilers can provide only limited auto-parallelization
potential for embedded code that contains use of pointers and
nested conditional statements, together with complicated data and
control dependencies. Nevertheless, many of these loops could
have been manually parallelized using the same building blocks
of loop transformations. This can be done by using the fact that
the programmer knows the intended semantic of the loop and thus
can modify the code, overcoming dependencies which the
automatic parallelizer cannot ignore.
To help developers with this parallelization effort, we introduce
a new source-level advisory tool called OCA - Optimizing Code
Advisor, which provides recommendations on possible loop
parallelization. The recommendations are formed by constructing
basic and compound loop transformations extracted from a
symbolic analysis applied on the program’s Abstract Syntax Tree.
The OCA tool is an Eclipse plugin that provides the programmer
with the needed steps on how to manually parallelize the code in
order to extract maximal performance using OpenMP [10]
constructs. OCA’s recommendations cannot be applied
automatically to refactor the code but rather to be used as
guidelines on how to apply them manually as it relies on the user
to handle issues that may arise from memory aliasing and
memory side effects.
We applied OCA recommendations on the Bzip2 [11] source code
and were able to show the parallelization effectiveness of the too
Original language | American English |
---|---|
State | Published - 18 Dec 2023 |
Event | mcsoc 2023: 16th IEEE International Symposium on Embedded Multicore/manycore Systems-On-Chip - Singapore Duration: 18 Dec 2023 → 21 Feb 2024 Conference number: 16 https://mcsoc-forum.org/site/index.php/2023-final-program/ |
Conference
Conference | mcsoc 2023 |
---|---|
Period | 18/12/23 → 21/02/24 |
Internet address |