Skip to content

mod_forward_backward_batched

Lines: 141 | Visibility: private

Universal routines for batchwise forward/backward passes. author: Alexander Knoll

Dependencies

Uses

module~~mod_forward_backward_batched~~UsesGraph module~mod_forward_backward_batched mod_forward_backward_batched module~mod_abstract_property_model mod_abstract_property_model module~mod_forward_backward_batched->module~mod_abstract_property_model module~mod_databatcher mod_databatcher module~mod_forward_backward_batched->module~mod_databatcher module~mod_mpi mod_mpi module~mod_forward_backward_batched->module~mod_mpi module~mod_periodic_table mod_periodic_table module~mod_forward_backward_batched->module~mod_periodic_table module~mod_precision mod_precision module~mod_forward_backward_batched->module~mod_precision module~mod_throw mod_throw module~mod_forward_backward_batched->module~mod_throw module~mod_abstract_property_model->module~mod_precision module~mod_abstract_property_model->module~mod_throw module~mod_array_helpers mod_array_helpers module~mod_abstract_property_model->module~mod_array_helpers module~mod_initialize_array mod_initialize_array module~mod_abstract_property_model->module~mod_initialize_array module~mod_io mod_io module~mod_abstract_property_model->module~mod_io module~mod_random mod_random module~mod_abstract_property_model->module~mod_random module~mod_settings mod_settings module~mod_abstract_property_model->module~mod_settings module~mod_databatcher->module~mod_mpi module~mod_databatcher->module~mod_precision module~mod_databatcher->module~mod_throw module~mod_databatcher->module~mod_array_helpers module~mod_databatcher->module~mod_random module~mod_mpi->module~mod_precision mpi_f08 mpi_f08 module~mod_mpi->mpi_f08 module~mod_periodic_table->module~mod_precision module~mod_periodic_table->module~mod_throw module~mod_periodic_table->module~mod_array_helpers module~mod_constants mod_constants module~mod_periodic_table->module~mod_constants module~mod_periodic_table->module~mod_io iso_c_binding iso_c_binding module~mod_precision->iso_c_binding iso_fortran_env iso_fortran_env module~mod_precision->iso_fortran_env module~mod_throw->module~mod_mpi module~mod_throw->module~mod_precision module~mod_throw->iso_c_binding module~mod_throw->iso_fortran_env module~mod_throw->module~mod_io module~mod_sort mod_sort module~mod_throw->module~mod_sort module~mod_array_helpers->module~mod_precision module~mod_array_helpers->module~mod_throw module~mod_constants->module~mod_precision module~mod_constants->iso_c_binding module~mod_initialize_array->module~mod_mpi module~mod_initialize_array->module~mod_precision module~mod_initialize_array->module~mod_throw module~mod_initialize_array->module~mod_io module~mod_initialize_array->module~mod_random module~mod_parameter_file mod_parameter_file module~mod_initialize_array->module~mod_parameter_file module~mod_io->module~mod_precision module~mod_io->iso_fortran_env module~mod_optional_args mod_optional_args module~mod_io->module~mod_optional_args module~mod_random->module~mod_precision module~mod_random->module~mod_constants module~mod_settings->module~mod_periodic_table module~mod_settings->module~mod_precision module~mod_settings->module~mod_throw module~mod_settings->module~mod_constants module~mod_settings->module~mod_io module~mod_cpu_vendor mod_cpu_vendor module~mod_settings->module~mod_cpu_vendor module~mod_sort->module~mod_precision module~mod_cpu_vendor->iso_c_binding module~mod_parameter_file->module~mod_precision module~mod_parameter_file->module~mod_throw module~mod_parameter_file->module~mod_io module~mod_abstract_broadcast_file mod_abstract_broadcast_file module~mod_parameter_file->module~mod_abstract_broadcast_file module~mod_nan_check mod_nan_check module~mod_parameter_file->module~mod_nan_check module~mod_abstract_broadcast_file->module~mod_mpi module~mod_abstract_broadcast_file->module~mod_throw module~mod_abstract_broadcast_file->module~mod_io module~mod_genericfile mod_genericfile module~mod_abstract_broadcast_file->module~mod_genericfile module~mod_sanitize mod_sanitize module~mod_abstract_broadcast_file->module~mod_sanitize module~mod_nan_check->module~mod_precision module~mod_nan_check->module~mod_throw module~mod_nan_check->module~mod_io ieee_arithmetic ieee_arithmetic module~mod_nan_check->ieee_arithmetic module~mod_genericfile->module~mod_mpi module~mod_genericfile->module~mod_throw module~mod_genericfile->module~mod_io module~mod_sanitize->module~mod_throw

