Cesar Philippidis
2018-06-29 19:04:58 UTC
The attached patch adds support Fortran support for OpenACC deviceptr
and the use of common block variables in data clauses (both implicit and
explicit). This patch also relaxes the Fortran parser to not error
certain types of integral expressions and assumed-sized arrays.
With respect to those errors, I removed them because a lot of working
applications do not explicitly use type attributes (like contiguous).
Perhaps it would be better to reduce them to a warning. Any thoughts on
that? My argument for their removal is that, while the standard states
that, say, arrays must be contiguous or bad things will happen, it does
not necessary mandate that the compiler enforces it. I.e., the intent is
to set the user's expectation that things will go bad if garbage input
is fed to the accelerator. If necessary, I can push back on the OpenACC
standards committee on these issue, but don't expect a quick resolution.
In hindsight, I probably should have kept the error relaxation patches
separate. This patch includes the following patches from og8:
* (dd8b75a) [OpenACC] Update deviceptr handling
* (634727d) [OpenACC] Handle Fortran deviceptr clause
* (d50862a) [Fortran] Remove pointer check in check_array_not_assumed
* (0793cef) [OpenACC] add support for fortran common blocks
* (bdc1acc) [Fortran] update gfortran's tile clause error handling
* (5dc4968) Fix PR72715 "ICE in gfc_trans_omp_do, at
fortran/trans-openmp.c:3164"
Is this patch OK for trunk? It bootstrapped / regression tested cleanly
for x86_64 with nvptx offloading.
Thanks,
Cesar
and the use of common block variables in data clauses (both implicit and
explicit). This patch also relaxes the Fortran parser to not error
certain types of integral expressions and assumed-sized arrays.
With respect to those errors, I removed them because a lot of working
applications do not explicitly use type attributes (like contiguous).
Perhaps it would be better to reduce them to a warning. Any thoughts on
that? My argument for their removal is that, while the standard states
that, say, arrays must be contiguous or bad things will happen, it does
not necessary mandate that the compiler enforces it. I.e., the intent is
to set the user's expectation that things will go bad if garbage input
is fed to the accelerator. If necessary, I can push back on the OpenACC
standards committee on these issue, but don't expect a quick resolution.
In hindsight, I probably should have kept the error relaxation patches
separate. This patch includes the following patches from og8:
* (dd8b75a) [OpenACC] Update deviceptr handling
* (634727d) [OpenACC] Handle Fortran deviceptr clause
* (d50862a) [Fortran] Remove pointer check in check_array_not_assumed
* (0793cef) [OpenACC] add support for fortran common blocks
* (bdc1acc) [Fortran] update gfortran's tile clause error handling
* (5dc4968) Fix PR72715 "ICE in gfc_trans_omp_do, at
fortran/trans-openmp.c:3164"
Is this patch OK for trunk? It bootstrapped / regression tested cleanly
for x86_64 with nvptx offloading.
Thanks,
Cesar