I’m running a FORTRAN program that’s using OpenACC and the pgf90 compiler. The program is running on a machine with 4 K20’s in it.
In the code I have an OpenACC data region and inside that a number of kernels. I want to run all the code on a single K20, but currently when I’m running the code it’s running on multiple of the GPGPUs, and therefore not finding data that should be available. Errors like this are what I’m getting:
launch CUDA kernel file=/home/h018/adrianj/Turbine/src_true_2D_18_09_2013/update.f function=update_bhb line=1189 device=1 grid=1x7 block=128
launch CUDA kernel file=/home/h018/adrianj/Turbine/src_true_2D_18_09_2013/update.f function=update_bhb line=1577 device=1 grid=1x7 block=128
FATAL ERROR: data in PRESENT clause was not found on device 2: name=hbstb
file:/home/h018/adrianj/Turbine/src_true_2D_18_09_2013/update.f update_bhb line:1611
Is there any way to restrict all the kernels in a data region to run on a single GPGPU?
I am setting acc_set_device_num (to 1 in this case) but it doesn’t seem to be stopping multiple devices being used.