autotune_transpose_id Function

private function autotune_transpose_id(self, comm, cart_comm, from, to, base_dtype, base_storage, transpose_name_id, a, b, forward_id, backward_id) result(elapsed_time)

Creates forward and backward transpose plans bases on source and target data distributing, executes them DTFFT_MEASURE_ITERS times ( 4 * DTFFT_MEASURE_ITERS iterations total )

Returns elapsed time for best plans selected

Type Bound

transpose_plan_host

Arguments

Type IntentOptional Attributes Name
class(transpose_plan_host), intent(in) :: self

Abstract plan

type(MPI_Comm), intent(in) :: comm

1D comm in case of pencils, 3D comm in case of z_slabs

type(MPI_Comm), intent(in) :: cart_comm

3D Cartesian comm

type(pencil), intent(in) :: from

Source meta

type(pencil), intent(in) :: to

Target meta

type(MPI_Datatype), intent(in) :: base_dtype

Basic MPI Datatype

integer(kind=int64), intent(in) :: base_storage

Number of bytes needed to store Basic MPI Datatype

integer(kind=int8), intent(in) :: transpose_name_id

ID of transpose name (from -3 to 3, except 0)

real(kind=real32), intent(inout) :: a(:)

Source buffer

real(kind=real32), intent(inout) :: b(:)

Target buffer

integer(kind=int8), intent(out) :: forward_id

Best forward plan ID

integer(kind=int8), intent(out) :: backward_id

Best backward plan ID

Return Value real(kind=real64)

Elapsed time for best plans selected


Calls

