autotune_transpose_id Function

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

Creates forward and backward transpose plans for backend DTFFT_BACKEND_MPI_DATATYPE based on source and target data distributions and, executes them DTFFT_MEASURE_ITERS times ( 4 * DTFFT_MEASURE_ITERS iterations total ) + 4 * DTFFT_MEASURE_WARMUP_ITERS warmup iterations

Returns elapsed time for best plans selected

Arguments

Type IntentOptional Attributes Name
type(backend_helper), intent(inout) :: helper

Backend helper

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=real32)

Elapsed time for best plans selected


Calls

proc~~autotune_transpose_id~~CallsGraph proc~autotune_transpose_id autotune_transpose_id proc~get_plan_execution_time 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_barrier mpi_barrier proc~get_plan_execution_time->mpi_barrier mpi_wtime mpi_wtime proc~get_plan_execution_time->mpi_wtime proc~create~10 abstract_transpose_handle%create proc~get_plan_execution_time->proc~create~10 proc~destroy~15 transpose_handle_datatype%destroy proc~get_plan_execution_time->proc~destroy~15 proc~execute~13 transpose_handle_datatype%execute proc~get_plan_execution_time->proc~execute~13 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~report_timings report_timings proc~get_plan_execution_time->proc~report_timings 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 create_private create_private proc~create~10->create_private proc~get_transpose_type get_transpose_type proc~create~10->proc~get_transpose_type mpi_request_free mpi_request_free proc~destroy~15->mpi_request_free proc~destroy_handle handle_t%destroy_handle proc~destroy~15->proc~destroy_handle mpi_alltoall_init mpi_alltoall_init proc~execute~13->mpi_alltoall_init mpi_alltoallw_init mpi_alltoallw_init proc~execute~13->mpi_alltoallw_init mpi_comm_size mpi_comm_size proc~execute~13->mpi_comm_size mpi_startall mpi_startall proc~execute~13->mpi_startall proc~execute_end~4 transpose_handle_datatype%execute_end proc~execute~13->proc~execute_end~4 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 proc~report_timings->interface~to_str proc~report_timings->proc~get_conf_log_enabled proc~report_timings->proc~write_message mpi_allreduce mpi_allreduce proc~report_timings->mpi_allreduce proc~report_timings->mpi_comm_size 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_nvtx_domain->proc~astring_f2c interface~nvtxdomaincreate_c nvtxDomainCreate_c proc~create_nvtx_domain->interface~nvtxdomaincreate_c mpi_type_free mpi_type_free proc~destroy_handle->mpi_type_free mpi_waitall mpi_waitall proc~execute_end~4->mpi_waitall

Called by

proc~~autotune_transpose_id~~CalledByGraph proc~autotune_transpose_id autotune_transpose_id proc~run_autotune_datatypes run_autotune_datatypes proc~run_autotune_datatypes->proc~autotune_transpose_id proc~run_autotune_backend run_autotune_backend proc~run_autotune_backend->proc~run_autotune_datatypes proc~autotune_grid autotune_grid proc~autotune_grid->proc~run_autotune_backend proc~create transpose_plan%create proc~create->proc~run_autotune_backend proc~autotune_grid_decomposition autotune_grid_decomposition proc~create->proc~autotune_grid_decomposition proc~autotune_grid_decomposition->proc~autotune_grid