Hi Mat!

Is it true PGI copy data to GPU from FORTRAN DATA section each time at kernel launch? This behavior seems very strange. For example,

```
2163 !$acc data copyin(vr,vg,Dr,Dg,crg,cre,cgg,cge,dtr,dtg,N0r_exp,N0g_exp,r_r,r_g) &
2164 !$acc copyout(tcg_racg,tmr_racg,tcr_gacr,tmg_gacr,tnr_racg, &
2165 !$acc tnr_gacr) create(N_r)
2166 do km = km_s, km_e
2167 m = km / ntb_r1 + 1
2168 k = mod( km , ntb_r1 ) + 1
2169 lam_exp = (N0r_exp(k)*am_r*crg(1)/r_r(m))**ore1
2170 lamr = lam_exp * (crg(3)*org2*org1)**obmr
2171 N0_r = N0r_exp(k)/(crg(2)*lam_exp) * lamr**cre(2)
2172 !$acc kernels
2173 do n2 = 1, nbr
2174 N_r(n2) = N0_r*Dr(n2)**mu_r *DEXP(-lamr*Dr(n2))*dtr(n2)
2175 enddo
```

PGI reports

```
2163, Generating create(n_r(:))
Generating copyout(tnr_gacr(:,:,:,:))
Generating copyout(tnr_racg(:,:,:,:))
Generating copyout(tmg_gacr(:,:,:,:))
Generating copyout(tcr_gacr(:,:,:,:))
Generating copyout(tmr_racg(:,:,:,:))
Generating copyout(tcg_racg(:,:,:,:))
Generating copyin(dtg(:))
Generating copyin(dtr(:))
Generating copyin(cge(:))
Generating copyin(cgg(:))
Generating copyin(cre(:))
Generating copyin(crg(:))
Generating copyin(dg(:))
Generating copyin(dr(:))
Generating copyin(vg(:))
Generating copyin(vr(:))
2172, Generating present_or_copyin(dg(:))
Generating present_or_copyin(dtg(:))
Generating present_or_copyin(cgg(:))
Generating present_or_copyin(n0g_exp$ac(:))
Generating present_or_copyin(r_g$ac(:))
Generating present_or_copyin(cge(:))
Generating present_or_copyin(vr(:))
Generating present_or_copyin(vg(:))
Generating present_or_copyout(tcg_racg(:,:,:,:))
Generating present_or_copyin(r_r$ac(m))
Generating present_or_copyout(tmr_racg(:,:,:,:))
Generating present_or_copyout(tcr_gacr(:,:,:,:))
Generating present_or_copyout(tmg_gacr(:,:,:,:))
Generating present_or_copyout(tnr_racg(:,:,:,:))
Generating present_or_copyout(tnr_gacr(:,:,:,:))
Generating present_or_create(n_r(:))
Generating present_or_copyin(dtr(:))
Generating present_or_copyin(dr(:))
```

there is no copyin record for r_r, r_g, n0g_exp vars on line 2163. As the result I have three memory transfer operations before kernel launch.

```
2163: data copyin reached 10 times
device time(us): total=51 max=6 min=5 avg=5
2172: data copyin reached 4107 times
device time(us): total=23,710 max=60 min=4 avg=5
2173: kernel launched 1369 times
```

Any idea?

Thanks.