estimate_for_num_gpus Subroutine

public subroutine estimate_for_num_gpus(ctx, num_gpus, per_gpu_gib, basis, verdict, workspace_gib, overhead_gib, io_gib, used_gib, npeak)

The per-GPU estimate at num_gpus GPUs. The formula floor stands unless the full-grid probe gave a result and the floor is not over the limit. workspace_gib, overhead_gib and io_gib (optional) split the result. used_gib and npeak (optional) are the num_gpus=1 measurement of the real build and its peak_fields: the estimate is then that measurement scaled to num_gpus, and workspace_gib holds the fields and halo alone.

Arguments

Type IntentOptional Attributes Name
type(memcheck_ctx_t), intent(inout) :: ctx
integer, intent(in) :: num_gpus
real(kind=dp), intent(out) :: per_gpu_gib
integer, intent(out) :: basis
character(len=12), intent(out) :: verdict
real(kind=dp), intent(out), optional :: workspace_gib
real(kind=dp), intent(out), optional :: overhead_gib
real(kind=dp), intent(out), optional :: io_gib
real(kind=dp), intent(in), optional :: used_gib
integer, intent(in), optional :: npeak

Calls

proc~~estimate_for_num_gpus~~CallsGraph proc~estimate_for_num_gpus m_memcheck_estimate::estimate_for_num_gpus none~fft_path_known m_cuda_memcheck_device::cuda_memcheck_device_t%fft_path_known proc~estimate_for_num_gpus->none~fft_path_known none~overhead_floor_bytes m_cuda_memcheck_device::cuda_memcheck_device_t%overhead_floor_bytes proc~estimate_for_num_gpus->none~overhead_floor_bytes none~overhead_query_bytes m_cuda_memcheck_device::cuda_memcheck_device_t%overhead_query_bytes proc~estimate_for_num_gpus->none~overhead_query_bytes none~probe_ran m_cuda_memcheck_device::cuda_memcheck_device_t%probe_ran proc~estimate_for_num_gpus->none~probe_ran none~uses_distributed_fft m_cuda_memcheck_device::cuda_memcheck_device_t%uses_distributed_fft proc~estimate_for_num_gpus->none~uses_distributed_fft proc~classify m_memcheck_estimate::classify proc~estimate_for_num_gpus->proc~classify proc~cuda_fft_spectral_dims m_cuda_poisson_fft::cuda_fft_spectral_dims proc~estimate_for_num_gpus->proc~cuda_fft_spectral_dims proc~fields_plus_halo_bytes_n m_memcheck_estimate::fields_plus_halo_bytes_n proc~estimate_for_num_gpus->proc~fields_plus_halo_bytes_n proc~gpu_io_staging_bytes m_memory_estimate::gpu_io_staging_bytes proc~estimate_for_num_gpus->proc~gpu_io_staging_bytes proc~log_info m_logger::log_info proc~estimate_for_num_gpus->proc~log_info proc~mirror_buffer_bytes_100 m_memory_estimate::mirror_buffer_bytes_100 proc~estimate_for_num_gpus->proc~mirror_buffer_bytes_100 proc~spectral_extra_bytes_110 m_memory_estimate::spectral_extra_bytes_110 proc~estimate_for_num_gpus->proc~spectral_extra_bytes_110 proc~spectral_slab_bytes m_memory_estimate::spectral_slab_bytes proc~estimate_for_num_gpus->proc~spectral_slab_bytes proc~stretched_y_matrix_bytes m_memory_estimate::stretched_y_matrix_bytes proc~estimate_for_num_gpus->proc~stretched_y_matrix_bytes proc~to_gib m_memcheck_estimate::to_gib proc~estimate_for_num_gpus->proc~to_gib none~heap_bytes m_cuda_memcheck_device::cuda_memcheck_device_t%heap_bytes none~overhead_floor_bytes->none~heap_bytes none~sz~6 m_cuda_memcheck_device::cuda_memcheck_device_t%sz proc~fields_plus_halo_bytes_n->none~sz~6 proc~padded_cells m_memory_estimate::padded_cells proc~fields_plus_halo_bytes_n->proc~padded_cells proc~padded_halo_bytes m_memory_estimate::padded_halo_bytes proc~fields_plus_halo_bytes_n->proc~padded_halo_bytes proc~gpu_io_staging_parts m_memory_estimate::gpu_io_staging_parts proc~gpu_io_staging_bytes->proc~gpu_io_staging_parts interface~str m_logger::str proc~log_info->interface~str mpi_comm_rank mpi_comm_rank proc~log_info->mpi_comm_rank mpi_comm_size mpi_comm_size proc~log_info->mpi_comm_size mpi_finalized mpi_finalized proc~log_info->mpi_finalized mpi_initialized mpi_initialized proc~log_info->mpi_initialized proc~spectral_extra_bytes_110->proc~spectral_slab_bytes proc~padded_dim m_allocator::padded_dim proc~padded_cells->proc~padded_dim proc~halo_bytes m_memory_estimate::halo_bytes proc~padded_halo_bytes->proc~halo_bytes proc~padded_halo_bytes->proc~padded_dim

Called by

proc~~estimate_for_num_gpus~~CalledByGraph proc~estimate_for_num_gpus m_memcheck_estimate::estimate_for_num_gpus proc~print_requested_line m_memcheck_report::print_requested_line proc~print_requested_line->proc~estimate_for_num_gpus proc~report m_memcheck_report::report proc~report->proc~estimate_for_num_gpus proc~report->proc~print_requested_line proc~run_build_mode m_memcheck_build::run_build_mode proc~run_build_mode->proc~estimate_for_num_gpus program~x3d2_memcheck x3d2_memcheck program~x3d2_memcheck->proc~report program~x3d2_memcheck->proc~run_build_mode