Allocates a given devmem.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(acc_devmem_type), | intent(inout) | :: | this | |||
type(acc_devmem_type), | intent(in) | :: | pointee | |||
integer, | intent(in) | :: | size_in_bytes | |||
integer, | intent(in) | :: | lb_in_bytes |
SUBROUTINE acc_devmem_set_cptr(this, pointee, size_in_bytes, lb_in_bytes) !! Allocates a given devmem. TYPE(acc_devmem_type), INTENT(INOUT) :: this TYPE(acc_devmem_type), INTENT(IN) :: pointee INTEGER, INTENT(IN) :: size_in_bytes, lb_in_bytes #if ! defined (__DBCSR_ACC) MARK_USED(this) MARK_USED(pointee) MARK_USED(size_in_bytes) MARK_USED(lb_in_bytes) DBCSR_ABORT("__DBCSR_ACC not compiled in.") #else INTEGER :: istat IF (this%size_in_bytes >= 0) & DBCSR_ABORT("acc_devmem_set_cptr: already allocated") IF (pointee%size_in_bytes < 0 .AND. size_in_bytes > 0) & DBCSR_ABORT("acc_devmem_set_cptr: out-of-bounds") IF (size_in_bytes > 0) THEN IF ((lb_in_bytes + size_in_bytes) .GT. pointee%size_in_bytes) & DBCSR_ABORT("acc_devmem_set_cptr: out-of-bounds") this%size_in_bytes = size_in_bytes istat = acc_interface_dev_mem_set_ptr(this%cptr, pointee%cptr, INT(lb_in_bytes, KIND=C_SIZE_T)) ELSE ! Empty buffers this%size_in_bytes = pointee%size_in_bytes this%cptr = pointee%cptr END IF #endif END SUBROUTINE acc_devmem_set_cptr