Used By

module~~mod_forward_backward_batched~~UsedByGraph module~mod_forward_backward_batched mod_forward_backward_batched module~mod_train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch module~mod_train_4g_atomic_charges_structure_batch->module~mod_forward_backward_batched module~mod_train_atomic_property_multiple_atoms mod_train_atomic_property_multiple_atoms module~mod_train_atomic_property_multiple_atoms->module~mod_forward_backward_batched module~mod_train_energy_multiple_structures mod_train_energy_multiple_structures module~mod_train_energy_multiple_structures->module~mod_forward_backward_batched module~mod_train_forces_multiple_structures mod_train_forces_multiple_structures module~mod_train_forces_multiple_structures->module~mod_train_energy_multiple_structures module~mod_train_loop_4g_charges mod_train_loop_4g_charges module~mod_train_loop_4g_charges->module~mod_train_4g_atomic_charges_structure_batch module~mod_train_loop_atomic_property mod_train_loop_atomic_property module~mod_train_loop_atomic_property->module~mod_train_atomic_property_multiple_atoms module~mod_train_loop_short_range mod_train_loop_short_range module~mod_train_loop_short_range->module~mod_train_energy_multiple_structures module~mod_train_loop_short_range->module~mod_train_forces_multiple_structures module~mod_train_mode mod_train_mode module~mod_train_mode->module~mod_train_loop_4g_charges module~mod_train_mode->module~mod_train_loop_atomic_property module~mod_train_mode->module~mod_train_loop_short_range program~runner RuNNer program~runner->module~mod_train_mode

Procedures Summary

Name Type Description
forward_backward_batched_multiple_models Subroutine Pass an array of features forward and the corresponding loss gradients backward through multiple...
forward_backward_batched_single_model Subroutine Pass an array of features forward and the corresponding loss gradients backward through multiple...
forward_backward_with_extra_features Subroutine
forward_backward Subroutine

Interface Details

interface forward_backward_batched


Procedure Details

subroutine forward_backward_batched_multiple_models

subroutine forward_backward_batched_multiple_models( &
    models, &
    model_indices, &
    features, &
    loss_gradients, &
    num_features, &
    num_extra_features, &
    extra_features, &
    batchsize, &
    atomic_numbers &
)

Pass an array of features forward and the corresponding loss gradients backward through multiple models in batches.

