Compilling error with deepcopy option

Hi,

Recently I have problems with acc declare copyin(list) together with deepcopy option
If I put more than 3 variables in the list, an error is raised.

Here is a piece of code to reproduce the error.

$ cat test2.F90

MODULE testmod
IMPLICIT NONE
SAVE
integer, parameter :: dp = selected_real_kind(15, 307)
REAL(KIND=dp), parameter :: a=1.0_dp
REAL(KIND=dp), parameter :: b=1.0_dp
REAL(KIND=dp), parameter :: c=1.0_dp
REAL(KIND=dp), parameter :: d=1.0_dp

!$acc declare copyin(a,b,c,d)
END MODULE testmod

The test was performed on an A100 GPU with NVHPC 21.9:
$ nvfortran -O2 -acc -gpu=cc80,deepcopy -c test2.F90

nvfortran-Fatal-/ceph/hpc/software/nvidia/hpc_sdk/Linux_x86_64/21.9/compilers/bin/tools/fort2 TERMINATED by signal 11
Arguments to /ceph/hpc/software/nvidia/hpc_sdk/Linux_x86_64/21.9/compilers/bin/tools/fort2
/ceph/hpc/software/nvidia/hpc_sdk/Linux_x86_64/21.9/compilers/bin/tools/fort2 /tmp/nvfortranD0C4bxrhh5q0Q.ilm -fn test2.F90 -opt 2 -terse 1 -inform warn -x 51 0x20 -x 119 0xa10000 -x 122 0x40 -x 123 0x1000 -x 127 4 -x 127 17 -x 19 0x400000 -x 28 0x40000 -x 120 0x10000000 -x 70 0x8000 -x 122 1 -x 125 0x20000 -quad -vect 56 -y 34 16 -x 34 0x8 -x 32 134217728 -y 19 8 -y 35 0 -x 42 0x30 -x 39 0x40 -x 42 0x20000 -x 39 0x80 -x 59 4 -x 129 2 -tp zen -x 120 0x1000 -x 124 0x1400 -y 15 2 -x 57 0x3b0000 -x 58 0x48000000 -x 49 0x100 -astype 0 -x 121 1 -x 183 4 -x 121 0x800 -x 68 0x1 -x 8 0x40000000 -x 70 0x40000000 -x 56 0x10 -x 54 0x10 -x 249 110 -x 68 0x20 -x 70 0x40000000 -x 8 0x40000000 -x 164 0x800000 -x 85 0x2000 -x 85 0x4000 -x 34 0x40000000 -x 53 0x800000 -x 206 0x02 -x 68 0x1 -x 39 4 -x 56 0x10 -x 26 0x10 -x 26 1 -x 56 0x4000 -x 124 1 -accel tesla -accel host -x 180 0x4000400 -x 121 0xc00 -x 186 0x80 -x 180 0x4000400 -x 121 0xc00 -x 194 0x40000 -x 163 0x1 -x 186 0x80000 -cudaver 11040 -x 176 0x100 -cudacap 80 -cudaroot /ceph/hpc/software/nvidia/hpc_sdk/Linux_x86_64/21.9/cuda/11.4 -x 215 0x2 -x 2 0x400 -cudaroot /ceph/hpc/software/nvidia/hpc_sdk/Linux_x86_64/21.9/cuda/11.4 -x 176 0x100 -cudacap 80 -x 189 0x8000 -y 163 0xc0000000 -x 201 0xf0000000 -x 189 0x10 -y 189 0x4000000 -cudaroot /ceph/hpc/software/nvidia/hpc_sdk/Linux_x86_64/21.9/cuda/11.4 -x 187 0x40000 -x 187 0x8000000 -x 9 1 -x 72 0x1 -x 136 0x11 -x 37 0x480000 -x 9 1 -x 72 0x1 -x 136 0x11 -x 37 0x480000 -cci /tmp/nvfortranf0C4bpCHcAWLk.cci -cmdline '+nvfortran test2.F90 -O2 -Mvect=simd -acc -gpu=cc80,deepcopy -c' -stbfile /tmp/nvfortranT0C4bh_mTEFNO.stb -asm /tmp/nvfortrann0C4bNlRyIpac.ll

Instead of 4 variables, if I put only three, it works

!$acc declare copyin(a,b,c)

If I remove the deepcopy option, it compiles as well as expected.

I would like to ask for your help and find out what the problem is.
Many thanks.

best
qiang

Hi Qiang,

That’s an odd one given there’s no types that require deep copy and it seems to only occur if these are parameters. I’m able to reproduce the error so added a problem report, TPR #31979.

Though, you don’t need to include parameters in declare directives. Since they are constant, the value will be propagated into the device code. Hence the work around is to remove them.

-Mat

Thanks for the help!

qiang

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.