m_allocator Module


Uses

  • module~~m_allocator~~UsesGraph module~m_allocator m_allocator module~m_common m_common module~m_allocator->module~m_common module~m_field m_field module~m_allocator->module~m_field m_mpi m_mpi module~m_common->m_mpi module~m_logger m_logger module~m_common->module~m_logger module~m_field->module~m_common iso_c_binding iso_c_binding module~m_field->iso_c_binding module~m_logger->m_mpi iso_fortran_env iso_fortran_env module~m_logger->iso_fortran_env

Used by

  • module~~m_allocator~~UsedByGraph module~m_allocator m_allocator module~m_abl m_abl module~m_abl->module~m_allocator module~m_base_backend m_base_backend module~m_abl->module~m_base_backend module~m_les m_les module~m_abl->module~m_les module~m_adm m_adm module~m_adm->module~m_allocator module~m_adm->module~m_base_backend module~m_turbine_model m_turbine_model module~m_adm->module~m_turbine_model module~m_io_session m_io_session module~m_adm->module~m_io_session module~m_alm m_alm module~m_alm->module~m_allocator module~m_alm->module~m_base_backend module~m_alm->module~m_turbine_model module~m_alm->module~m_io_session module~m_backend_setup m_backend_setup module~m_backend_setup->module~m_allocator module~m_backend_setup->module~m_base_backend module~m_cuda_allocator m_cuda_allocator module~m_backend_setup->module~m_cuda_allocator module~m_cuda_backend m_cuda_backend module~m_backend_setup->module~m_cuda_backend module~m_omp_backend m_omp_backend module~m_backend_setup->module~m_omp_backend module~m_omptgt_allocator m_omptgt_allocator module~m_backend_setup->module~m_omptgt_allocator module~m_omptgt_backend m_omptgt_backend module~m_backend_setup->module~m_omptgt_backend module~m_base_backend->module~m_allocator module~m_base_case m_base_case module~m_base_case->module~m_allocator module~m_base_case->module~m_base_backend module~m_solver m_solver module~m_base_case->module~m_solver module~m_io_manager m_io_manager module~m_base_case->module~m_io_manager module~m_monitoring m_monitoring module~m_base_case->module~m_monitoring module~m_postprocess m_postprocess module~m_base_case->module~m_postprocess module~m_case_abl m_case_abl module~m_case_abl->module~m_allocator module~m_case_abl->module~m_abl module~m_case_abl->module~m_base_backend module~m_case_abl->module~m_base_case module~m_case_abl->module~m_turbine_model module~m_abl_diagnostics m_abl_diagnostics module~m_case_abl->module~m_abl_diagnostics module~m_inflow_planes m_inflow_planes module~m_case_abl->module~m_inflow_planes module~m_turbine_setup m_turbine_setup module~m_case_abl->module~m_turbine_setup module~m_case_channel m_case_channel module~m_case_channel->module~m_allocator module~m_case_channel->module~m_base_backend module~m_case_channel->module~m_base_case module~m_case_channel->module~m_solver module~m_case_cylinder m_case_cylinder module~m_case_cylinder->module~m_allocator module~m_case_cylinder->module~m_base_backend module~m_case_cylinder->module~m_base_case module~m_case_cylinder->module~m_solver module~m_case_factory m_case_factory module~m_case_factory->module~m_allocator module~m_case_factory->module~m_base_backend module~m_case_factory->module~m_base_case module~m_case_factory->module~m_case_abl module~m_case_factory->module~m_case_channel module~m_case_factory->module~m_case_cylinder module~m_case_generic m_case_generic module~m_case_factory->module~m_case_generic module~m_case_tgv m_case_tgv module~m_case_factory->module~m_case_tgv module~m_case_wind_turbine m_case_wind_turbine module~m_case_factory->module~m_case_wind_turbine module~m_case_generic->module~m_allocator module~m_case_generic->module~m_base_backend module~m_case_generic->module~m_base_case module~m_case_generic->module~m_solver module~m_case_tgv->module~m_allocator module~m_case_tgv->module~m_base_backend module~m_case_tgv->module~m_base_case module~m_case_tgv->module~m_solver module~m_case_wind_turbine->module~m_allocator module~m_case_wind_turbine->module~m_base_backend module~m_case_wind_turbine->module~m_base_case module~m_case_wind_turbine->module~m_solver module~m_case_wind_turbine->module~m_turbine_model module~m_case_wind_turbine->module~m_turbine_setup module~m_cuda_allocator->module~m_allocator module~m_cuda_backend->module~m_allocator module~m_cuda_backend->module~m_base_backend module~m_cuda_backend->module~m_cuda_allocator module~m_cuda_poisson_fft m_cuda_poisson_fft module~m_cuda_backend->module~m_cuda_poisson_fft module~m_ibm m_ibm module~m_ibm->module~m_allocator module~m_ibm->module~m_base_backend module~m_ibm->module~m_io_session module~m_memory_estimate m_memory_estimate module~m_memory_estimate->module~m_allocator module~m_time_integrator m_time_integrator module~m_memory_estimate->module~m_time_integrator module~m_omp_backend->module~m_allocator module~m_omp_backend->module~m_base_backend module~m_omptgt_allocator->module~m_allocator module~m_omptgt_backend->module~m_allocator module~m_omptgt_backend->module~m_base_backend module~m_solver->module~m_allocator module~m_solver->module~m_base_backend module~m_solver->module~m_ibm module~m_solver->module~m_time_integrator module~m_vector_calculus m_vector_calculus module~m_solver->module~m_vector_calculus module~m_solver->module~m_les module~m_tdsops_setup m_tdsops_setup module~m_solver->module~m_tdsops_setup module~m_time_integrator->module~m_allocator module~m_time_integrator->module~m_base_backend module~m_turbine_dummy m_turbine_dummy module~m_turbine_dummy->module~m_allocator module~m_turbine_dummy->module~m_base_backend module~m_turbine_dummy->module~m_turbine_model module~m_turbine_dummy->module~m_io_session module~m_turbine_model->module~m_allocator module~m_turbine_model->module~m_base_backend module~m_checkpoint_state m_checkpoint_state module~m_turbine_model->module~m_checkpoint_state module~m_vector_calculus->module~m_allocator module~m_vector_calculus->module~m_base_backend program~x3d2_poisson_solver x3d2_poisson_solver program~x3d2_poisson_solver->module~m_allocator program~x3d2_poisson_solver->module~m_backend_setup program~x3d2_poisson_solver->module~m_base_backend program~x3d2_poisson_solver->module~m_tdsops_setup module~m_abl_diagnostics->module~m_base_backend module~m_abl_diagnostics->module~m_les module~m_checkpoint_manager m_checkpoint_manager module~m_checkpoint_manager->module~m_solver module~m_io_field_utils m_io_field_utils module~m_checkpoint_manager->module~m_io_field_utils module~m_checkpoint_manager->module~m_io_session module~m_stats m_stats module~m_checkpoint_manager->module~m_stats module~m_checkpoint_manager->module~m_checkpoint_state module~m_cuda_memcheck_device m_cuda_memcheck_device module~m_cuda_memcheck_device->module~m_base_case module~m_cuda_memcheck_device->module~m_memory_estimate module~m_cuda_memcheck_device->module~m_cuda_poisson_fft module~m_cuda_poisson_fft->module~m_cuda_allocator module~m_inflow_planes->module~m_base_backend module~m_inflow_planes->module~m_io_session module~m_io_backend m_io_backend module~m_io_backend->module~m_base_backend module~m_io_base m_io_base module~m_io_backend->module~m_io_base module~m_io_backend~2 m_io_backend module~m_io_backend~2->module~m_base_backend module~m_io_backend~2->module~m_io_base module~m_io_base->module~m_base_backend module~m_io_field_utils->module~m_solver module~m_io_field_utils->module~m_io_base module~m_io_manager->module~m_solver module~m_io_manager->module~m_checkpoint_manager module~m_snapshot_manager m_snapshot_manager module~m_io_manager->module~m_snapshot_manager module~m_io_manager->module~m_stats module~m_io_manager->module~m_checkpoint_state module~m_io_session->module~m_base_backend module~m_io_session->module~m_io_backend module~m_io_session->module~m_io_base module~m_les->module~m_base_backend module~m_memcheck_build m_memcheck_build module~m_memcheck_build->module~m_backend_setup module~m_memcheck_build->module~m_base_case module~m_memcheck_build->module~m_case_abl module~m_memcheck_build->module~m_case_factory module~m_memcheck_build->module~m_ibm module~m_memcheck_build->module~m_memory_estimate module~m_memcheck_estimate m_memcheck_estimate module~m_memcheck_build->module~m_memcheck_estimate module~m_memcheck_report m_memcheck_report module~m_memcheck_build->module~m_memcheck_report module~m_memcheck_build->module~m_monitoring module~m_memcheck_context m_memcheck_context module~m_memcheck_build->module~m_memcheck_context module~m_memcheck_estimate->module~m_memory_estimate module~m_memcheck_estimate->module~m_cuda_poisson_fft module~m_memcheck_estimate->module~m_memcheck_context module~m_memcheck_report->module~m_memory_estimate module~m_memcheck_report->module~m_cuda_memcheck_device module~m_memcheck_report->module~m_memcheck_estimate module~m_memcheck_report->module~m_memcheck_context module~m_monitoring->module~m_solver module~m_postprocess->module~m_solver module~m_snapshot_manager->module~m_solver module~m_snapshot_manager->module~m_io_field_utils module~m_snapshot_manager->module~m_io_session module~m_stats->module~m_solver module~m_stats->module~m_io_session module~m_tdsops_setup->module~m_base_backend module~m_turbine_setup->module~m_adm module~m_turbine_setup->module~m_alm module~m_turbine_setup->module~m_solver module~m_turbine_setup->module~m_turbine_dummy module~m_turbine_setup->module~m_turbine_model module~m_turbine_setup->module~m_io_manager program~x3d2_memcheck x3d2_memcheck program~x3d2_memcheck->module~m_memory_estimate program~x3d2_memcheck->module~m_memcheck_build program~x3d2_memcheck->module~m_memcheck_estimate program~x3d2_memcheck->module~m_memcheck_report program~x3d2_memcheck->module~m_memcheck_context program~xcompact xcompact program~xcompact->module~m_backend_setup program~xcompact->module~m_base_case program~xcompact->module~m_case_factory module~m_checkpoint_state->module~m_io_session module~m_memcheck_context->module~m_cuda_memcheck_device proc~resolve_gpu_io_mode m_memcheck_context::resolve_gpu_io_mode proc~resolve_gpu_io_mode->module~m_io_backend

