I have the following code I am lloking to accelerate
INTEGER, ALLOCATABLE :: yxv(:,:,:)
COMPLEX(kind=cx_kind),ALLOCATABLE :: k(:,:,:)
ALLOCATE( yxv(0:NDIR-1, 1:order+1, 1:nterms) )
ALLOCATE( k(0:NDIR-1, 1:order+1, 1:npoints) )
…
!$acc region copy(k,yxv)
!$acc do parallel
DO px = 1,npoints
DO ix = 1,nterms
DO rx = 1,order+1
DO mux = 0,NDIR-1
k(mux,rx,px) = k(mux,rx,px)*yxv(mux,rx,ix)
END DO
END DO
END DO
END DO
!$acc end region
I get the following message when I compile and the kernel fails to launch when I run it.
151, Generating copy(k(:,:,:))
Generating copy(yxv(:,:,:))
154, Accelerator restriction: scalar variable live-out from loop: ix
Accelerator restriction: scalar variable live-out from loop: .dY0003
Loop carried dependence due to exposed use of ‘k(0:3,1:order+1,i1+1)’ prevents parallelization
155, Accelerator restriction: scalar variable live-out from loop: rx
Accelerator restriction: scalar variable live-out from loop: .dY0004
156, Accelerator restriction: scalar variable live-out from loop: mux
Accelerator restriction: scalar variable live-out from loop: .dY0005
Inner sequential loop scheduled on accelerator
Accelerator kernel generated
153, !$acc do parallel
154, !$acc do seq
Non-stride-1 accesses for array ‘yxv’
155, !$acc do seq
156, !$acc do seq
157, Accelerator restriction: induction variable live-out from loop: px
Accelerator restriction: induction variable live-out from loop: ix
Accelerator restriction: induction variable live-out from loop: rx
Accelerator restriction: induction variable live-out from loop: mux
158, Accelerator restriction: induction variable live-out from loop: mux
Accelerator restriction: induction variable live-out from loop: .dY0005
159, Accelerator restriction: induction variable live-out from loop: rx
Accelerator restriction: induction variable live-out from loop: .dY0004
160, Accelerator restriction: induction variable live-out from loop: ix
Accelerator restriction: induction variable live-out from loop: .dY0003
161, Accelerator restriction: induction variable live-out from loop: px
Accelerator restriction: induction variable live-out from loop: .dY0002
What do these compile messages suggest especially “induction variable live-out from loop”