how to check which version of OpenACC API is being used by the PGI compiler

Hello,

It seems that array reduction starts to be supported in OpenACC API 2.7 (What's new in OpenACC 2.7! | OpenACC), but I cannot find information/confirmation on whether API 2.7 has been fully adopted by the PGI compiler 19.4. I tried the PGI compiler release notes (PGI Release Notes Version 19.9 for x86 and NVIDIA Processors) and the API 2.7documentation (https://www.openacc.org/sites/default/files/inline-files/OpenACC.2.7.pdf).

As a general question, how can I check which version of OpenACC API is being used by the PGI compiler I am currently using?

Thanks,
Shine

Hi Shine,

We’re still in the process of adding the new OpenACC 2.7 features with PGI 19.10 currently support up to the 2.6 standard.

The “_OPENACC” macro is defined to the standard’s release date. With 2.6 being “201711” and 2.7 using “201811”.

For example:

% cat test.F90
program foo
  use openacc
  print *, _OPENACC
end program foo
% pgfortran -acc test.F90
% a.out
       201711

Hope this helps,
Mat

Thanks, Mat, for your helpful information. Yes, with your code, I can tell that my PGI 19.4 is using the OpenACC API 2.6.

Thanks,
Shine

Hi Mat:

I was looking at this post and tried the following:

program foo
  use openacc
  print *, _OPENACC
end program foo

Then I compile with

C:\brandnewR>pgfortran -acc test.f90
./test.exf: warning: unknown section "_RDATA" found, executable not
  stripped.  Use the linker's /merge option to merge this section
  with another.  Example: "/merge:_RDATA=.data"

C:\brandnewR>test.exe
    0.000000

I’m using Windows with Community edition. What am I doing wrong, please?
Thanks,
Erin

Hi again!

I used the -cpp option during compilation and it worked fine.

Thanks though!

Sincerely,
Erin

Hi Erin,

FYI, “.F90” suffix will have the compiler implicitly preprocess the source file. However “.f90” are not preprocessed by default. For these files, you’ll need to add “-Mpreprocess” or, as you note, “-cpp”.

-Mat

Great!

Thanks