Abstract:
|
Nowadays, productivity is the buzzword in any computer science area. Several
metrics have been defined in order to measure the productivity in any type of
system. Some of the most important are the performance, the programmability,
the cost or the power usage. From architects to programmers, the improvement
of the productivity has became an important aspect of any development.
Programming models play an important role in this topic. Thanks to the expressiveness
of any high level representation not specified for any particular
architecture, and the extra level of abstraction they contribute against specific
programming languages, programming models aim to be a cornerstone in the
enhancement of the productivity.
OmpSs is a programming model developed at the Barcelona Supercomputing
Center, built on the top of the Mercurium compiler and the Nanos++
runtime library, which aims to exploit task level parallelism and heterogeneous
architectures. This model covers many productivity aspects such as the
programmability, defining easy directives that can be integrated in sequential
codes avoiding the need of restructuring the originals to get parallelism, and
the performance, allowing the use of these directives to give support to multiple
architectures and support for asynchronous parallelism.
Nonetheless, not only the convenient design of a programming model and the
use of a powerful architecture can help in the achievement of good productivity.Compilers are crucial in the communication between these two components in
computers. They are meant to exploit both the underlying architectures and
the programmers codes. In order to do that, analysis and optimizations are the
techniques that can procure better transformations.
Therefore, we have focused our work in the enhancement of the productivity
of OmpSs by means of implementing a set of high level analysis and optimizations
in the Mercurium compiler. They address two directions: obtain better
performance by improving the code generation and improve the programmability
of the programming model relieving the programmer of some tedious and
error-prone tasks. Since Mercurium is a source-to-source compiler, we have
applied these analyses in a high level representation and they are important
because they are architecture independent and, thereupon, they can be useful
for any target device in the back-end transformations. |