Arguments

  • models : type(ModelPtr) (dim: (:,:)) [inout]– The model through which the forward pass will be performed.
  • model_indices : integer (dim: (:)) [in]
  • features : real(DP) (dim: (:,:)) [inout]– The feature values for each sample (max_num_features x num_samples).
  • loss_gradients : real(DP) (dim: (:,:,:,:)) [in]– If given, this contains the loss gradient for each sample and is used as the starting point for the backward pass. Dimensions: (max_num_output_values, num_samples, committee_size, num_models)
  • num_features : integer (dim: (MAX_ELEM_NUM)) [in]– The number of features for each atomic number and each model in `features. The number of features is the same for all committee members of one model.
  • num_extra_features : integer (dim: (size(models,2))) [in]– The number of additional feature values that will be appended to the `features` array.
  • extra_features : real(DP) (dim: (:,:,:,:)) [in]– Additional feature values that will be appended to the `features` array. The features array must be large enough upon entry to accomodate all extra_features. The number of extra_features can be different between models, but is the same for all committee members of a model. The values of extra_features can differ between committee members and will be copied to the correct place before the full features array is passed to the model. Dimensions: (maxval(num_extra_features), num_samples, committee_size, num_models).
  • batchsize : integer (dim: (MAX_ELEM_NUM)) [in]– How large the batches are supposed to be for each atomic number.
  • atomic_numbers : integer (dim: (:)) [in]– The atomic number belonging to each sample in `features`

Called By

proc~~forward_backward_batched_multiple_models~~CalledByGraph proc~forward_backward_batched_multiple_models mod_forward_backward_batched::forward_backward_batched_multiple_models interface~forward_backward_batched mod_forward_backward_batched::forward_backward_batched interface~forward_backward_batched->proc~forward_backward_batched_multiple_models proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->interface~forward_backward_batched proc~train_atomic_property_multiple_atoms mod_train_atomic_property_multiple_atoms::train_atomic_property_multiple_atoms proc~train_atomic_property_multiple_atoms->interface~forward_backward_batched proc~train_energy_multiple_structures mod_train_energy_multiple_structures::train_energy_multiple_structures proc~train_energy_multiple_structures->interface~forward_backward_batched proc~train_forces_multiple_structures mod_train_forces_multiple_structures::train_forces_multiple_structures proc~train_forces_multiple_structures->proc~train_energy_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_atomic_property mod_train_loop_atomic_property::train_loop_atomic_property proc~train_loop_atomic_property->proc~train_atomic_property_multiple_atoms proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~train_energy_multiple_structures proc~train_loop_short_range->proc~train_forces_multiple_structures proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges proc~train_mode->proc~train_loop_atomic_property proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~train_mode

subroutine forward_backward_batched_single_model

subroutine forward_backward_batched_single_model( &
    models, &
    features, &
    loss_gradients, &
    num_features, &
    num_extra_features, &
    extra_features, &
    batchsize, &
    atomic_numbers &
)

Pass an array of features forward and the corresponding loss gradients backward through multiple models in batches.

Arguments

  • models : type(ModelPtr) (dim: (:)) [inout]– The model through which the forward pass will be performed.
  • features : real(DP) (dim: (:,:)) [inout]– The feature values for each sample (max_num_features x num_samples).
  • loss_gradients : real(DP) (dim: (:,:,:)) [in]– If given, this contains the loss gradient for each sample and is used as the starting point for the backward pass. Dimensions: (max_num_output_values, num_samples, committee_size)
  • num_features : integer (dim: (MAX_ELEM_NUM)) [in]– The number of features for each atomic number and each model in `features. The number of features is the same for all committee members of one model.
  • num_extra_features : integer [in]– The number of additional feature values that will be appended to the `features` array.
  • extra_features : real(DP) (dim: (:,:,:)) [in]– Additional feature values that will be appended to the `features` array. The features array must be large enough upon entry to accomodate all extra_features. The number of extra_features can be different between models, but is the same for all committee members of a model. The values of extra_features can differ between committee members and will be copied to the correct place before the full features array is passed to the model. Dimensions: (maxval(num_extra_features), num_samples, committee_size).
  • batchsize : integer (dim: (MAX_ELEM_NUM)) [in]– How large the batches are supposed to be for each atomic number.
  • atomic_numbers : integer (dim: (:)) [in]– The atomic number belonging to each sample in `features`

Called By

proc~~forward_backward_batched_single_model~~CalledByGraph proc~forward_backward_batched_single_model mod_forward_backward_batched::forward_backward_batched_single_model interface~forward_backward_batched mod_forward_backward_batched::forward_backward_batched interface~forward_backward_batched->proc~forward_backward_batched_single_model proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->interface~forward_backward_batched proc~train_atomic_property_multiple_atoms mod_train_atomic_property_multiple_atoms::train_atomic_property_multiple_atoms proc~train_atomic_property_multiple_atoms->interface~forward_backward_batched proc~train_energy_multiple_structures mod_train_energy_multiple_structures::train_energy_multiple_structures proc~train_energy_multiple_structures->interface~forward_backward_batched proc~train_forces_multiple_structures mod_train_forces_multiple_structures::train_forces_multiple_structures proc~train_forces_multiple_structures->proc~train_energy_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_atomic_property mod_train_loop_atomic_property::train_loop_atomic_property proc~train_loop_atomic_property->proc~train_atomic_property_multiple_atoms proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~train_energy_multiple_structures proc~train_loop_short_range->proc~train_forces_multiple_structures proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges proc~train_mode->proc~train_loop_atomic_property proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~train_mode

subroutine forward_backward_with_extra_features

subroutine forward_backward_with_extra_features( &
    model, &
    features, &
    ids, &
    loss_gradients, &
    num_features, &
    num_extra_features, &
    extra_features, &
    atomic_numbers &
)

