acc_present_or_create (GNU libgomp)

### 6.21 `acc_present_or_create` – If the data is not present on the device, allocate device memory and map it to host memory. ¶

Description

  This function tests if the host data specified by a and of length len is present or not. If it is not present, device memory is allocated and mapped to host memory. In C/C++, the device address of the newly allocated device memory is returned.

  In Fortran, two (2) forms are supported. In the first form, a specifies a contiguous array section. The second form a specifies a variable or array element and len specifies the length in bytes.

  Note that `acc_present_or_create` and `acc_pcreate` exist for backward compatibility with OpenACC 2.0; use `acc_create` – Allocate device memory and map it to host memory. instead.

C/C++:

  Prototype: | `void *acc_present_or_create(h_void *a, size_t len)`
  Prototype: | `void *acc_pcreate(h_void *a, size_t len)`

Fortran:

  Interface: | `subroutine acc_present_or_create(a)`
  | `type(*), dimension(..) :: a`
  Interface: | `subroutine acc_present_or_create(a, len)`
  | `type(*), dimension(..) :: a`
  | `integer len`
  Interface: | `subroutine acc_pcreate(a)`
  | `type(*), dimension(..) :: a`
  Interface: | `subroutine acc_pcreate(a, len)`
  | `type(*), dimension(..) :: a`
  | `integer len`

Reference:

  OpenACC specification v2.6, section 3.2.21.