Hi Sebastian,

thanks for your interest!

Sebastian Galindo:
1. Is there some link to read more about the features mentioned? (Example: OpenACC bind clause) 2. Do you recommend any docs or references for getting familiarized with OpenACC related code?
3. Do you want me to look or study some specific region of the code?

In general, what matters at the end is the specification; if something is unclear, it can be clarified (up to fixing/changing the specification). The latest is 3.4 → https://www.openacc.org/specification ; GCC supports most of 2.6/2.7.

As OpenACC introduction, have a look at https://www.openacc.org/resources

On the GCC side, there is at https://gcc.gnu.org/onlinedocs/libgomp/ , https://gcc.gnu.org/wiki/OpenACC and https://gcc.gnu.org/wiki/Offloading (some wiki pages are a bit outdated).

Most OpenACC features consists of parsing a construct in the C, C++ and Fortran compiler, some generic code handling – and at the end calling into the runtime library. API routines only affect the runtime

In the compiler and in the runtime: OpenACC and OpenMP sometimes use exactly the same code path and sometimes separate code paths, which can be sometimes confusing.

The run-time side is libgomp/ – which used for both OpenMP and OpenACC; the host-side code for running on GPUs is in libgomp/plugin/plugin-{gcn,nvptx}.c. Otherwise libgomp is both compiled on the host and also (in a reduced form) on the GPU.

Regarding bind: I think the description is somewhat clear in the specification. For the identifier topic: In Fortran, names are lowercase and have by default a '_' suffix and, in C++, the function signature is manged into the name.

Tobias

Reply via email to