I am porting a large piece of fortran 90 software to GPGPUs, using mainly openacc directives. Compiling a particular module results in the following messages (after some successful parallelisation):
17468, Generating present_or_copy(g_contrib(:))
17469, Loop is parallelizable
Accelerator kernel generated
17469, !$acc loop gang, vector(128) ! blockidx%x threadidx%x
/tmp/pgcudaforqkwcWMmDq0Ld.gpu(118): error: expression must have class type
/tmp/pgcudaforqkwcWMmDq0Ld.gpu(121): error: expression must have class type
/tmp/pgcudaforqkwcWMmDq0Ld.gpu(165): error: expression must have class type
/tmp/pgcudaforqkwcWMmDq0Ld.gpu(168): error: expression must have class type
/tmp/pgcudaforqkwcWMmDq0Ld.gpu(212): error: expression must have class type
I then get a load more of these errors, until it bugs out complaining there are too many. I have commented out the content of all of the subroutines following line 17469 in the module and this does not change the errors.
In case it helps here is an example of one of the lines in the temporary file that this is referring to (line 165):
_d_1 = (( double)(((p3)+(-16))+((_i_1))))+(((p4.r)(Rf_23))((Rx_24)*(1.73205080756887719E+0)));
Can anyone help me understand these error messages.
Many thanks!