Interfaces

public interface allocator_t

  • public function allocator_init(dims, sz) result(allocator)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: dims(3)
    integer, intent(in) :: sz

    Return Value type(allocator_t)


Derived Types

type, public ::  allocator_t

An instance of type allocator_t is responsible for the maintenance of a linked list of instances of equal size m_allocator objects:

Read more…

Components

Type Visibility Attributes Name Initial
integer, public :: ngrid
integer, public :: sz
integer, public :: next_id = 0

The id for the next allocated block. This counter is incremented each time a new block is allocated.

class(field_t), public, pointer :: first => null()

The pointer to the first block on the list. Non associated if the list is empty

Constructor

public function allocator_init (dims, sz)

Type-Bound Procedures

procedure, public :: get_block
procedure, public :: release_block
procedure, public :: create_block
procedure, public :: get_block_ids
procedure, public :: destroy
procedure, public :: get_padded_dims
procedure, public :: get_n_groups

Functions

public pure function padded_dim(n, sz) result(n_padded)

Smallest multiple of sz that is >= n. Used for the x/y padding in allocator_init; z is never padded so is not covered here.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n
integer, intent(in) :: sz

Return Value integer

public function allocator_init(dims, sz) result(allocator)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: dims(3)
integer, intent(in) :: sz

Return Value type(allocator_t)