proc~~autotune_transpose_id~~CallsGraph proc~autotune_transpose_id transpose_plan_host%autotune_transpose_id proc~get_plan_execution_time transpose_plan_host%get_plan_execution_time proc~autotune_transpose_id->proc~get_plan_execution_time interface~to_str to_str proc~get_plan_execution_time->interface~to_str mpi_allreduce mpi_allreduce proc~get_plan_execution_time->mpi_allreduce mpi_comm_size mpi_comm_size proc~get_plan_execution_time->mpi_comm_size mpi_wtime mpi_wtime proc~get_plan_execution_time->mpi_wtime proc~create~7 transpose_handle_host%create proc~get_plan_execution_time->proc~create~7 proc~destroy~6 transpose_handle_host%destroy proc~get_plan_execution_time->proc~destroy~6 proc~execute~6 transpose_handle_host%execute proc~get_plan_execution_time->proc~execute~6 proc~get_conf_log_enabled get_conf_log_enabled proc~get_plan_execution_time->proc~get_conf_log_enabled proc~get_conf_measure_iters get_conf_measure_iters proc~get_plan_execution_time->proc~get_conf_measure_iters proc~get_conf_measure_warmup_iters get_conf_measure_warmup_iters proc~get_plan_execution_time->proc~get_conf_measure_warmup_iters proc~pop_nvtx_domain_range pop_nvtx_domain_range proc~get_plan_execution_time->proc~pop_nvtx_domain_range proc~push_nvtx_domain_range push_nvtx_domain_range proc~get_plan_execution_time->proc~push_nvtx_domain_range proc~write_message write_message proc~get_plan_execution_time->proc~write_message proc~double_to_string double_to_string interface~to_str->proc~double_to_string proc~float_to_string float_to_string interface~to_str->proc~float_to_string proc~int32_to_string int32_to_string interface~to_str->proc~int32_to_string proc~int64_to_string int64_to_string interface~to_str->proc~int64_to_string proc~int8_to_string int8_to_string interface~to_str->proc~int8_to_string proc~create~7->mpi_comm_size mpi_allgather mpi_allgather proc~create~7->mpi_allgather proc~create_handle handle_t%create_handle proc~create~7->proc~create_handle proc~create_transpose_2d transpose_handle_host%create_transpose_2d proc~create~7->proc~create_transpose_2d proc~create_transpose_xy transpose_handle_host%create_transpose_XY proc~create~7->proc~create_transpose_xy proc~create_transpose_xz transpose_handle_host%create_transpose_XZ proc~create~7->proc~create_transpose_xz proc~create_transpose_yz transpose_handle_host%create_transpose_YZ proc~create~7->proc~create_transpose_yz proc~create_transpose_zx transpose_handle_host%create_transpose_ZX proc~create~7->proc~create_transpose_zx proc~get_transpose_type get_transpose_type proc~create~7->proc~get_transpose_type mpi_request_free mpi_request_free proc~destroy~6->mpi_request_free proc~destroy_handle handle_t%destroy_handle proc~destroy~6->proc~destroy_handle mpi_alltoall_init mpi_alltoall_init proc~execute~6->mpi_alltoall_init mpi_alltoallw_init mpi_alltoallw_init proc~execute~6->mpi_alltoallw_init mpi_start mpi_start proc~execute~6->mpi_start mpi_wait mpi_wait proc~execute~6->mpi_wait interface~get_conf_internal get_conf_internal proc~get_conf_log_enabled->interface~get_conf_internal proc~get_conf_measure_iters->interface~get_conf_internal proc~get_conf_measure_warmup_iters->interface~get_conf_internal interface~nvtxdomainrangepop_c nvtxDomainRangePop_c proc~pop_nvtx_domain_range->interface~nvtxdomainrangepop_c interface~nvtxdomainrangepushex_c nvtxDomainRangePushEx_c proc~push_nvtx_domain_range->interface~nvtxdomainrangepushex_c proc~astring_f2c astring_f2c proc~push_nvtx_domain_range->proc~astring_f2c proc~create_nvtx_domain create_nvtx_domain proc~push_nvtx_domain_range->proc~create_nvtx_domain mpi_comm_rank mpi_comm_rank proc~write_message->mpi_comm_rank mpi_finalized mpi_finalized proc~write_message->mpi_finalized proc~get_conf_internal_int32 get_conf_internal_int32 interface~get_conf_internal->proc~get_conf_internal_int32 proc~get_conf_internal_logical get_conf_internal_logical interface~get_conf_internal->proc~get_conf_internal_logical proc~string_f2c string_f2c proc~astring_f2c->proc~string_f2c proc~create_handle->proc~destroy_handle proc~create_nvtx_domain->proc~astring_f2c interface~nvtxdomaincreate_c nvtxDomainCreate_c proc~create_nvtx_domain->interface~nvtxdomaincreate_c mpi_type_commit mpi_type_commit proc~create_transpose_2d->mpi_type_commit mpi_type_contiguous mpi_type_contiguous proc~create_transpose_2d->mpi_type_contiguous mpi_type_create_resized mpi_type_create_resized proc~create_transpose_2d->mpi_type_create_resized mpi_type_vector mpi_type_vector proc~create_transpose_2d->mpi_type_vector proc~free_datatypes free_datatypes proc~create_transpose_2d->proc~free_datatypes proc~create_transpose_xy->mpi_type_commit proc~create_transpose_xy->mpi_type_contiguous mpi_type_create_hvector mpi_type_create_hvector proc~create_transpose_xy->mpi_type_create_hvector proc~create_transpose_xy->mpi_type_create_resized proc~create_transpose_xy->mpi_type_vector proc~create_transpose_xy->proc~free_datatypes proc~create_transpose_xz->mpi_type_commit proc~create_transpose_xz->mpi_type_contiguous proc~create_transpose_xz->mpi_type_create_hvector proc~create_transpose_xz->mpi_type_create_resized proc~create_transpose_xz->mpi_type_vector proc~create_transpose_xz->proc~free_datatypes proc~create_transpose_yz->mpi_type_commit proc~create_transpose_yz->mpi_type_contiguous proc~create_transpose_yz->mpi_type_create_hvector proc~create_transpose_yz->mpi_type_create_resized proc~create_transpose_yz->mpi_type_vector proc~create_transpose_yz->proc~free_datatypes proc~create_transpose_zx->mpi_type_commit proc~create_transpose_zx->mpi_type_contiguous proc~create_transpose_zx->mpi_type_create_hvector proc~create_transpose_zx->mpi_type_create_resized proc~create_transpose_zx->mpi_type_vector proc~create_transpose_zx->proc~free_datatypes mpi_type_free mpi_type_free proc~destroy_handle->mpi_type_free proc~free_datatypes->mpi_type_free

Called by

proc~~autotune_transpose_id~~CalledByGraph proc~autotune_transpose_id transpose_plan_host%autotune_transpose_id proc~autotune_mpi_datatypes transpose_plan_host%autotune_mpi_datatypes proc~autotune_mpi_datatypes->proc~autotune_transpose_id proc~autotune_grid transpose_plan_host%autotune_grid proc~autotune_grid->proc~autotune_mpi_datatypes proc~autotune_grid_decomposition transpose_plan_host%autotune_grid_decomposition proc~autotune_grid_decomposition->proc~autotune_grid proc~create_private transpose_plan_host%create_private proc~create_private->proc~autotune_grid proc~create_private->proc~autotune_grid_decomposition