run_autotune_backend Subroutine

private subroutine run_autotune_backend(platform, comms, cart_comm, effort, base_dtype, pencils, base_storage, stream, is_z_slab, best_forward_ids, best_backward_ids, backend, best_time, best_backend)

Uses

  • proc~~run_autotune_backend~~UsesGraph proc~run_autotune_backend run_autotune_backend iso_c_binding iso_c_binding proc~run_autotune_backend->iso_c_binding iso_fortran_env iso_fortran_env proc~run_autotune_backend->iso_fortran_env

Runs autotune for all backends Symmetric heap can be allocated after nvshmem_init, which is done during plan creation

Arguments

Type IntentOptional Attributes Name
type(dtfft_platform_t), intent(in) :: platform

Platform to create plan for

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

1D comms

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

3D Cartesian comm

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

Base MPI_Datatype

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

Source meta

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

Number of bytes needed to store single element

type(dtfft_stream_t), intent(in) :: stream

Stream to use

logical, intent(in) :: is_z_slab

Is Z-slab optimization enabled

integer(kind=int8), intent(inout) :: best_forward_ids(:)

Best Datatype ids for forward plan

integer(kind=int8), intent(inout) :: best_backward_ids(:)

Best Datatype ids for backward plan

type(dtfft_backend_t), intent(in), optional :: backend

GPU Backend to test. Should be passed only when effort is DTFFT_ESTIMATE or DTFFT_MEASURE

real(kind=real32), intent(out), optional :: best_time

Elapsed time for best backend

type(dtfft_backend_t), intent(out), optional :: best_backend

Best backend selected


Calls