public function create_block(self, next) result(ptr)

Allocate memory for a new block and return a pointer to a new m_allocator object.

Arguments

Type IntentOptional Attributes Name
class(allocator_t), intent(inout) :: self
class(field_t), intent(in), pointer :: next

Return Value class(field_t), pointer

public function get_block(self, dir, data_loc) result(handle)

Return a pointer to the first available memory block, i.e. the current head of the block list. If the list is empty, allocate a new block with create_block first.

Read more…

Arguments

Type IntentOptional Attributes Name
class(allocator_t), intent(inout) :: self
integer, intent(in) :: dir
integer, intent(in), optional :: data_loc

Return Value class(field_t), pointer

public function get_block_ids(self)

Utility function that returns an array made of the id of the block currently in the block list. Return the array [0] if block list is empty.

Arguments

Type IntentOptional Attributes Name
class(allocator_t), intent(inout) :: self

Return Value integer, allocatable, (:)

public function get_padded_dims(self, dir) result(dims)

Arguments

Type IntentOptional Attributes Name
class(allocator_t), intent(inout) :: self
integer, intent(in) :: dir

Return Value integer, (3)

public function get_n_groups(self, dir) result(n_groups)

Arguments

Type IntentOptional Attributes Name
class(allocator_t), intent(inout) :: self
integer, intent(in) :: dir

Return Value integer


Subroutines

public subroutine release_block(self, handle)

Release memory block pointed to by HANDLE to the block list. It is pushed to the front of the block list, in other words it is made the head block.

Arguments

Type IntentOptional Attributes Name
class(allocator_t), intent(inout) :: self
class(field_t), pointer :: handle

public subroutine destroy(self)

Go through the block list from head to tail, deallocating each memory block in turn. Deallocation of a m_allocator object automatically deallocates its internal allocatable data array.

Arguments

Type IntentOptional Attributes Name
class(allocator_t), intent(inout) :: self