Arguments

  • model : class(AbstractPropertyModel) [inout]
  • features : real(DP) (dim: (:,:)) [inout]
  • ids : integer (dim: (:)) [in]
  • loss_gradients : real(DP) (dim: (:,:)) [in]
  • num_features : integer (dim: (MAX_ELEM_NUM)) [in]
  • num_extra_features : integer [in]
  • extra_features : real(DP) (dim: (:,:)) [in]
  • atomic_numbers : integer (dim: (:)) [in]

Called By

proc~~forward_backward_with_extra_features~~CalledByGraph proc~forward_backward_with_extra_features mod_forward_backward_batched::forward_backward_with_extra_features proc~forward_backward_batched_multiple_models mod_forward_backward_batched::forward_backward_batched_multiple_models proc~forward_backward_batched_multiple_models->proc~forward_backward_with_extra_features proc~forward_backward_batched_single_model mod_forward_backward_batched::forward_backward_batched_single_model proc~forward_backward_batched_single_model->proc~forward_backward_with_extra_features interface~forward_backward_batched mod_forward_backward_batched::forward_backward_batched interface~forward_backward_batched->proc~forward_backward_batched_multiple_models interface~forward_backward_batched->proc~forward_backward_batched_single_model proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->interface~forward_backward_batched proc~train_atomic_property_multiple_atoms mod_train_atomic_property_multiple_atoms::train_atomic_property_multiple_atoms proc~train_atomic_property_multiple_atoms->interface~forward_backward_batched proc~train_energy_multiple_structures mod_train_energy_multiple_structures::train_energy_multiple_structures proc~train_energy_multiple_structures->interface~forward_backward_batched proc~train_forces_multiple_structures mod_train_forces_multiple_structures::train_forces_multiple_structures proc~train_forces_multiple_structures->proc~train_energy_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_atomic_property mod_train_loop_atomic_property::train_loop_atomic_property proc~train_loop_atomic_property->proc~train_atomic_property_multiple_atoms proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~train_energy_multiple_structures proc~train_loop_short_range->proc~train_forces_multiple_structures proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges proc~train_mode->proc~train_loop_atomic_property proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~train_mode

subroutine forward_backward

subroutine forward_backward( &
    model, &
    features, &
    ids, &
    loss_gradients, &
    num_features, &
    atomic_numbers &
)

Arguments

  • model : class(AbstractPropertyModel) [inout]
  • features : real(DP) (dim: (:,:)) [inout]
  • ids : integer (dim: (:)) [in]
  • loss_gradients : real(DP) (dim: (:,:)) [in]
  • num_features : integer (dim: (MAX_ELEM_NUM)) [in]
  • atomic_numbers : integer (dim: (:)) [in]

Called By

proc~~forward_backward~~CalledByGraph proc~forward_backward mod_forward_backward_batched::forward_backward proc~forward_backward_batched_multiple_models mod_forward_backward_batched::forward_backward_batched_multiple_models proc~forward_backward_batched_multiple_models->proc~forward_backward proc~forward_backward_batched_single_model mod_forward_backward_batched::forward_backward_batched_single_model proc~forward_backward_batched_single_model->proc~forward_backward interface~forward_backward_batched mod_forward_backward_batched::forward_backward_batched interface~forward_backward_batched->proc~forward_backward_batched_multiple_models interface~forward_backward_batched->proc~forward_backward_batched_single_model proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->interface~forward_backward_batched proc~train_atomic_property_multiple_atoms mod_train_atomic_property_multiple_atoms::train_atomic_property_multiple_atoms proc~train_atomic_property_multiple_atoms->interface~forward_backward_batched proc~train_energy_multiple_structures mod_train_energy_multiple_structures::train_energy_multiple_structures proc~train_energy_multiple_structures->interface~forward_backward_batched proc~train_forces_multiple_structures mod_train_forces_multiple_structures::train_forces_multiple_structures proc~train_forces_multiple_structures->proc~train_energy_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_atomic_property mod_train_loop_atomic_property::train_loop_atomic_property proc~train_loop_atomic_property->proc~train_atomic_property_multiple_atoms proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~train_energy_multiple_structures proc~train_loop_short_range->proc~train_forces_multiple_structures proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges proc~train_mode->proc~train_loop_atomic_property proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~train_mode