call to cuMemHostRegister returned error 1

Dear All,

I get this error "call to cuMemHostRegister returned error 1 " when I run my Fortran program using OpenACC directives.
Our version of PGI is 13.2 and we are running this program on a NVIDIA M2070

One thing that is unique here is that one of the array is a four-dimensional array in Fortran. So my question is what am I doing wrong here. Do I need to provide array indices in the copyin? Please help.

… program

!$acc data copyin(a,b,c), create(t,u)
! here “a” is a four dimensional array, and “b” & “c” are 2d array

!$acc kernels

!$acc end kernels

!$acc update host(a)

!$acc end data

! prgram end

Hi AmitSMU,

“cuMemHostRegister” is the call to lock host page-memory. So my best guess is the error is occurs at your update host directive. You can double check by setting the environment variable “PGI_ACC_DEBUG=1” to see all the calls made to the CUDA run time.

Now why this is occurring, I unfortunately can’t tell. Error 1 means that an invalid value was passed to “cuMemHostRegister”. If you can send a reproducing example to PGI Customer Service ( we should be able to determine what value and why it’s invalid.