gpu_astaroth

Module

Description

$Id$

MODULE_DOC: This module contains GPU related types and functions to be used with the ASTAROTH nucleus.

CPARAM logical, parameter :: lgpu = .true.


Quick access

Variables:

before_boundary_gpu_c, copy_farray_c, finalize_gpu_c, get_farray_ptr_gpu_c, get_gpu_reduced_vars_c, gpu_prepare_for_first_substep_c, initialize_gpu_c, it_test_rhs, lac_sparse_autotuning, lac_sparse_autotuning_always, lcpu_timestep_on_gpu, lcumulative_df_on_gpu, load_farray_c, lonly_default_stream_for_taskgraphs, lread_all_vars_from_device, lsingle_precision_timestep, lskip_rtime_compilation, ltest_bcs, ltest_rhs, pfarr_gpu_in, pfarr_gpu_out, pos_real_ptr_c, print_snapshot_c, radtransfer_gpu_c, register_gpu_c, reload_gpu_config_c, rhs_gpu_c, split_update_gpu_c, test_bcs_c, tf_create_model_c, tf_load_model_c, tf_load_model_checkpoint_c, tf_save_checkpoint_c, tf_save_model_c, thread_block_loop_factors, torchinfer_c, torchtrain_c, update_after_substep_gpu_c, update_on_gpu_arr_by_ind_c, update_on_gpu_arr_by_name_c, update_on_gpu_scal_by_ind_c, update_on_gpu_scal_by_name_c, update_on_gpu_vec_by_ind_c, update_on_gpu_vec_by_name_c

Routines:

before_boundary_gpu(), copy_farray_from_gpu(), finalize_gpu(), get_farray_ptr_gpu(), get_gpu_reduced_vars(), get_ptr_gpu(), get_ptr_gpu_training(), gpu_prepare_for_first_substep(), infer_gpu(), initialize_gpu(), load_farray_to_gpu(), radtransfer_gpu(), read_gpu_run_pars(), register_gpu(), reload_gpu_config(), rhs_gpu(), split_update_gpu(), tau_snapshots(), test_gpu_bcs(), tf_create_model(), tf_load_model(), tf_load_model_checkpoint(), tf_save_checkpoint(), tf_save_model(), train_gpu(), update_after_substep_gpu(), update_on_gpu(), update_on_gpu_vec(), write_gpu_run_pars()

Needed modules

Variables

  • gpu/before_boundary_gpu_c [private/external]
  • gpu/copy_farray_c [private/external]
  • gpu/finalize_gpu_c [private/external]
  • gpu/get_farray_ptr_gpu_c [private/external]
  • gpu/get_gpu_reduced_vars_c [private/external]
  • gpu/gpu_prepare_for_first_substep_c [private/external]
  • gpu/initialize_gpu_c [private/external]
  • gpu/it_test_rhs [integer,public/optional/default=1]
  • gpu/lac_sparse_autotuning [logical,private/optional/default=.true.]
  • gpu/lac_sparse_autotuning_always [logical,private/optional/default=.false.]
  • gpu/lcpu_timestep_on_gpu [logical,private/optional/default=.false.]
  • gpu/lcumulative_df_on_gpu [logical,private/optional/default=.false.]
  • gpu/load_farray_c [private/external]
  • gpu/lonly_default_stream_for_taskgraphs [logical,private/optional/default=.false.]
  • gpu/lread_all_vars_from_device [logical,private/optional/default=.false.]
  • gpu/lsingle_precision_timestep [logical,private/optional/default=.true.]
  • gpu/lskip_rtime_compilation [logical,private/optional/default=.false.]
  • gpu/ltest_bcs [logical,public/optional/default=.false.]
  • gpu/ltest_rhs [logical,public/optional/default=.false.]
  • gpu/pfarr_gpu_in [c_ptr,private]
  • gpu/pfarr_gpu_out [c_ptr,private]
  • gpu/pos_real_ptr_c [private/external]
  • gpu/print_snapshot_c [private/external]
  • gpu/radtransfer_gpu_c [private/external]
  • gpu/register_gpu_c [private/external]
  • gpu/reload_gpu_config_c [private/external]
  • gpu/rhs_gpu_c [private/external]
  • gpu/split_update_gpu_c [private/external]
  • gpu/test_bcs_c [private/external]
  • gpu/tf_create_model_c [private/external]
  • gpu/tf_load_model_c [private/external]
  • gpu/tf_load_model_checkpoint_c [private/external]
  • gpu/tf_save_checkpoint_c [private/external]
  • gpu/tf_save_model_c [private/external]
  • gpu/thread_block_loop_factors (3) [integer,private/optional/default=(/1,1,1/)]
  • gpu/torchinfer_c [private/external]
  • gpu/torchtrain_c [private/external]
  • gpu/update_after_substep_gpu_c [private/external]
  • gpu/update_on_gpu_arr_by_ind_c [private/external]
  • gpu/update_on_gpu_arr_by_name_c [integer,private/external]
  • gpu/update_on_gpu_scal_by_ind_c [private/external]
  • gpu/update_on_gpu_scal_by_name_c [integer,private/external]
  • gpu/update_on_gpu_vec_by_ind_c [private/external]
  • gpu/update_on_gpu_vec_by_name_c [integer,private/external]

