Hi,
I am trying to accelerate FVCOM by openACC.
To ensure Correct result, i need to use Atomic operation.
But when i use it, error occurs.
!$acc parallel loop
DO I=1,NE
IA=IEC(I,1)
IB=IEC(I,2)
...
!$acc atomic
XFLUX(IA)=XFLUX(IA)+(XADV+FXX*EPOR(IA))*( 1.0 SP-ISBC TMP )*IUCP(IA)
!$acc atomic
YFLUX(IA)=YFLUX(IA)+(YADV+FYY*EPOR(IA))*( 1.0 SP-ISBC TMP )*IUCP(IA)
!$acc atomic
XFLUX(IB)=XFLUX(IB)-(XADV+FXX*EPOR(IB))*( 1.0 SP-ISBC TMP )*IUCP(IB)
!$acc atomic
YFLUX(IB)=YFLUX(IB)-(YADV+FYY*EPOR(IB))*(1.0 SP-ISBC TMP )*IUCP(IB)
Error:
Accelerator Fatal Error: call to cuStreamSynchronize returned error 700: Tlledal address during kernel execution.
if i don’t use the atomic operation, the program works well, but the result is wrong.
Why it’s generating?how to turn it off?
Thanks,
wjx