This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Accelerator BOF at GNU Tools Cauldron
- From: Torvald Riegel <triegel at redhat dot com>
- To: gcc at gcc dot gnu dot org
- Date: Thu, 27 Jun 2013 13:03:36 +0200
- Subject: Accelerator BOF at GNU Tools Cauldron
We will have a BOF on accelerators at GNU Tools Cauldron: Sunday July
14, 11:30am. Below is an abstract. If you have any comments in
advance, for example further suggestions about what to discuss at his
BOF or at Cauldron, please let me know.
In this BOF, we will discuss how we can support accelerators (e.g.,
GPGPUs) in GCC. This is a rather wide problem and raises questions
ranging from which programming abstractions to support (e.g., OpenMP 4.0
accelerator extensions, OpenACC, and others) to which accelerator
(virtual) ISAs to support -- and everything in between. Therefore, the
primary goal of this BOF is to start the discussion about how to
approach this problem and which initial steps we might take.
Possible sub-topics for discussion include:
* Front-end issues: Which programming abstractions for parallelization
on accelerators at the programming-language level do we target first?
OpenMP 4.0 will include accelerator abstractions; OpenACC has similar
features. Are there features that are shared across several
programming abstractions (e.g., ways to put constraints on regions of
code so that it can indeed be executed on a particular accelerator)?
* Which infrastructure do we need in the middle-end to support different
language-level abstractions without a lot of duplicated code? Which
GCC-internal abstractions do we need? Can we have a single shared
internal representation of accelerator code? How do we deal with
issues such as heterogeneous accelerator hardware or separate address
spaces on accelerators? How do we represent communication between
hosts and accelerators? Is the current SIMD support sufficient for
accelerator code too?
* Back-end questions: Which (virtual) architectures do we want to target
first? Should we target low-level programming abstractions such as
OpenCL, too? Which additional runtimes do we want to -- or need to --
bind to? Can/should we target existing runtimes, or do we need to
build our own (glue) layers?
* Testing: Do we need anything special to test all of this?
* Other GNU tools: What do we need to do in other tools such as GDB?
Torvald