memcheck.f90 Source File


This file depends on

sourcefile~~memcheck.f90~~EfferentGraph sourcefile~memcheck.f90 memcheck.f90 sourcefile~build.f90 build.f90 sourcefile~memcheck.f90->sourcefile~build.f90 sourcefile~common.f90~4 common.f90 sourcefile~memcheck.f90->sourcefile~common.f90~4 sourcefile~context.f90 context.f90 sourcefile~memcheck.f90->sourcefile~context.f90 sourcefile~estimate.f90 estimate.f90 sourcefile~memcheck.f90->sourcefile~estimate.f90 sourcefile~logger.f90 logger.f90 sourcefile~memcheck.f90->sourcefile~logger.f90 sourcefile~memory_estimate.f90 memory_estimate.f90 sourcefile~memcheck.f90->sourcefile~memory_estimate.f90 sourcefile~report.f90 report.f90 sourcefile~memcheck.f90->sourcefile~report.f90 sourcefile~build.f90->sourcefile~common.f90~4 sourcefile~build.f90->sourcefile~context.f90 sourcefile~build.f90->sourcefile~estimate.f90 sourcefile~build.f90->sourcefile~logger.f90 sourcefile~build.f90->sourcefile~memory_estimate.f90 sourcefile~build.f90->sourcefile~report.f90 sourcefile~abl.f90~2 abl.f90 sourcefile~build.f90->sourcefile~abl.f90~2 sourcefile~base_case.f90 base_case.f90 sourcefile~build.f90->sourcefile~base_case.f90 sourcefile~case_factory.f90 case_factory.f90 sourcefile~build.f90->sourcefile~case_factory.f90 sourcefile~field.f90 field.f90 sourcefile~build.f90->sourcefile~field.f90 sourcefile~ibm.f90 ibm.f90 sourcefile~build.f90->sourcefile~ibm.f90 sourcefile~mesh.f90 mesh.f90 sourcefile~build.f90->sourcefile~mesh.f90 sourcefile~monitoring.f90 monitoring.f90 sourcefile~build.f90->sourcefile~monitoring.f90 sourcefile~scalar_series.f90 scalar_series.f90 sourcefile~build.f90->sourcefile~scalar_series.f90 sourcefile~setup.f90 setup.f90 sourcefile~build.f90->sourcefile~setup.f90 sourcefile~common.f90~4->sourcefile~logger.f90 sourcefile~context.f90->sourcefile~common.f90~4 sourcefile~context.f90->sourcefile~logger.f90 sourcefile~config.f90 config.f90 sourcefile~context.f90->sourcefile~config.f90 sourcefile~io.f90 io.f90 sourcefile~context.f90->sourcefile~io.f90 sourcefile~memcheck_device.f90 memcheck_device.f90 sourcefile~context.f90->sourcefile~memcheck_device.f90 sourcefile~context.f90->sourcefile~mesh.f90 sourcefile~estimate.f90->sourcefile~common.f90~4 sourcefile~estimate.f90->sourcefile~context.f90 sourcefile~estimate.f90->sourcefile~logger.f90 sourcefile~estimate.f90->sourcefile~memory_estimate.f90 sourcefile~poisson_fft.f90~3 poisson_fft.f90 sourcefile~estimate.f90->sourcefile~poisson_fft.f90~3 sourcefile~memory_estimate.f90->sourcefile~common.f90~4 sourcefile~allocator.f90~3 allocator.f90 sourcefile~memory_estimate.f90->sourcefile~allocator.f90~3 sourcefile~memory_estimate.f90->sourcefile~config.f90 sourcefile~time_integrator.f90 time_integrator.f90 sourcefile~memory_estimate.f90->sourcefile~time_integrator.f90 sourcefile~report.f90->sourcefile~common.f90~4 sourcefile~report.f90->sourcefile~context.f90 sourcefile~report.f90->sourcefile~estimate.f90 sourcefile~report.f90->sourcefile~logger.f90 sourcefile~report.f90->sourcefile~memory_estimate.f90 sourcefile~report.f90->sourcefile~memcheck_device.f90 sourcefile~abl.f90~2->sourcefile~common.f90~4 sourcefile~abl.f90~2->sourcefile~logger.f90 sourcefile~abl.f90~2->sourcefile~allocator.f90~3 sourcefile~abl.f90~2->sourcefile~base_case.f90 sourcefile~abl.f90~2->sourcefile~config.f90 sourcefile~abl.f90~2->sourcefile~field.f90 sourcefile~abl.f90~2->sourcefile~mesh.f90 sourcefile~abl.f90 abl.f90 sourcefile~abl.f90~2->sourcefile~abl.f90 sourcefile~backend.f90~4 backend.f90 sourcefile~abl.f90~2->sourcefile~backend.f90~4 sourcefile~diagnostics.f90 diagnostics.f90 sourcefile~abl.f90~2->sourcefile~diagnostics.f90 sourcefile~inflow_planes.f90 inflow_planes.f90 sourcefile~abl.f90~2->sourcefile~inflow_planes.f90 sourcefile~turbine_model.f90 turbine_model.f90 sourcefile~abl.f90~2->sourcefile~turbine_model.f90 sourcefile~turbine_setup.f90 turbine_setup.f90 sourcefile~abl.f90~2->sourcefile~turbine_setup.f90 sourcefile~allocator.f90~3->sourcefile~common.f90~4 sourcefile~allocator.f90~3->sourcefile~field.f90 sourcefile~base_case.f90->sourcefile~common.f90~4 sourcefile~base_case.f90->sourcefile~logger.f90 sourcefile~base_case.f90->sourcefile~allocator.f90~3 sourcefile~base_case.f90->sourcefile~config.f90 sourcefile~base_case.f90->sourcefile~field.f90 sourcefile~base_case.f90->sourcefile~mesh.f90 sourcefile~base_case.f90->sourcefile~monitoring.f90 sourcefile~base_case.f90->sourcefile~backend.f90~4 sourcefile~io_manager.f90 io_manager.f90 sourcefile~base_case.f90->sourcefile~io_manager.f90 sourcefile~postprocess.f90 postprocess.f90 sourcefile~base_case.f90->sourcefile~postprocess.f90 sourcefile~solver.f90 solver.f90 sourcefile~base_case.f90->sourcefile~solver.f90 sourcefile~case_factory.f90->sourcefile~logger.f90 sourcefile~case_factory.f90->sourcefile~abl.f90~2 sourcefile~case_factory.f90->sourcefile~allocator.f90~3 sourcefile~case_factory.f90->sourcefile~base_case.f90 sourcefile~case_factory.f90->sourcefile~mesh.f90 sourcefile~case_factory.f90->sourcefile~backend.f90~4 sourcefile~channel.f90 channel.f90 sourcefile~case_factory.f90->sourcefile~channel.f90 sourcefile~cylinder.f90 cylinder.f90 sourcefile~case_factory.f90->sourcefile~cylinder.f90 sourcefile~generic.f90 generic.f90 sourcefile~case_factory.f90->sourcefile~generic.f90 sourcefile~tgv.f90 tgv.f90 sourcefile~case_factory.f90->sourcefile~tgv.f90 sourcefile~wind_turbine.f90 wind_turbine.f90 sourcefile~case_factory.f90->sourcefile~wind_turbine.f90 sourcefile~config.f90->sourcefile~common.f90~4 sourcefile~config.f90->sourcefile~logger.f90 sourcefile~field.f90->sourcefile~common.f90~4 sourcefile~ibm.f90->sourcefile~common.f90~4 sourcefile~ibm.f90->sourcefile~logger.f90 sourcefile~ibm.f90->sourcefile~allocator.f90~3 sourcefile~ibm.f90->sourcefile~field.f90 sourcefile~ibm.f90->sourcefile~mesh.f90 sourcefile~ibm.f90->sourcefile~backend.f90~4 sourcefile~io_session.f90 io_session.f90 sourcefile~ibm.f90->sourcefile~io_session.f90 sourcefile~io.f90->sourcefile~common.f90~4 sourcefile~io.f90->sourcefile~logger.f90 sourcefile~io.f90->sourcefile~field.f90 sourcefile~io.f90->sourcefile~backend.f90~4 sourcefile~io_base.f90 io_base.f90 sourcefile~io.f90->sourcefile~io_base.f90 sourcefile~memcheck_device.f90->sourcefile~common.f90~4 sourcefile~memcheck_device.f90->sourcefile~logger.f90 sourcefile~memcheck_device.f90->sourcefile~memory_estimate.f90 sourcefile~memcheck_device.f90->sourcefile~base_case.f90 sourcefile~memcheck_device.f90->sourcefile~mesh.f90 sourcefile~memcheck_device.f90->sourcefile~poisson_fft.f90~3 sourcefile~common.f90~3 common.f90 sourcefile~memcheck_device.f90->sourcefile~common.f90~3 sourcefile~mesh.f90->sourcefile~common.f90~4 sourcefile~mesh.f90->sourcefile~logger.f90 sourcefile~mesh.f90->sourcefile~field.f90 sourcefile~decomp_2decompfft.f90 decomp_2decompfft.f90 sourcefile~mesh.f90->sourcefile~decomp_2decompfft.f90 sourcefile~mesh_content.f90 mesh_content.f90 sourcefile~mesh.f90->sourcefile~mesh_content.f90 sourcefile~monitoring.f90->sourcefile~common.f90~4 sourcefile~monitoring.f90->sourcefile~logger.f90 sourcefile~monitoring.f90->sourcefile~field.f90 sourcefile~monitoring.f90->sourcefile~scalar_series.f90 sourcefile~monitoring.f90->sourcefile~solver.f90 sourcefile~poisson_fft.f90~3->sourcefile~common.f90~4 sourcefile~poisson_fft.f90~3->sourcefile~logger.f90 sourcefile~poisson_fft.f90~3->sourcefile~field.f90 sourcefile~poisson_fft.f90~3->sourcefile~mesh.f90 sourcefile~allocator.f90~2 allocator.f90 sourcefile~poisson_fft.f90~3->sourcefile~allocator.f90~2 sourcefile~errors.f90 errors.f90 sourcefile~poisson_fft.f90~3->sourcefile~errors.f90 sourcefile~poisson_fft.f90~2 poisson_fft.f90 sourcefile~poisson_fft.f90~3->sourcefile~poisson_fft.f90~2 sourcefile~sendrecv.f90 sendrecv.f90 sourcefile~poisson_fft.f90~3->sourcefile~sendrecv.f90 sourcefile~spectral_processing.f90 spectral_processing.f90 sourcefile~poisson_fft.f90~3->sourcefile~spectral_processing.f90 sourcefile~tdsops.f90 tdsops.f90 sourcefile~poisson_fft.f90~3->sourcefile~tdsops.f90 sourcefile~scalar_series.f90->sourcefile~common.f90~4 sourcefile~scalar_series.f90->sourcefile~logger.f90 sourcefile~setup.f90->sourcefile~common.f90~4 sourcefile~setup.f90->sourcefile~logger.f90 sourcefile~setup.f90->sourcefile~allocator.f90~3 sourcefile~setup.f90->sourcefile~mesh.f90 sourcefile~allocator.f90 allocator.f90 sourcefile~setup.f90->sourcefile~allocator.f90 sourcefile~setup.f90->sourcefile~allocator.f90~2 sourcefile~backend.f90 backend.f90 sourcefile~setup.f90->sourcefile~backend.f90 sourcefile~backend.f90~2 backend.f90 sourcefile~setup.f90->sourcefile~backend.f90~2 sourcefile~backend.f90~3 backend.f90 sourcefile~setup.f90->sourcefile~backend.f90~3 sourcefile~setup.f90->sourcefile~backend.f90~4 sourcefile~common.f90 common.f90 sourcefile~setup.f90->sourcefile~common.f90 sourcefile~common.f90~2 common.f90 sourcefile~setup.f90->sourcefile~common.f90~2 sourcefile~setup.f90->sourcefile~common.f90~3 sourcefile~setup.f90->sourcefile~errors.f90 sourcefile~time_integrator.f90->sourcefile~common.f90~4 sourcefile~time_integrator.f90->sourcefile~logger.f90 sourcefile~time_integrator.f90->sourcefile~allocator.f90~3 sourcefile~time_integrator.f90->sourcefile~field.f90 sourcefile~time_integrator.f90->sourcefile~backend.f90~4 sourcefile~abl.f90->sourcefile~common.f90~4 sourcefile~abl.f90->sourcefile~logger.f90 sourcefile~abl.f90->sourcefile~allocator.f90~3 sourcefile~abl.f90->sourcefile~config.f90 sourcefile~abl.f90->sourcefile~field.f90 sourcefile~abl.f90->sourcefile~mesh.f90 sourcefile~abl.f90->sourcefile~backend.f90~4 sourcefile~les.f90 les.f90 sourcefile~abl.f90->sourcefile~les.f90 sourcefile~allocator.f90->sourcefile~common.f90~4 sourcefile~allocator.f90->sourcefile~logger.f90 sourcefile~allocator.f90->sourcefile~allocator.f90~3 sourcefile~allocator.f90->sourcefile~field.f90 sourcefile~allocator.f90->sourcefile~mesh.f90 sourcefile~allocator.f90~2->sourcefile~common.f90~4 sourcefile~allocator.f90~2->sourcefile~allocator.f90~3 sourcefile~allocator.f90~2->sourcefile~field.f90 sourcefile~allocator.f90~2->sourcefile~mesh.f90 sourcefile~backend.f90->sourcefile~common.f90~4 sourcefile~backend.f90->sourcefile~logger.f90 sourcefile~backend.f90->sourcefile~allocator.f90~3 sourcefile~backend.f90->sourcefile~field.f90 sourcefile~backend.f90->sourcefile~mesh.f90 sourcefile~backend.f90->sourcefile~backend.f90~4 sourcefile~backend.f90->sourcefile~common.f90~2 sourcefile~backend.f90->sourcefile~tdsops.f90 sourcefile~device_info.f90 device_info.f90 sourcefile~backend.f90->sourcefile~device_info.f90 sourcefile~exec_dist.f90~3 exec_dist.f90 sourcefile~backend.f90->sourcefile~exec_dist.f90~3 sourcefile~exec_thom.f90~3 exec_thom.f90 sourcefile~backend.f90->sourcefile~exec_thom.f90~3 sourcefile~fieldops.f90 fieldops.f90 sourcefile~backend.f90->sourcefile~fieldops.f90 sourcefile~sendrecv.f90~2 sendrecv.f90 sourcefile~backend.f90->sourcefile~sendrecv.f90~2 sourcefile~tdsops.f90~2 tdsops.f90 sourcefile~backend.f90->sourcefile~tdsops.f90~2 sourcefile~backend.f90~2->sourcefile~common.f90~4 sourcefile~backend.f90~2->sourcefile~logger.f90 sourcefile~backend.f90~2->sourcefile~allocator.f90~3 sourcefile~backend.f90~2->sourcefile~field.f90 sourcefile~backend.f90~2->sourcefile~mesh.f90 sourcefile~backend.f90~2->sourcefile~poisson_fft.f90~3 sourcefile~backend.f90~2->sourcefile~allocator.f90~2 sourcefile~backend.f90~2->sourcefile~backend.f90~4 sourcefile~backend.f90~2->sourcefile~common.f90~3 sourcefile~backend.f90~2->sourcefile~errors.f90 sourcefile~backend.f90~2->sourcefile~sendrecv.f90 sourcefile~backend.f90~2->sourcefile~tdsops.f90 sourcefile~distributed.f90~3 distributed.f90 sourcefile~backend.f90~2->sourcefile~distributed.f90~3 sourcefile~exec_dist.f90~2 exec_dist.f90 sourcefile~backend.f90~2->sourcefile~exec_dist.f90~2 sourcefile~exec_thom.f90 exec_thom.f90 sourcefile~backend.f90~2->sourcefile~exec_thom.f90 sourcefile~fieldops.f90~2 fieldops.f90 sourcefile~backend.f90~2->sourcefile~fieldops.f90~2 sourcefile~reorder.f90 reorder.f90 sourcefile~backend.f90~2->sourcefile~reorder.f90 sourcefile~tdsops.f90~3 tdsops.f90 sourcefile~backend.f90~2->sourcefile~tdsops.f90~3 sourcefile~backend.f90~3->sourcefile~common.f90~4 sourcefile~backend.f90~3->sourcefile~logger.f90 sourcefile~backend.f90~3->sourcefile~allocator.f90~3 sourcefile~backend.f90~3->sourcefile~field.f90 sourcefile~backend.f90~3->sourcefile~mesh.f90 sourcefile~backend.f90~3->sourcefile~backend.f90~4 sourcefile~backend.f90~3->sourcefile~common.f90 sourcefile~backend.f90~3->sourcefile~tdsops.f90 sourcefile~exec_dist.f90 exec_dist.f90 sourcefile~backend.f90~3->sourcefile~exec_dist.f90 sourcefile~exec_thom.f90~2 exec_thom.f90 sourcefile~backend.f90~3->sourcefile~exec_thom.f90~2 sourcefile~ordering.f90 ordering.f90 sourcefile~backend.f90~3->sourcefile~ordering.f90 sourcefile~poisson_fft.f90 poisson_fft.f90 sourcefile~backend.f90~3->sourcefile~poisson_fft.f90 sourcefile~sendrecv.f90~3 sendrecv.f90 sourcefile~backend.f90~3->sourcefile~sendrecv.f90~3 sourcefile~backend.f90~4->sourcefile~common.f90~4 sourcefile~backend.f90~4->sourcefile~logger.f90 sourcefile~backend.f90~4->sourcefile~allocator.f90~3 sourcefile~backend.f90~4->sourcefile~field.f90 sourcefile~backend.f90~4->sourcefile~mesh.f90 sourcefile~backend.f90~4->sourcefile~poisson_fft.f90~2 sourcefile~backend.f90~4->sourcefile~tdsops.f90 sourcefile~channel.f90->sourcefile~common.f90~4 sourcefile~channel.f90->sourcefile~logger.f90 sourcefile~channel.f90->sourcefile~allocator.f90~3 sourcefile~channel.f90->sourcefile~base_case.f90 sourcefile~channel.f90->sourcefile~config.f90 sourcefile~channel.f90->sourcefile~field.f90 sourcefile~channel.f90->sourcefile~mesh.f90 sourcefile~channel.f90->sourcefile~backend.f90~4 sourcefile~channel.f90->sourcefile~solver.f90 sourcefile~common.f90~2->sourcefile~common.f90~4 sourcefile~common.f90~2->sourcefile~logger.f90 sourcefile~cylinder.f90->sourcefile~common.f90~4 sourcefile~cylinder.f90->sourcefile~logger.f90 sourcefile~cylinder.f90->sourcefile~allocator.f90~3 sourcefile~cylinder.f90->sourcefile~base_case.f90 sourcefile~cylinder.f90->sourcefile~config.f90 sourcefile~cylinder.f90->sourcefile~field.f90 sourcefile~cylinder.f90->sourcefile~mesh.f90 sourcefile~cylinder.f90->sourcefile~backend.f90~4 sourcefile~cylinder.f90->sourcefile~solver.f90 sourcefile~decomp_2decompfft.f90->sourcefile~logger.f90 sourcefile~decomp_2decompfft.f90->sourcefile~mesh_content.f90 sourcefile~diagnostics.f90->sourcefile~common.f90~4 sourcefile~diagnostics.f90->sourcefile~logger.f90 sourcefile~diagnostics.f90->sourcefile~config.f90 sourcefile~diagnostics.f90->sourcefile~field.f90 sourcefile~diagnostics.f90->sourcefile~mesh.f90 sourcefile~diagnostics.f90->sourcefile~backend.f90~4 sourcefile~diagnostics.f90->sourcefile~les.f90 sourcefile~errors.f90->sourcefile~logger.f90 sourcefile~generic.f90->sourcefile~common.f90~4 sourcefile~generic.f90->sourcefile~logger.f90 sourcefile~generic.f90->sourcefile~allocator.f90~3 sourcefile~generic.f90->sourcefile~base_case.f90 sourcefile~generic.f90->sourcefile~field.f90 sourcefile~generic.f90->sourcefile~mesh.f90 sourcefile~generic.f90->sourcefile~backend.f90~4 sourcefile~generic.f90->sourcefile~solver.f90 sourcefile~inflow_planes.f90->sourcefile~common.f90~4 sourcefile~inflow_planes.f90->sourcefile~logger.f90 sourcefile~inflow_planes.f90->sourcefile~config.f90 sourcefile~inflow_planes.f90->sourcefile~field.f90 sourcefile~inflow_planes.f90->sourcefile~mesh.f90 sourcefile~inflow_planes.f90->sourcefile~backend.f90~4 sourcefile~inflow_planes.f90->sourcefile~io_session.f90 sourcefile~io_base.f90->sourcefile~common.f90~4 sourcefile~io_base.f90->sourcefile~field.f90 sourcefile~io_base.f90->sourcefile~backend.f90~4 sourcefile~io_manager.f90->sourcefile~solver.f90 sourcefile~checkpoint_manager.f90 checkpoint_manager.f90 sourcefile~io_manager.f90->sourcefile~checkpoint_manager.f90 sourcefile~checkpoint_state.f90 checkpoint_state.f90 sourcefile~io_manager.f90->sourcefile~checkpoint_state.f90 sourcefile~snapshot_manager.f90 snapshot_manager.f90 sourcefile~io_manager.f90->sourcefile~snapshot_manager.f90 sourcefile~stats.f90 stats.f90 sourcefile~io_manager.f90->sourcefile~stats.f90 sourcefile~io_session.f90->sourcefile~common.f90~4 sourcefile~io_session.f90->sourcefile~logger.f90 sourcefile~io_session.f90->sourcefile~field.f90 sourcefile~io_session.f90->sourcefile~io.f90 sourcefile~io_session.f90->sourcefile~backend.f90~4 sourcefile~io_session.f90->sourcefile~io_base.f90 sourcefile~mesh_content.f90->sourcefile~common.f90~4 sourcefile~mesh_content.f90->sourcefile~logger.f90 sourcefile~poisson_fft.f90~2->sourcefile~common.f90~4 sourcefile~poisson_fft.f90~2->sourcefile~logger.f90 sourcefile~poisson_fft.f90~2->sourcefile~field.f90 sourcefile~poisson_fft.f90~2->sourcefile~mesh.f90 sourcefile~poisson_fft.f90~2->sourcefile~tdsops.f90 sourcefile~postprocess.f90->sourcefile~common.f90~4 sourcefile~postprocess.f90->sourcefile~logger.f90 sourcefile~postprocess.f90->sourcefile~field.f90 sourcefile~postprocess.f90->sourcefile~solver.f90 sourcefile~sendrecv.f90->sourcefile~common.f90~4 sourcefile~sendrecv.f90->sourcefile~logger.f90 sourcefile~sendrecv.f90->sourcefile~errors.f90 sourcefile~solver.f90->sourcefile~common.f90~4 sourcefile~solver.f90->sourcefile~logger.f90 sourcefile~solver.f90->sourcefile~allocator.f90~3 sourcefile~solver.f90->sourcefile~config.f90 sourcefile~solver.f90->sourcefile~field.f90 sourcefile~solver.f90->sourcefile~ibm.f90 sourcefile~solver.f90->sourcefile~mesh.f90 sourcefile~solver.f90->sourcefile~time_integrator.f90 sourcefile~solver.f90->sourcefile~backend.f90~4 sourcefile~solver.f90->sourcefile~tdsops.f90 sourcefile~solver.f90->sourcefile~les.f90 sourcefile~tdsops_setup.f90 tdsops_setup.f90 sourcefile~solver.f90->sourcefile~tdsops_setup.f90 sourcefile~vector_calculus.f90 vector_calculus.f90 sourcefile~solver.f90->sourcefile~vector_calculus.f90 sourcefile~spectral_processing.f90->sourcefile~common.f90~4 sourcefile~tdsops.f90->sourcefile~common.f90~4 sourcefile~tdsops.f90->sourcefile~logger.f90 sourcefile~tgv.f90->sourcefile~common.f90~4 sourcefile~tgv.f90->sourcefile~logger.f90 sourcefile~tgv.f90->sourcefile~allocator.f90~3 sourcefile~tgv.f90->sourcefile~base_case.f90 sourcefile~tgv.f90->sourcefile~field.f90 sourcefile~tgv.f90->sourcefile~mesh.f90 sourcefile~tgv.f90->sourcefile~backend.f90~4 sourcefile~tgv.f90->sourcefile~solver.f90 sourcefile~turbine_model.f90->sourcefile~common.f90~4 sourcefile~turbine_model.f90->sourcefile~allocator.f90~3 sourcefile~turbine_model.f90->sourcefile~field.f90 sourcefile~turbine_model.f90->sourcefile~mesh.f90 sourcefile~turbine_model.f90->sourcefile~backend.f90~4 sourcefile~turbine_model.f90->sourcefile~checkpoint_state.f90 sourcefile~turbine_setup.f90->sourcefile~logger.f90 sourcefile~turbine_setup.f90->sourcefile~config.f90 sourcefile~turbine_setup.f90->sourcefile~io_manager.f90 sourcefile~turbine_setup.f90->sourcefile~solver.f90 sourcefile~turbine_setup.f90->sourcefile~turbine_model.f90 sourcefile~adm.f90 adm.f90 sourcefile~turbine_setup.f90->sourcefile~adm.f90 sourcefile~alm.f90 alm.f90 sourcefile~turbine_setup.f90->sourcefile~alm.f90 sourcefile~turbine_dummy.f90 turbine_dummy.f90 sourcefile~turbine_setup.f90->sourcefile~turbine_dummy.f90 sourcefile~wind_turbine.f90->sourcefile~common.f90~4 sourcefile~wind_turbine.f90->sourcefile~logger.f90 sourcefile~wind_turbine.f90->sourcefile~allocator.f90~3 sourcefile~wind_turbine.f90->sourcefile~base_case.f90 sourcefile~wind_turbine.f90->sourcefile~config.f90 sourcefile~wind_turbine.f90->sourcefile~field.f90 sourcefile~wind_turbine.f90->sourcefile~mesh.f90 sourcefile~wind_turbine.f90->sourcefile~backend.f90~4 sourcefile~wind_turbine.f90->sourcefile~solver.f90 sourcefile~wind_turbine.f90->sourcefile~turbine_model.f90 sourcefile~wind_turbine.f90->sourcefile~turbine_setup.f90 sourcefile~adm.f90->sourcefile~common.f90~4 sourcefile~adm.f90->sourcefile~logger.f90 sourcefile~adm.f90->sourcefile~allocator.f90~3 sourcefile~adm.f90->sourcefile~field.f90 sourcefile~adm.f90->sourcefile~mesh.f90 sourcefile~adm.f90->sourcefile~scalar_series.f90 sourcefile~adm.f90->sourcefile~backend.f90~4 sourcefile~adm.f90->sourcefile~io_session.f90 sourcefile~adm.f90->sourcefile~turbine_model.f90 sourcefile~alm.f90->sourcefile~common.f90~4 sourcefile~alm.f90->sourcefile~logger.f90 sourcefile~alm.f90->sourcefile~allocator.f90~3 sourcefile~alm.f90->sourcefile~field.f90 sourcefile~alm.f90->sourcefile~mesh.f90 sourcefile~alm.f90->sourcefile~scalar_series.f90 sourcefile~alm.f90->sourcefile~backend.f90~4 sourcefile~alm.f90->sourcefile~io_session.f90 sourcefile~alm.f90->sourcefile~turbine_model.f90 sourcefile~alm_controller.f90 alm_controller.f90 sourcefile~alm.f90->sourcefile~alm_controller.f90 sourcefile~alm_element.f90 alm_element.f90 sourcefile~alm.f90->sourcefile~alm_element.f90 sourcefile~alm_output.f90 alm_output.f90 sourcefile~alm.f90->sourcefile~alm_output.f90 sourcefile~alm_turbine.f90 alm_turbine.f90 sourcefile~alm.f90->sourcefile~alm_turbine.f90 sourcefile~checkpoint_manager.f90->sourcefile~common.f90~4 sourcefile~checkpoint_manager.f90->sourcefile~logger.f90 sourcefile~checkpoint_manager.f90->sourcefile~config.f90 sourcefile~checkpoint_manager.f90->sourcefile~field.f90 sourcefile~checkpoint_manager.f90->sourcefile~io.f90 sourcefile~checkpoint_manager.f90->sourcefile~io_session.f90 sourcefile~checkpoint_manager.f90->sourcefile~solver.f90 sourcefile~checkpoint_manager.f90->sourcefile~checkpoint_state.f90 sourcefile~checkpoint_manager.f90->sourcefile~stats.f90 sourcefile~io_field_utils.f90 io_field_utils.f90 sourcefile~checkpoint_manager.f90->sourcefile~io_field_utils.f90 sourcefile~checkpoint_state.f90->sourcefile~io_session.f90 sourcefile~distributed.f90~3->sourcefile~common.f90~4 sourcefile~exec_dist.f90->sourcefile~common.f90~4 sourcefile~exec_dist.f90->sourcefile~common.f90 sourcefile~exec_dist.f90->sourcefile~tdsops.f90 sourcefile~exec_dist.f90->sourcefile~sendrecv.f90~3 sourcefile~distributed.f90~2 distributed.f90 sourcefile~exec_dist.f90->sourcefile~distributed.f90~2 sourcefile~exec_dist.f90~2->sourcefile~common.f90~4 sourcefile~exec_dist.f90~2->sourcefile~common.f90~3 sourcefile~exec_dist.f90~2->sourcefile~sendrecv.f90 sourcefile~exec_dist.f90~2->sourcefile~distributed.f90~3 sourcefile~exec_dist.f90~2->sourcefile~tdsops.f90~3 sourcefile~exec_dist.f90~3->sourcefile~common.f90~4 sourcefile~exec_dist.f90~3->sourcefile~logger.f90 sourcefile~exec_dist.f90~3->sourcefile~common.f90~2 sourcefile~exec_dist.f90~3->sourcefile~sendrecv.f90~2 sourcefile~exec_dist.f90~3->sourcefile~tdsops.f90~2 sourcefile~distributed.f90 distributed.f90 sourcefile~exec_dist.f90~3->sourcefile~distributed.f90 sourcefile~exec_thom.f90->sourcefile~common.f90~4 sourcefile~exec_thom.f90->sourcefile~tdsops.f90~3 sourcefile~thomas.f90~3 thomas.f90 sourcefile~exec_thom.f90->sourcefile~thomas.f90~3 sourcefile~exec_thom.f90~2->sourcefile~common.f90~4 sourcefile~exec_thom.f90~2->sourcefile~tdsops.f90 sourcefile~thomas.f90~2 thomas.f90 sourcefile~exec_thom.f90~2->sourcefile~thomas.f90~2 sourcefile~exec_thom.f90~3->sourcefile~common.f90~4 sourcefile~exec_thom.f90~3->sourcefile~tdsops.f90~2 sourcefile~thomas.f90 thomas.f90 sourcefile~exec_thom.f90~3->sourcefile~thomas.f90 sourcefile~fieldops.f90->sourcefile~common.f90~4 sourcefile~fieldops.f90->sourcefile~common.f90~2 sourcefile~fieldops.f90~2->sourcefile~common.f90~4 sourcefile~fieldops.f90~2->sourcefile~common.f90~3 sourcefile~les.f90->sourcefile~common.f90~4 sourcefile~les.f90->sourcefile~logger.f90 sourcefile~les.f90->sourcefile~config.f90 sourcefile~les.f90->sourcefile~field.f90 sourcefile~les.f90->sourcefile~mesh.f90 sourcefile~les.f90->sourcefile~backend.f90~4 sourcefile~les.f90->sourcefile~tdsops.f90 sourcefile~ordering.f90->sourcefile~common.f90~4 sourcefile~poisson_fft.f90->sourcefile~common.f90~4 sourcefile~poisson_fft.f90->sourcefile~logger.f90 sourcefile~poisson_fft.f90->sourcefile~field.f90 sourcefile~poisson_fft.f90->sourcefile~mesh.f90 sourcefile~poisson_fft.f90->sourcefile~poisson_fft.f90~2 sourcefile~poisson_fft.f90->sourcefile~tdsops.f90 sourcefile~spectral_processing.f90~2 spectral_processing.f90 sourcefile~poisson_fft.f90->sourcefile~spectral_processing.f90~2 sourcefile~reorder.f90->sourcefile~common.f90~4 sourcefile~reorder.f90->sourcefile~common.f90~3 sourcefile~sendrecv.f90~2->sourcefile~common.f90~4 sourcefile~sendrecv.f90~2->sourcefile~common.f90~2 sourcefile~sendrecv.f90~3->sourcefile~common.f90~4 sourcefile~sendrecv.f90~3->sourcefile~logger.f90 sourcefile~snapshot_manager.f90->sourcefile~common.f90~4 sourcefile~snapshot_manager.f90->sourcefile~logger.f90 sourcefile~snapshot_manager.f90->sourcefile~config.f90 sourcefile~snapshot_manager.f90->sourcefile~field.f90 sourcefile~snapshot_manager.f90->sourcefile~io.f90 sourcefile~snapshot_manager.f90->sourcefile~io_base.f90 sourcefile~snapshot_manager.f90->sourcefile~io_session.f90 sourcefile~snapshot_manager.f90->sourcefile~solver.f90 sourcefile~snapshot_manager.f90->sourcefile~io_field_utils.f90 sourcefile~stats.f90->sourcefile~common.f90~4 sourcefile~stats.f90->sourcefile~logger.f90 sourcefile~stats.f90->sourcefile~config.f90 sourcefile~stats.f90->sourcefile~field.f90 sourcefile~stats.f90->sourcefile~io_session.f90 sourcefile~stats.f90->sourcefile~solver.f90 sourcefile~tdsops.f90~2->sourcefile~common.f90~4 sourcefile~tdsops.f90~2->sourcefile~common.f90~2 sourcefile~tdsops.f90~2->sourcefile~tdsops.f90 sourcefile~tdsops.f90~3->sourcefile~common.f90~4 sourcefile~tdsops.f90~3->sourcefile~tdsops.f90 sourcefile~tdsops_setup.f90->sourcefile~common.f90~4 sourcefile~tdsops_setup.f90->sourcefile~logger.f90 sourcefile~tdsops_setup.f90->sourcefile~mesh.f90 sourcefile~tdsops_setup.f90->sourcefile~backend.f90~4 sourcefile~tdsops_setup.f90->sourcefile~tdsops.f90 sourcefile~turbine_dummy.f90->sourcefile~common.f90~4 sourcefile~turbine_dummy.f90->sourcefile~allocator.f90~3 sourcefile~turbine_dummy.f90->sourcefile~field.f90 sourcefile~turbine_dummy.f90->sourcefile~mesh.f90 sourcefile~turbine_dummy.f90->sourcefile~backend.f90~4 sourcefile~turbine_dummy.f90->sourcefile~io_session.f90 sourcefile~turbine_dummy.f90->sourcefile~turbine_model.f90 sourcefile~vector_calculus.f90->sourcefile~common.f90~4 sourcefile~vector_calculus.f90->sourcefile~logger.f90 sourcefile~vector_calculus.f90->sourcefile~allocator.f90~3 sourcefile~vector_calculus.f90->sourcefile~field.f90 sourcefile~vector_calculus.f90->sourcefile~backend.f90~4 sourcefile~vector_calculus.f90->sourcefile~tdsops.f90 sourcefile~alm_controller.f90->sourcefile~common.f90~4 sourcefile~alm_controller.f90->sourcefile~logger.f90 sourcefile~alm_element.f90->sourcefile~common.f90~4 sourcefile~alm_element.f90->sourcefile~logger.f90 sourcefile~alm_airfoil.f90 alm_airfoil.f90 sourcefile~alm_element.f90->sourcefile~alm_airfoil.f90 sourcefile~alm_output.f90->sourcefile~common.f90~4 sourcefile~alm_output.f90->sourcefile~logger.f90 sourcefile~alm_output.f90->sourcefile~alm_element.f90 sourcefile~alm_turbine.f90->sourcefile~common.f90~4 sourcefile~alm_turbine.f90->sourcefile~logger.f90 sourcefile~alm_turbine.f90->sourcefile~alm_controller.f90 sourcefile~alm_turbine.f90->sourcefile~alm_element.f90 sourcefile~alm_turbine.f90->sourcefile~alm_airfoil.f90 sourcefile~distributed.f90->sourcefile~common.f90~4 sourcefile~distributed.f90->sourcefile~common.f90~2 sourcefile~distributed.f90~2->sourcefile~common.f90~4 sourcefile~distributed.f90~2->sourcefile~common.f90 sourcefile~io_field_utils.f90->sourcefile~common.f90~4 sourcefile~io_field_utils.f90->sourcefile~logger.f90 sourcefile~io_field_utils.f90->sourcefile~field.f90 sourcefile~io_field_utils.f90->sourcefile~io_base.f90 sourcefile~io_field_utils.f90->sourcefile~solver.f90 sourcefile~nvtx.f90 nvtx.f90 sourcefile~io_field_utils.f90->sourcefile~nvtx.f90 sourcefile~spectral_processing.f90~2->sourcefile~common.f90~4 sourcefile~spectral_processing.f90~2->sourcefile~logger.f90 sourcefile~thomas.f90->sourcefile~common.f90~4 sourcefile~thomas.f90->sourcefile~common.f90~2 sourcefile~thomas.f90~2->sourcefile~common.f90~4 sourcefile~thomas.f90~2->sourcefile~common.f90 sourcefile~thomas.f90~3->sourcefile~common.f90~4 sourcefile~alm_airfoil.f90->sourcefile~common.f90~4 sourcefile~alm_airfoil.f90->sourcefile~logger.f90

