athena__onnx_nop_utils Module

Shared utility routines for NOP ONNX export/import.



Functions

public function detect_onnx_expanded_nop_activation(prefix, nodes, num_nodes) result(name)

Reconstruct the activation name from the tail of an expanded-ONNX NOP cluster.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: prefix

Layer node prefix without leading slash

type(onnx_node_type), intent(in) :: nodes(:)

Parsed ONNX nodes

integer, intent(in) :: num_nodes

Number of valid node entries

Return Value character(len=64)

Reconstructed ATHENA activation name

public function extract_nop_prefix(meta_key) result(prefix)

Extract the node prefix from an athena_nop_node_X metadata key.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: meta_key

Return Value character(len=64)

public function find_initialiser_by_name(name, inits, num_inits)

Return the index of a named initialiser, or zero when not found.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: name
type(onnx_initialiser_type), intent(in) :: inits(:)
integer, intent(in) :: num_inits

Return Value integer

public function find_node_initialiser_index(node, inits, num_inits)

Return the first initialiser referenced by a node's inputs.

Arguments

Type IntentOptional Attributes Name
type(onnx_node_type), intent(in) :: node

Parsed ONNX node whose inputs may reference an initialiser

type(onnx_initialiser_type), intent(in) :: inits(:)

Parsed ONNX initialisers

integer, intent(in) :: num_inits

Number of valid initialiser entries

Return Value integer

public function find_onnx_expanded_node_by_suffix(nodes, num_nodes, prefix, suffix)

Return the node index matching one /layerN/suffix name, or zero.

Arguments

Type IntentOptional Attributes Name
type(onnx_node_type), intent(in) :: nodes(:)

Parsed ONNX nodes

integer, intent(in) :: num_nodes

Number of valid node entries

character(len=*), intent(in) :: prefix

Layer prefix and trailing node name token

character(len=*), intent(in) :: suffix

Layer prefix and trailing node name token

Return Value integer


Subroutines

public subroutine emit_float_initialiser(name, data, dims, inits, num_inits)

Emit a float32 initialiser with explicit dimensions.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: name
real(kind=real32), intent(in) :: data(:)
integer, intent(in) :: dims(:)
type(onnx_initialiser_type), intent(inout) :: inits(:)
integer, intent(inout) :: num_inits

public subroutine emit_matrix_initialiser(name, data_col_major, rows, cols, inits, num_inits)

Emit a 2D float32 initialiser after converting to row-major order.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: name
real(kind=real32), intent(in) :: data_col_major(:)
integer, intent(in) :: rows
integer, intent(in) :: cols
type(onnx_initialiser_type), intent(inout) :: inits(:)
integer, intent(inout) :: num_inits

public subroutine emit_nop_input_transpose(prefix, input_name, nodes, num_nodes, output_name)

Emit the common NOP input transpose.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: prefix
character(len=*), intent(in) :: input_name
type(onnx_node_type), intent(inout) :: nodes(:)
integer, intent(inout) :: num_nodes
character(len=*), intent(in) :: output_name

public subroutine emit_nop_metadata(layer, prefix, metadata, num_meta)

Build the metadata entry required to reconstruct a NOP layer.

Arguments

Type IntentOptional Attributes Name
class(base_layer_type), intent(in) :: layer
character(len=*), intent(in) :: prefix
character(len=4096), intent(inout) :: metadata(:)
integer, intent(inout) :: num_meta

public subroutine emit_nop_output_tail(prefix, activation_name, is_last_layer, input_name, nodes, num_nodes, final_output)

Emit the common transpose and optional activation at the end of a NOP.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: prefix
character(len=*), intent(in) :: activation_name
logical, intent(in) :: is_last_layer
character(len=*), intent(in) :: input_name
type(onnx_node_type), intent(inout) :: nodes(:)
integer, intent(inout) :: num_nodes
character(len=128), intent(out) :: final_output

public subroutine infer_dynamic_lno_poles(e_args_init, d_args_init, num_inputs, num_outputs, poles)

Reconstruct dynamic LNO poles from exported encoder/decoder arguments.

Arguments

Type IntentOptional Attributes Name
type(onnx_initialiser_type), intent(in) :: e_args_init
type(onnx_initialiser_type), intent(in) :: d_args_init
integer, intent(in) :: num_inputs
integer, intent(in) :: num_outputs
real(kind=real32), intent(out) :: poles(:)

public subroutine load_nop_param_from_inits(param, prefix, suffix, inits, num_inits, dims)

Load a parameter from ONNX initialisers into a diffstruc array.

Arguments

Type IntentOptional Attributes Name
type(array_type), intent(inout) :: param
character(len=*), intent(in) :: prefix
character(len=*), intent(in) :: suffix
type(onnx_initialiser_type), intent(in) :: inits(:)
integer, intent(in) :: num_inits
integer, intent(in) :: dims(2)

public subroutine load_onnx_expanded_matrix_param(param, init, rows, cols)

Copy a row-major ONNX matrix initialiser into a diffstruc parameter.

Arguments

Type IntentOptional Attributes Name
type(array_type), intent(inout) :: param

Destination diffstruc parameter tensor

type(onnx_initialiser_type), intent(in) :: init

Row-major ONNX initialiser data

integer, intent(in) :: rows

Matrix shape

integer, intent(in) :: cols

Matrix shape

public subroutine parse_nop_metadata(meta_value, num_inputs, num_outputs, num_modes, use_bias, activation_name)

Parse common NOP hyperparameters from metadata value string.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: meta_value
integer, intent(inout) :: num_inputs
integer, intent(inout) :: num_outputs
integer, intent(inout) :: num_modes
logical, intent(inout) :: use_bias
character(len=64), intent(inout) :: activation_name