Subroutines and functions

subroutine  gpu/train_gpu(loss, itsub, t)
Parameters:
  • loss [real]

  • itsub [integer]

  • t [real,in]

Call to:

fatal_error(), load_farray_to_gpu(), get_farray_ptr_gpu(), get_ptr_gpu(), get_ptr_gpu_training()

subroutine  gpu/infer_gpu(flag)
Parameters:

flag [integer]

Call to:

fatal_error(), load_farray_to_gpu(), get_farray_ptr_gpu(), get_ptr_gpu(), get_ptr_gpu_training()

subroutine  gpu/tf_create_model(model_name, config_file_path, lmpicomm)
Parameters:
  • model_name [character,in]

  • config_file_path [character,in]

  • lmpicomm [logical]

Use :

mpicomm (mpi_comm_pencil())

Call to:

fatal_error(), load_farray_to_gpu(), get_farray_ptr_gpu(), get_ptr_gpu(), get_ptr_gpu_training()

subroutine  gpu/tau_snapshots()
Call to:

fatal_error(), load_farray_to_gpu(), get_farray_ptr_gpu(), get_ptr_gpu(), get_ptr_gpu_training()

subroutine  gpu/tf_load_model(model_name, fname)
Parameters:
  • model_name [character,in]

  • fname [character,in]

Call to:

fatal_error(), load_farray_to_gpu(), get_farray_ptr_gpu(), get_ptr_gpu(), get_ptr_gpu_training()

subroutine  gpu/tf_load_model_checkpoint(model_name, checkpoint_dir)
Parameters:
  • model_name [character,in]

  • checkpoint_dir [character,in]

Call to:

fatal_error(), load_farray_to_gpu(), get_farray_ptr_gpu(), get_ptr_gpu(), get_ptr_gpu_training()

subroutine  gpu/tf_save_model(model_name, fname)
Parameters:
  • model_name [character,in]

  • fname [character,in]

Call to:

fatal_error(), load_farray_to_gpu(), get_farray_ptr_gpu(), get_ptr_gpu(), get_ptr_gpu_training()

subroutine  gpu/tf_save_checkpoint(model_name, checkpoint_dir)
Parameters:
  • model_name [character,in]

  • checkpoint_dir [character,in]

Call to:

fatal_error(), load_farray_to_gpu(), get_farray_ptr_gpu(), get_ptr_gpu(), get_ptr_gpu_training()

subroutine  gpu/initialize_gpu(f)
Parameters:

f (,,*,*) [real,in]

Use :