proc~~run_autotune_backend~~CallsGraph proc~run_autotune_backend run_autotune_backend execute execute proc~run_autotune_backend->execute fname fname proc~run_autotune_backend->fname interface~cudaeventcreate cudaEventCreate proc~run_autotune_backend->interface~cudaeventcreate interface~cudaeventdestroy cudaEventDestroy proc~run_autotune_backend->interface~cudaeventdestroy interface~cudaeventelapsedtime cudaEventElapsedTime proc~run_autotune_backend->interface~cudaeventelapsedtime interface~cudaeventrecord cudaEventRecord proc~run_autotune_backend->interface~cudaeventrecord interface~cudaeventsynchronize cudaEventSynchronize proc~run_autotune_backend->interface~cudaeventsynchronize interface~cudastreamsynchronize cudaStreamSynchronize proc~run_autotune_backend->interface~cudastreamsynchronize mpi_abort mpi_abort proc~run_autotune_backend->mpi_abort mpi_barrier mpi_barrier proc~run_autotune_backend->mpi_barrier mpi_comm_size mpi_comm_size proc~run_autotune_backend->mpi_comm_size mpi_wtime mpi_wtime proc~run_autotune_backend->mpi_wtime proc~alloc_and_set_aux alloc_and_set_aux proc~run_autotune_backend->proc~alloc_and_set_aux proc~alloc_mem alloc_mem proc~run_autotune_backend->proc~alloc_mem proc~allocate_plans allocate_plans proc~run_autotune_backend->proc~allocate_plans proc~create_helper~2 backend_helper%create_helper proc~run_autotune_backend->proc~create_helper~2 proc~cudageterrorstring cudaGetErrorString proc~run_autotune_backend->proc~cudageterrorstring proc~destroy_helper~2 backend_helper%destroy_helper proc~run_autotune_backend->proc~destroy_helper~2 proc~destroy_plans destroy_plans proc~run_autotune_backend->proc~destroy_plans proc~dtfft_get_backend_string dtfft_get_backend_string proc~run_autotune_backend->proc~dtfft_get_backend_string proc~dtfft_get_error_string dtfft_get_error_string proc~run_autotune_backend->proc~dtfft_get_error_string proc~free_mem free_mem proc~run_autotune_backend->proc~free_mem proc~get_conf_datatype_enabled get_conf_datatype_enabled proc~run_autotune_backend->proc~get_conf_datatype_enabled proc~get_conf_log_enabled get_conf_log_enabled proc~run_autotune_backend->proc~get_conf_log_enabled proc~get_conf_measure_iters get_conf_measure_iters proc~run_autotune_backend->proc~get_conf_measure_iters proc~get_conf_measure_warmup_iters get_conf_measure_warmup_iters proc~run_autotune_backend->proc~get_conf_measure_warmup_iters proc~get_conf_mpi_enabled get_conf_mpi_enabled proc~run_autotune_backend->proc~get_conf_mpi_enabled proc~get_conf_nvshmem_enabled get_conf_nvshmem_enabled proc~run_autotune_backend->proc~get_conf_nvshmem_enabled proc~get_conf_pipelined_enabled get_conf_pipelined_enabled proc~run_autotune_backend->proc~get_conf_pipelined_enabled proc~get_local_sizes get_local_sizes proc~run_autotune_backend->proc~get_local_sizes proc~is_backend_mpi is_backend_mpi proc~run_autotune_backend->proc~is_backend_mpi proc~is_backend_nccl is_backend_nccl proc~run_autotune_backend->proc~is_backend_nccl proc~is_backend_nvshmem is_backend_nvshmem proc~run_autotune_backend->proc~is_backend_nvshmem proc~is_backend_pipelined is_backend_pipelined proc~run_autotune_backend->proc~is_backend_pipelined proc~pop_nvtx_domain_range pop_nvtx_domain_range proc~run_autotune_backend->proc~pop_nvtx_domain_range proc~push_nvtx_domain_range push_nvtx_domain_range proc~run_autotune_backend->proc~push_nvtx_domain_range proc~report_timings report_timings proc~run_autotune_backend->proc~report_timings proc~run_autotune_datatypes run_autotune_datatypes proc~run_autotune_backend->proc~run_autotune_datatypes proc~write_message write_message proc~run_autotune_backend->proc~write_message proc~alloc_and_set_aux->mpi_abort proc~alloc_and_set_aux->proc~alloc_mem proc~alloc_and_set_aux->proc~dtfft_get_error_string mpi_allreduce mpi_allreduce proc~alloc_and_set_aux->mpi_allreduce proc~get_aux_size_generic get_aux_size_generic proc~alloc_and_set_aux->proc~get_aux_size_generic proc~alloc_mem->fname proc~alloc_mem->mpi_abort proc~alloc_mem->proc~cudageterrorstring proc~alloc_mem->proc~dtfft_get_backend_string proc~alloc_mem->proc~get_conf_log_enabled proc~alloc_mem->proc~is_backend_nccl proc~alloc_mem->proc~is_backend_nvshmem proc~alloc_mem->proc~write_message interface~cudamalloc cudaMalloc proc~alloc_mem->interface~cudamalloc interface~cudamemgetinfo cudaMemGetInfo proc~alloc_mem->interface~cudamemgetinfo interface~ncclcommregister ncclCommRegister proc~alloc_mem->interface~ncclcommregister interface~ncclmemalloc ncclMemAlloc proc~alloc_mem->interface~ncclmemalloc interface~nvshmem_malloc nvshmem_malloc proc~alloc_mem->interface~nvshmem_malloc interface~to_str to_str proc~alloc_mem->interface~to_str is_null_ptr is_null_ptr proc~alloc_mem->is_null_ptr proc~alloc_mem->mpi_allreduce proc~mem_alloc_host mem_alloc_host proc~alloc_mem->proc~mem_alloc_host proc~ncclgeterrorstring ncclGetErrorString proc~alloc_mem->proc~ncclgeterrorstring temp temp proc~alloc_mem->temp proc~create_helper~2->fname proc~create_helper~2->mpi_abort proc~create_helper~2->mpi_comm_size proc~create_helper~2->proc~destroy_helper~2 interface~get_env get_env proc~create_helper~2->interface~get_env interface~ncclcomminitrank ncclCommInitRank proc~create_helper~2->interface~ncclcomminitrank interface~ncclgetuniqueid ncclGetUniqueId proc~create_helper~2->interface~ncclgetuniqueid mpi_allgather mpi_allgather proc~create_helper~2->mpi_allgather mpi_bcast mpi_bcast proc~create_helper~2->mpi_bcast mpi_comm_rank mpi_comm_rank proc~create_helper~2->mpi_comm_rank proc~create_helper~2->proc~ncclgeterrorstring interface~cudageterrorstring_c cudaGetErrorString_c proc~cudageterrorstring->interface~cudageterrorstring_c proc~string_c2f string_c2f proc~cudageterrorstring->proc~string_c2f proc~destroy_helper~2->fname proc~destroy_helper~2->mpi_abort proc~destroy_helper~2->proc~write_message interface~ncclcommdestroy ncclCommDestroy proc~destroy_helper~2->interface~ncclcommdestroy proc~destroy_helper~2->proc~ncclgeterrorstring destroy destroy proc~destroy_plans->destroy proc~free_mem->fname proc~free_mem->mpi_abort proc~free_mem->proc~get_conf_log_enabled proc~free_mem->proc~is_backend_nccl proc~free_mem->proc~is_backend_nvshmem proc~free_mem->proc~write_message interface~cudafree cudaFree proc~free_mem->interface~cudafree interface~mem_free_host mem_free_host proc~free_mem->interface~mem_free_host interface~ncclcommderegister ncclCommDeregister proc~free_mem->interface~ncclcommderegister interface~ncclmemfree ncclMemFree proc~free_mem->interface~ncclmemfree proc~free_mem->interface~to_str nvshmem_free nvshmem_free proc~free_mem->nvshmem_free proc~is_same_ptr is_same_ptr proc~free_mem->proc~is_same_ptr proc~free_mem->proc~ncclgeterrorstring interface~get_conf_internal get_conf_internal proc~get_conf_datatype_enabled->interface~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 proc~get_conf_mpi_enabled->interface~get_conf_internal proc~get_conf_nvshmem_enabled->interface~get_conf_internal proc~get_conf_pipelined_enabled->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->mpi_comm_size proc~report_timings->proc~get_conf_log_enabled proc~report_timings->proc~write_message proc~report_timings->interface~to_str proc~report_timings->mpi_allreduce proc~run_autotune_datatypes->proc~get_conf_log_enabled proc~run_autotune_datatypes->proc~write_message proc~run_autotune_datatypes->interface~to_str proc~autotune_transpose_id autotune_transpose_id proc~run_autotune_datatypes->proc~autotune_transpose_id 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~get_env_base get_env_base interface~get_env->proc~get_env_base proc~get_env_int32 get_env_int32 interface~get_env->proc~get_env_int32 proc~get_env_int8 get_env_int8 interface~get_env->proc~get_env_int8 proc~get_env_logical get_env_logical interface~get_env->proc~get_env_logical proc~get_env_string get_env_string interface~get_env->proc~get_env_string 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~string_f2c string_f2c proc~astring_f2c->proc~string_f2c proc~get_plan_execution_time get_plan_execution_time proc~autotune_transpose_id->proc~get_plan_execution_time proc~create_nvtx_domain->proc~astring_f2c interface~nvtxdomaincreate_c nvtxDomainCreate_c proc~create_nvtx_domain->interface~nvtxdomaincreate_c proc~get_aux_size~3 abstract_transpose_handle%get_aux_size proc~get_aux_size_generic->proc~get_aux_size~3 interface~aligned_alloc aligned_alloc proc~mem_alloc_host->interface~aligned_alloc proc~ncclgeterrorstring->proc~string_c2f interface~ncclgeterrorstring_c ncclGetErrorString_c proc~ncclgeterrorstring->interface~ncclgeterrorstring_c interface~is_null_ptr is_null_ptr proc~string_c2f->interface~is_null_ptr interface~is_null_ptr->interface~is_null_ptr proc~is_null_funptr is_null_funptr interface~is_null_ptr->proc~is_null_funptr proc~destroy_string string%destroy_string proc~get_env_base->proc~destroy_string proc~get_env_int32->proc~write_message proc~get_env_int32->interface~get_env proc~get_env_int8->interface~get_env proc~get_env_logical->interface~get_env proc~get_env_string->proc~write_message proc~get_env_string->interface~get_env proc~get_env_string->proc~destroy_string proc~get_plan_execution_time->mpi_barrier proc~get_plan_execution_time->mpi_wtime proc~get_plan_execution_time->proc~get_conf_log_enabled proc~get_plan_execution_time->proc~get_conf_measure_iters proc~get_plan_execution_time->proc~get_conf_measure_warmup_iters proc~get_plan_execution_time->proc~pop_nvtx_domain_range proc~get_plan_execution_time->proc~push_nvtx_domain_range proc~get_plan_execution_time->proc~report_timings proc~get_plan_execution_time->proc~write_message proc~get_plan_execution_time->interface~to_str 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 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 proc~execute~13->mpi_comm_size 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_startall mpi_startall proc~execute~13->mpi_startall proc~execute_end~4 transpose_handle_datatype%execute_end proc~execute~13->proc~execute_end~4 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~~run_autotune_backend~~CalledByGraph proc~run_autotune_backend run_autotune_backend 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