Source Code

program x3d2_memcheck
  !! Standalone GPU memory estimator for an x3d2 .x3d input file.
  !!   --static   The formula estimate only.
  !!   (no flag)  The formula estimate, then an FFT plan probe on the whole
  !!              grid.
  !!   --build    The above, then a real case build and one substep on 1 GPU,
  !!              measured with cudaMemGetInfo, and a CHECK line against the
  !!              estimate.
  !! The probe gives the CUDA context and the NVSHMEM heap of the GPU in
  !! use. The GPU-aware IO staging buffer is added by formula.
  !! Usage: x3d2-memcheck <input.x3d> [--static | --build [--extensive <n>]]
  use mpi
  use m_common, only: i8
  use m_logger, only: abort_run, log_info
  use m_memory_estimate, only: output_field_active, peak_fields_lookup
  use m_memcheck_context, only: memcheck_ctx_t, parse_args, read_config, &
                                classify_bc, resolve_gpu_io_mode
  use m_memcheck_estimate, only: to_gib
  use m_memcheck_report, only: report
  use m_memcheck_build, only: run_build_mode

  implicit none

  type(memcheck_ctx_t) :: ctx
  integer :: ierr, nproc
  logical :: device_ok
  character(len=128) :: device_msg

  call MPI_Init(ierr)
  call MPI_Comm_rank(MPI_COMM_WORLD, ctx%irank, ierr)
  call MPI_Comm_size(MPI_COMM_WORLD, nproc, ierr)
  if (nproc /= 1) call abort_run( &
    'x3d2-memcheck: run single-rank (mpirun -n 1).', collective=.true.)

  call ctx%device%init(device_ok, device_msg)
  if (.not. device_ok) then
    call log_info(trim(device_msg))
    call no_device_exit()
  end if

  call parse_args(ctx)
  call read_config(ctx)
  call resolve_gpu_io_mode(ctx)
  call classify_bc(ctx)
  call query_card_gib()

  ctx%peak_fields = peak_fields_lookup( &
                    trim(ctx%domain_cfg%flow_case_name), &
                    ctx%solver_cfg%time_intg, &
                    ctx%solver_cfg%n_species, &
                    trim(ctx%les_cfg%model) /= 'none', &
                    ctx%solver_cfg%ibm_on, &
                    output_field_active(ctx%checkpoint_cfg, 'vorticity'), &
                    output_field_active(ctx%checkpoint_cfg, 'qcriterion'), &
                    ctx%solver_cfg%lowmem_transeq)

  ! Exception to the solver rule: the CUDA solver accepts 110 on
  ! nproc > 1 through cuFFTMp, but x3d2-memcheck keeps 110 single GPU until
  ! the multi-rank buffers of #417 are in the estimate. Sharing the solver
  ! rule now would print supported rows with under-estimated figures.
  ctx%multi_gpu_supported = .not. (ctx%bc_is_010 .or. ctx%bc_is_110)

  call report(ctx)
  if (trim(ctx%run_mode) == 'BUILD') call run_build_mode(ctx)

  call MPI_Finalize(ierr)

  ! Exit code: 0 FITS, 1 BORDERLINE, 2 DOES_NOT_FIT or UNSUPPORTED.
  select case (trim(ctx%final_verdict))
  case ('FITS')
    call exit(0)
  case ('BORDERLINE')
    call exit(1)
  case default
    call exit(2)
  end select

contains

  subroutine no_device_exit()
    !! Shuts MPI down, then stops.
    integer :: ierr_finalize

    call MPI_Finalize(ierr_finalize)
    call abort_run('x3d2-memcheck: no usable CUDA device', collective=.true.)
  end subroutine no_device_exit

  subroutine query_card_gib()
    integer(i8) :: free_b, total_b

    call ctx%device%mem_info(total_b, free_b)
    ctx%card_gib = to_gib(total_b)
    ctx%card_free_gib = to_gib(free_b)
  end subroutine query_card_gib

end program x3d2_memcheck