mpicomm (mpi_comm_pencil())

Call to:

fatal_error(), load_farray_to_gpu(), get_farray_ptr_gpu(), get_ptr_gpu(), get_ptr_gpu_training()

subroutine  gpu/read_gpu_run_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

Call to:

get_ptr_gpu(), get_ptr_gpu_training(), fatal_error()

subroutine  gpu/write_gpu_run_pars(unit)
Parameters:

unit [integer,in]

Call to:

get_ptr_gpu(), get_ptr_gpu_training(), fatal_error()

subroutine  gpu/register_gpu()
Call to:

get_ptr_gpu(), get_ptr_gpu_training(), fatal_error()

subroutine  gpu/finalize_gpu()
Call to:

get_ptr_gpu(), get_ptr_gpu_training(), fatal_error()

subroutine  gpu/get_farray_ptr_gpu()
Call to:

get_ptr_gpu(), get_ptr_gpu_training(), fatal_error()

subroutine  gpu/rhs_gpu(f, isubstep)
Parameters:
Use :

general (notanumber())

Call to:

get_ptr_gpu(), get_ptr_gpu_training(), fatal_error()

subroutine  gpu/before_boundary_gpu(f, lrmv, isubstep, t)
Parameters:
  • f (mx,my,mz,mfarray) [real,inout]

  • lrmv [logical]

  • isubstep [integer,in]

  • t [real,in]

Use :

general (notanumber())

Call to:

get_ptr_gpu(), get_ptr_gpu_training(), fatal_error()

subroutine  gpu/update_after_substep_gpu()
Call to:

get_ptr_gpu(), get_ptr_gpu_training(), fatal_error()

subroutine  gpu/gpu_prepare_for_first_substep()
Call to:

get_ptr_gpu(), get_ptr_gpu_training(), fatal_error()

function  gpu/get_ptr_gpu([ind1[, ind2[, lout]]])

Fetches the address of the f-array counterpart on the GPU for slots from ind1 to ind2 and transforms it to a Fortran pointer.

Parameters:
  • ind1 [integer]

  • ind2 [integer]

  • lout [logical]

Return:

pfarr (,,*,*) [real,pointer]

Call to:

get_ptr_gpu_training(), fatal_error()

function  gpu/get_ptr_gpu_training(ind1[, ind2[, lout]])
Parameters:
  • ind1 [integer]

  • ind2 [integer]

  • lout [logical]

Return:

pfarr (,,*,*,*) [real,pointer]

Use :

cparam, iso_c_binding

Call to:

fatal_error()

subroutine  gpu/copy_farray_from_gpu(f[, nowait_])
Parameters:
Call to:

fatal_error()

subroutine  gpu/load_farray_to_gpu(f)
Parameters:

f (mx,my,mz,mfarray) [real,in]

Call to:

fatal_error()

subroutine  gpu/reload_gpu_config()
Call to:

fatal_error()

subroutine  gpu/update_on_gpu_vec(index[, varname[, value]])

Updates an element of the Astaroth configuration, identified by name or index, on the GPU.

Parameters:
  • index [integer,inout]

  • varname [character]

  • value (3) [real]

Call to:

fatal_error()

subroutine  gpu/update_on_gpu(index[, varname[, value]])

Updates an element of the Astaroth configuration, identified by name or index, on the GPU.

Parameters:
  • index [integer,inout]

  • varname [character]

  • value [real]

Call to:

fatal_error()

subroutine  gpu/radtransfer_gpu()
subroutine  gpu/get_gpu_reduced_vars(dst)
Parameters:

dst (10) [real]

subroutine  gpu/test_gpu_bcs()
subroutine  gpu/split_update_gpu(f)
Parameters:

f (mx,my,mz,mfarray) [real,inout]

subroutine  gpu/pushpars2c(p_par)
Parameters:

p_par (50) [integer]

Use :

syscalls (copy_addr()), general (pos_in_array(), string_to_enum())