The Challenges Faced by OpenACC Compilers
Presenter
Event Type
Workshop
Accelerators
Compilers
Parallel Programming Languages, Libraries, Models
and Notations
Runtime Systems
TimeMonday, November 13th1pm -
1:30pm
Location712
DescriptionIt is easy to assume that a directive-based system such
as OpenACC solves all the problems faced by
compiler-developers for high performance architectures.
After all, the hard part of optimizing compilers for
high performance architectures is figuring out what
parts of the application to do in parallel, and OpenACC
directives serve up that information to the compiler up
on a platter. What more is left for the compiler writer
to do but to lay back, collect paychecks, and watch
application developers do all of his/her work?
Unfortunately (or fortunately if you are employed as a compiler developer), the world is not so simple. While OpenACC directives definitely simplify development of some parts of optimizing compilers, they introduce a new set of challenges. Just because a user has said a loop can be done in parallel does not mean that the compiler automatically knows how to schedule it in parallel. For that matter, is the user actually applying intelligence when inserting directives, or is she/he instead randomly inserting directives to see what runs faster? The latter occurs far more often than many people suspect.
This talk briefly overviews the challenges faced by a compiler that targets high performance architectures and the assistance in meeting those challenges provided by a directive-based system like OpenACC. It will then present the challenges introduced to the compiler by directive-based systems, with the intent of steering application developers toward an understanding of how to assist compilers in overcoming the challenges and obtaining supercomputer performance on applications without investing superhuman effort.
Unfortunately (or fortunately if you are employed as a compiler developer), the world is not so simple. While OpenACC directives definitely simplify development of some parts of optimizing compilers, they introduce a new set of challenges. Just because a user has said a loop can be done in parallel does not mean that the compiler automatically knows how to schedule it in parallel. For that matter, is the user actually applying intelligence when inserting directives, or is she/he instead randomly inserting directives to see what runs faster? The latter occurs far more often than many people suspect.
This talk briefly overviews the challenges faced by a compiler that targets high performance architectures and the assistance in meeting those challenges provided by a directive-based system like OpenACC. It will then present the challenges introduced to the compiler by directive-based systems, with the intent of steering application developers toward an understanding of how to assist compilers in overcoming the challenges and obtaining supercomputer performance on applications without investing superhuman effort.
Presenter




