gpufort
gpufort copied to clipboard
WiP: New OpenACC features for GPUFORT runtime
FEATURES:
-
Initial support for acc declare
-
OpenACC (gpufort runtime)
- offloaded loops:
- add
defaultclause handling - default strategy is
present_or_copyif neitherdefault(none)nordefault(present)s specified.
- add
- Initial support for acc declare (module/subroutine/function/program variables, fixed-size, allocatable, pointer)
- offloaded loops:
-
Add interoperable GPUFORT array datatype (up to 7 dimensions; autogenerated):
- Manage host and device pointer pair (can be null)
- Either wrap exisiting pointers or
- Allocate (pinned) host memory requested
- Allocate device memory if requested
- Provide H2D, D2H copy operations
- Encode bounds and sizes of an Fortran array
- Can be configured to perform H2D, D2H copy operations at init/destruction
- In C++, equipped with
operator()(int i1, int i2, ...)to support Fortran style array indexing in C++ code. No index macros.
- Manage host and device pointer pair (can be null)
-
Will be used by GPUFORT to construct interoperable derived types from non-interoperable device types. This will allow
AoSsyntax such as:domains(5).cells(i).coord_xin GPUFORT C++ code, which is analogous to the Fortran equivalent:domain(5)%cells(i)%coord_x.
BUGFIXES:
- Fix crash when encountering top-level subroutines/functions.