autotune_adaptive Function

private function autotune_adaptive(platform, backend, base_comm, comms, base_init_dtype, base_init_storage, base_dtype, base_storage, bricks, pencils, stream, buffer_size, helper, plan_id) result(execution_time)

Arguments

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

Platform to create plan for

type(dtfft_backend_t), intent(in) :: backend
type(MPI_Comm), intent(in) :: base_comm

3D Cartesian comm

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

1D comms

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

Base MPI datatype for real space data

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

Number of bytes needed to store single real element

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

Base MPI datatype for Fourier space data

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

Number of bytes needed to store single complex element

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

Pencils describing brick data distribution

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

Array of pencil decompositions

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

Stream to use

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

Size of the buffer to use during autotune (in bytes)

type(backend_helper), intent(inout) :: helper
integer(kind=int8), intent(in) :: plan_id

Return Value real(kind=real32)


Calls

proc~~autotune_adaptive~~CallsGraph proc~autotune_adaptive autotune_adaptive proc~create_reshape_plans create_reshape_plans proc~autotune_adaptive->proc~create_reshape_plans proc~destroy_plans destroy_plans proc~autotune_adaptive->proc~destroy_plans proc~destroy_string string%destroy_string proc~autotune_adaptive->proc~destroy_string proc~execute_autotune execute_autotune proc~autotune_adaptive->proc~execute_autotune proc~get_conf_log_enabled get_conf_log_enabled proc~autotune_adaptive->proc~get_conf_log_enabled proc~pop_nvtx_domain_range pop_nvtx_domain_range proc~autotune_adaptive->proc~pop_nvtx_domain_range proc~push_nvtx_domain_range push_nvtx_domain_range proc~autotune_adaptive->proc~push_nvtx_domain_range proc~write_message write_message proc~autotune_adaptive->proc~write_message proc~create_reshape_plans->proc~write_message mpi_abort mpi_abort proc~create_reshape_plans->mpi_abort proc~allocate_plans allocate_plans proc~create_reshape_plans->proc~allocate_plans proc~create~18 abstract_reshape_handle%create proc~create_reshape_plans->proc~create~18 proc~get_conf_reshape get_conf_reshape proc~create_reshape_plans->proc~get_conf_reshape destroy destroy proc~destroy_plans->destroy execute execute proc~execute_autotune->execute fname fname proc~execute_autotune->fname interface~cudaeventcreate cudaEventCreate proc~execute_autotune->interface~cudaeventcreate interface~cudaeventdestroy cudaEventDestroy proc~execute_autotune->interface~cudaeventdestroy interface~cudaeventelapsedtime cudaEventElapsedTime proc~execute_autotune->interface~cudaeventelapsedtime interface~cudaeventrecord cudaEventRecord proc~execute_autotune->interface~cudaeventrecord interface~cudaeventsynchronize cudaEventSynchronize proc~execute_autotune->interface~cudaeventsynchronize interface~cudastreamsynchronize cudaStreamSynchronize proc~execute_autotune->interface~cudastreamsynchronize proc~execute_autotune->mpi_abort mpi_barrier mpi_barrier proc~execute_autotune->mpi_barrier mpi_wtime mpi_wtime proc~execute_autotune->mpi_wtime proc~alloc_and_set_aux alloc_and_set_aux proc~execute_autotune->proc~alloc_and_set_aux proc~alloc_mem alloc_mem proc~execute_autotune->proc~alloc_mem proc~cudageterrorstring cudaGetErrorString proc~execute_autotune->proc~cudageterrorstring proc~dtfft_get_error_string dtfft_get_error_string proc~execute_autotune->proc~dtfft_get_error_string proc~free_mem free_mem proc~execute_autotune->proc~free_mem proc~get_conf_measure_iters get_conf_measure_iters proc~execute_autotune->proc~get_conf_measure_iters proc~get_conf_measure_warmup_iters get_conf_measure_warmup_iters proc~execute_autotune->proc~get_conf_measure_warmup_iters proc~report_timings report_timings proc~execute_autotune->proc~report_timings interface~get_conf_internal get_conf_internal proc~get_conf_log_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 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~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_bytes_generic get_aux_bytes_generic proc~alloc_and_set_aux->proc~get_aux_bytes_generic proc~is_nvshmem_generic is_nvshmem_generic proc~alloc_and_set_aux->proc~is_nvshmem_generic proc~alloc_mem->proc~get_conf_log_enabled proc~alloc_mem->proc~write_message proc~alloc_mem->fname proc~alloc_mem->mpi_abort proc~alloc_mem->proc~cudageterrorstring 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~dtfft_get_backend_string dtfft_get_backend_string proc~alloc_mem->proc~dtfft_get_backend_string proc~is_backend_nccl is_backend_nccl proc~alloc_mem->proc~is_backend_nccl proc~is_backend_nvshmem is_backend_nvshmem proc~alloc_mem->proc~is_backend_nvshmem 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~allocate_plans->proc~write_message proc~allocate_plans->mpi_abort 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 proc~create~18->proc~write_message proc~create~18->mpi_abort create_private create_private proc~create~18->create_private proc~get_reshape_type get_reshape_type proc~create~18->proc~get_reshape_type proc~get_transpose_type get_transpose_type proc~create~18->proc~get_transpose_type proc~is_valid_reshape_type is_valid_reshape_type proc~create~18->proc~is_valid_reshape_type proc~is_valid_transpose_type is_valid_transpose_type proc~create~18->proc~is_valid_transpose_type interface~cudageterrorstring_c cudaGetErrorString_c proc~cudageterrorstring->interface~cudageterrorstring_c proc~string_c2f string_c2f proc~cudageterrorstring->proc~string_c2f proc~free_mem->proc~get_conf_log_enabled proc~free_mem->proc~write_message proc~free_mem->fname proc~free_mem->mpi_abort 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~free_mem->proc~is_backend_nccl proc~free_mem->proc~is_backend_nvshmem proc~is_same_ptr is_same_ptr proc~free_mem->proc~is_same_ptr proc~free_mem->proc~ncclgeterrorstring proc~get_conf_measure_iters->interface~get_conf_internal proc~get_conf_measure_warmup_iters->interface~get_conf_internal 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 mpi_comm_size mpi_comm_size proc~report_timings->mpi_comm_size 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~get_aux_bytes~5 abstract_reshape_handle%get_aux_bytes proc~get_aux_bytes_generic->proc~get_aux_bytes~5 proc~is_nvshmem_generic->proc~is_backend_nvshmem get_backend get_backend proc~is_nvshmem_generic->get_backend 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

Called by

proc~~autotune_adaptive~~CalledByGraph proc~autotune_adaptive autotune_adaptive proc~autotune_reshape_plan autotune_reshape_plan proc~autotune_reshape_plan->proc~autotune_adaptive proc~create reshape_plan%create proc~create->proc~autotune_reshape_plan