EnsureDeviceBuffers_Scalar3D Subroutine

public subroutine EnsureDeviceBuffers_Scalar3D(this)

Grow each device buffer to hold the current logical array, reusing the existing allocation when the bytes already fit (AMR Stage 6b). A device pointer carries no shape, so unlike the host side no remapping is needed - only a byte-capacity check.

Arguments

TypeIntentOptionalAttributesName
class(Scalar3D), intent(inout) :: this

Calls

proc~~ensuredevicebuffers_scalar3d~~CallsGraph proc~ensuredevicebuffers_scalar3d EnsureDeviceBuffers_Scalar3D ensuredevicebuffer ensuredevicebuffer proc~ensuredevicebuffers_scalar3d->ensuredevicebuffer

Called by

proc~~ensuredevicebuffers_scalar3d~~CalledByGraph proc~ensuredevicebuffers_scalar3d EnsureDeviceBuffers_Scalar3D proc~init_scalar3d Init_Scalar3D proc~init_scalar3d->proc~ensuredevicebuffers_scalar3d proc~resize_scalar3d Resize_Scalar3D proc~resize_scalar3d->proc~ensuredevicebuffers_scalar3d

Contents


Source Code

  subroutine EnsureDeviceBuffers_Scalar3D(this)
    !! Grow each device buffer to hold the current logical array, reusing the existing allocation
    !! when the bytes already fit (AMR Stage 6b). A device pointer carries no shape, so unlike the
    !! host side no remapping is needed - only a byte-capacity check.
    implicit none
    class(Scalar3D),intent(inout) :: this

    call EnsureDeviceBuffer(this%interior_gpu,this%alloc_interior,sizeof(this%interior))
    call EnsureDeviceBuffer(this%boundary_gpu,this%alloc_boundary,sizeof(this%boundary))
    call EnsureDeviceBuffer(this%extBoundary_gpu,this%alloc_extBoundary, &
                            sizeof(this%extBoundary))
    call EnsureDeviceBuffer(this%avgBoundary_gpu,this%alloc_avgBoundary, &
                            sizeof(this%avgBoundary))
    call EnsureDeviceBuffer(this%boundarynormal_gpu,this%alloc_boundarynormal, &
                            sizeof(this%boundarynormal))

  endsubroutine EnsureDeviceBuffers_Scalar3D