if i use array instead of ptr uncheckedarray, then i don't need dealloc. right?? import strformat {.emit:""" #include "openacc.h" """.} const num = 128 proc test() = var a : array[num, cdouble] var b : array[num, cdouble] var c : array[num,array[num, cdouble]] var d : array[num, cdouble] for i in 0 ..< num: a[i] = i.cdouble b[i] = (num - i).cdouble echo "a[7] = ", $a[7], " | b[7] = ", $b[7] echo "before : c[7][7] = ", $c[7][7] const annot = "\n#pragma acc data " & fmt"copyin(a[:{num}],b[:{num}],c[:{num}][:{num}],d[:{num}]) " & "\n#pragma acc kernels" {.emit:annot.} block: for jj in `||`(0,num-1,""): d[jj] = jj.cdouble for i in `||`(0,num-1, ""): for j in `||`(0,num-1,""): c[i][j] = a[i] * b[j] + d[j] {.emit:"\n#pragma acc data " & fmt"copyout(c[:{num}][:{num}])".} echo "after : c[7][7] = ", $c[7][7] when isMainModule: test() Run
a[7] = 7.0 | b[7] = 121.0 before : c[7][7] = 0.0 after : c[7][7] = 854.0 Run