Hi Mat,
I have made my mini app a bit more representative of my full application. “wptr” is now a three dimensional array. it looks like wptr[id][ia][iv] . id is the message index, ia is the cpu index and iv is the variable index. In my previous simple mini app, I only have the variable index iv. I have managed to make it work with wptr as 3D arrays, but when I compile the code, the output is:
main:
105, Generating enter data copyin(wptr[:nmsg])
108, Generating enter data copyin(wptr->[:ncpu])
111, Generating enter data copyin(wptr->->[:nv])
116, Generating enter data copyin(data[:nv],iref[:nq],sdata[:nq*nv],sbuf[:ssize])
Generating present(iref[:nq])
Generating NVIDIA GPU code
116, #pragma acc loop gang /* blockIdx.x */
123, Generating present(data[:nv])
Generating NVIDIA GPU code
123, #pragma acc loop gang /* blockIdx.x */
125, #pragma acc loop seq
125, Complex loop carried dependence of data->,data->-> prevents parallelization
133, Generating update self(sdata[:nq*nv])
161, Generating enter data copyin(rdata[:nq*nv])
170, Generating present(wptr[:][:][:],data[:nv])
172, Generating NVIDIA GPU code
172, #pragma acc loop seq
179, Accelerator clause: upper bound for dimension 1 of array 'wptr' is unknown
Accelerator clause: upper bound for dimension 0 of array 'wptr' is unknown
Generating update self(wptr[:1][:1][:nv])**
187, Generating update self(rdata[:nq*nv])
200, Generating exit data delete(iref[:1],data[:1][:1],rdata[:1],sdata[:1],sbuf[:1])
205, Generating exit data delete(wptr->->[:1][:1][:1])
207, Generating exit data delete(wptr->[:1][:1][:1])
210, Generating exit data delete(wptr[:1][:1][:1])
void subv<double>(int, int, T1 *, T1 **):
17, Generating present(a[:n2*n1],as[:n1])
Accelerator serial kernel generated
Generating NVIDIA GPU code
20, Generating NVIDIA GPU code
20, #pragma acc loop seq
void pckle<double>(unsigned long *, int, int *, const T1 *, char *):
49, Generating enter data create(tmp[:n])
Generating present(tmp[:n],var[:n],iref[:n])
Generating NVIDIA GPU code
49, #pragma acc loop gang, vector(128) /* blockIdx.x threadIdx.x */
61, Generating exit data copyout(tmp[:n])
I am concerned with the output related to wptr, such as line 179, is this something I should worry about. I have attached my updated mini app.
Thanks in advance,
Feng
main.cpp (5.6 KB)