GCC Code Coverage Report


Directory: src/athena/
File: src/athena/athena_container_layer_sub.f90
Date: 2026-04-15 16:08:59
Exec Total Coverage
Lines: 36 46 78.3%
Functions: 0 0 -%
Branches: 265 436 60.8%

Line Branch Exec Source
1 submodule(athena__container_layer) athena__container_layer_submodule
2 !! Submodule containing the implementation for the container layer
3 !!
4 !! This submodule contains the implementation of the container layer
5 !! which is a container for an individual layer.
6 !! This also provides the initialisation of the list of layer types
7 !! that can be used for reading layers into a network model from a file.
8 use athena__base_layer, only: learnable_layer_type
9 use athena__actv_layer, only: read_actv_layer, create_from_onnx_actv_layer
10 use athena__avgpool1d_layer, only: read_avgpool1d_layer
11 use athena__avgpool2d_layer, only: read_avgpool2d_layer
12 use athena__avgpool3d_layer, only: read_avgpool3d_layer
13 use athena__batchnorm1d_layer, only: read_batchnorm1d_layer
14 use athena__batchnorm2d_layer, only: read_batchnorm2d_layer
15 use athena__batchnorm3d_layer, only: read_batchnorm3d_layer
16 use athena__conv1d_layer, only: read_conv1d_layer
17 use athena__conv2d_layer, only: read_conv2d_layer
18 use athena__conv3d_layer, only: read_conv3d_layer
19 use athena__dropblock2d_layer, only: read_dropblock2d_layer
20 use athena__dropblock3d_layer, only: read_dropblock3d_layer
21 use athena__dropout_layer, only: read_dropout_layer, create_from_onnx_dropout_layer
22 use athena__duvenaud_msgpass_layer, only: read_duvenaud_msgpass_layer
23 use athena__flatten_layer, only: read_flatten_layer, create_from_onnx_flatten_layer
24 use athena__full_layer, only: read_full_layer, create_from_onnx_full_layer
25 use athena__input_layer, only: read_input_layer, create_from_onnx_input_layer
26 use athena__kipf_msgpass_layer, only: read_kipf_msgpass_layer
27 use athena__maxpool1d_layer, only: read_maxpool1d_layer
28 use athena__maxpool2d_layer, only: read_maxpool2d_layer
29 use athena__maxpool3d_layer, only: read_maxpool3d_layer
30 use athena__pad1d_layer, only: read_pad1d_layer
31 use athena__pad2d_layer, only: read_pad2d_layer
32 use athena__pad3d_layer, only: read_pad3d_layer
33 use athena__neural_operator_layer, only: read_neural_operator_layer
34 use athena__dynamic_lno_layer, only: read_dynamic_lno_layer
35 use athena__fixed_lno_layer, only: read_fixed_lno_layer
36 use athena__graph_nop_layer, only: read_graph_nop_layer
37 use athena__spectral_filter_layer, only: read_spectral_filter_layer
38 use athena__orthogonal_attention_layer, only: &
39 read_orthogonal_attention_layer
40 use athena__orthogonal_nop_block, only: read_orthogonal_nop_block
41 use athena__recurrent_layer, only: read_recurrent_layer
42 use athena__reshape_layer, only: read_reshape_layer, create_from_onnx_reshape_layer
43
44 use athena__onnx_creators, only: &
45 create_from_onnx_avgpool_layer, &
46 create_from_onnx_batchnorm_layer, &
47 create_from_onnx_conv_layer, &
48 create_from_onnx_maxpool_layer, &
49 create_from_onnx_pad_layer, &
50 create_from_onnx_duvenaud_layer, &
51 create_from_onnx_kipf_layer, &
52 create_from_onnx_dynamic_lno_layer, &
53 create_from_onnx_fixed_lno_layer, &
54 create_from_onnx_neural_operator_layer, &
55 create_from_onnx_orthogonal_nop_layer, &
56 create_from_onnx_orthogonal_attention_layer, &
57 classify_dynamic_lno_onnx_expanded_nop, &
58 build_dynamic_lno_onnx_expanded_nop, &
59 classify_fixed_lno_onnx_expanded_nop, &
60 build_fixed_lno_onnx_expanded_nop, &
61 classify_neural_operator_onnx_expanded_nop, &
62 build_neural_operator_onnx_expanded_nop, &
63 classify_spectral_filter_onnx_expanded_nop, &
64 build_spectral_filter_onnx_expanded_nop, &
65 classify_kipf_onnx_expanded_gnn, &
66 build_kipf_onnx_expanded_gnn, &
67 classify_duvenaud_onnx_expanded_gnn, &
68 build_duvenaud_onnx_expanded_gnn
69
70 contains
71
72 module subroutine finalise_container_layer(this)
73 !! Finalise the container layer
74 implicit none
75 class(container_layer_type), intent(inout) :: this
76
77 if(allocated(this%layer)) deallocate(this%layer)
78
79 end subroutine finalise_container_layer
80
81 !###############################################################################
82
83 #if defined(GFORTRAN)
84 subroutine container_reduction(this, rhs)
85 implicit none
86 class(container_layer_type), intent(inout) :: this
87 class(container_layer_type), intent(in) :: rhs
88
89 select type(layer_this => this%layer)
90 class is(learnable_layer_type)
91 select type(layer_rhs => rhs%layer)
92 class is(learnable_layer_type)
93 call layer_this%reduce(layer_rhs)
94 end select
95 end select
96
97 end subroutine container_reduction
98 #endif
99
100
101
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
3 module subroutine allocate_list_of_layer_types(addit_list)
102 implicit none
103 type(read_layer_container), dimension(:), intent(in), optional :: &
104 addit_list
105
106
107
10/18
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 2 times.
3 if(.not.allocated(list_of_layer_types)) allocate(list_of_layer_types(0))
108 list_of_layer_types = [ &
109 list_of_layer_types, &
110 read_layer_container('actv', read_actv_layer), &
111 read_layer_container('avgpool1d', read_avgpool1d_layer), &
112 read_layer_container('avgpool2d', read_avgpool2d_layer), &
113 read_layer_container('avgpool3d', read_avgpool3d_layer), &
114 read_layer_container('batchnorm1d', read_batchnorm1d_layer), &
115 read_layer_container('batchnorm2d', read_batchnorm2d_layer), &
116 read_layer_container('batchnorm3d', read_batchnorm3d_layer), &
117 read_layer_container('conv1d', read_conv1d_layer), &
118 read_layer_container('conv2d', read_conv2d_layer), &
119 read_layer_container('conv3d', read_conv3d_layer), &
120 read_layer_container('dropblock2d', read_dropblock2d_layer), &
121 read_layer_container('dropblock3d', read_dropblock3d_layer), &
122 read_layer_container('dropout', read_dropout_layer), &
123 read_layer_container('duvenaud', read_duvenaud_msgpass_layer), &
124 read_layer_container('flatten', read_flatten_layer), &
125 read_layer_container('full', read_full_layer), &
126 read_layer_container('input', read_input_layer), &
127 read_layer_container('kipf', read_kipf_msgpass_layer), &
128 read_layer_container('maxpool1d', read_maxpool1d_layer), &
129 read_layer_container('maxpool2d', read_maxpool2d_layer), &
130 read_layer_container('maxpool3d', read_maxpool3d_layer), &
131 read_layer_container('neural_operator', read_neural_operator_layer), &
132 read_layer_container('fixed_lno', read_fixed_lno_layer), &
133 read_layer_container('dynamic_lno', read_dynamic_lno_layer), &
134 read_layer_container('graph_nop', read_graph_nop_layer), &
135 read_layer_container('spectral_filter', read_spectral_filter_layer), &
136 read_layer_container('orthogonal_attention', &
137 read_orthogonal_attention_layer), &
138 read_layer_container('orthogonal_nop', read_orthogonal_nop_block), &
139 read_layer_container('pad1d', read_pad1d_layer), &
140 read_layer_container('pad2d', read_pad2d_layer), &
141 read_layer_container('pad3d', read_pad3d_layer), &
142 read_layer_container('recurrent', read_recurrent_layer), &
143 read_layer_container('reshape', read_reshape_layer) &
144
15/24
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
✓ Branch 11 taken 33 times.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 3 times.
✓ Branch 15 taken 132 times.
✓ Branch 16 taken 3 times.
✓ Branch 17 taken 3 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 3 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 3 times.
✓ Branch 23 taken 132 times.
✓ Branch 24 taken 3 times.
300 ]
145
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 2 times.
3 if(present(addit_list))then
146
22/36
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✓ Branch 15 taken 66 times.
✓ Branch 16 taken 1 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
✓ Branch 31 taken 1 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✓ Branch 35 taken 67 times.
✓ Branch 36 taken 1 times.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 42 taken 1 times.
✓ Branch 43 taken 67 times.
✓ Branch 44 taken 1 times.
202 list_of_layer_types = [list_of_layer_types, addit_list]
147 end if
148
149 3 end subroutine allocate_list_of_layer_types
150
151
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
6 module subroutine allocate_list_of_onnx_layer_creators(addit_list)
152 implicit none
153 type(onnx_create_layer_container), dimension(:), intent(in), optional :: &
154 addit_list
155
156 ! make a global create_from_onnx_conv_layer that allocates depending on the attributes
157
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 if(.not.allocated(list_of_onnx_layer_creators)) &
158
8/16
✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 5 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 5 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 5 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 5 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 5 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 5 times.
5 allocate(list_of_onnx_layer_creators(0))
159 list_of_onnx_layer_creators = [ &
160 list_of_onnx_layer_creators, &
161 onnx_create_layer_container('AvgPool', create_from_onnx_avgpool_layer), &
162 onnx_create_layer_container('BatchNormalization', &
163 create_from_onnx_batchnorm_layer &
164 ), &
165 onnx_create_layer_container('Conv', create_from_onnx_conv_layer), &
166 onnx_create_layer_container('Dropout', create_from_onnx_dropout_layer), &
167 onnx_create_layer_container('Flatten', create_from_onnx_flatten_layer), &
168 onnx_create_layer_container('Gemm', create_from_onnx_full_layer), &
169 onnx_create_layer_container('LeakyRelu', create_from_onnx_actv_layer), &
170 onnx_create_layer_container('MatMul', create_from_onnx_full_layer), &
171 onnx_create_layer_container('MaxPool', create_from_onnx_maxpool_layer), &
172 onnx_create_layer_container('Pad', create_from_onnx_pad_layer), &
173 onnx_create_layer_container('Relu', create_from_onnx_actv_layer), &
174 onnx_create_layer_container('Reshape', create_from_onnx_reshape_layer), &
175 onnx_create_layer_container('Selu', create_from_onnx_actv_layer), &
176 onnx_create_layer_container('Sigmoid', create_from_onnx_actv_layer), &
177 onnx_create_layer_container('Softmax', create_from_onnx_actv_layer), &
178 onnx_create_layer_container('Swish', create_from_onnx_actv_layer), &
179 onnx_create_layer_container('Tanh', create_from_onnx_actv_layer) &
180
15/24
✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 6 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 6 times.
✓ Branch 11 taken 17 times.
✓ Branch 12 taken 6 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 6 times.
✓ Branch 15 taken 119 times.
✓ Branch 16 taken 6 times.
✓ Branch 17 taken 6 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 6 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 6 times.
✓ Branch 23 taken 119 times.
✓ Branch 24 taken 6 times.
261 ]
181
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 5 times.
6 if(present(addit_list))then
182
22/36
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✓ Branch 15 taken 34 times.
✓ Branch 16 taken 1 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
✓ Branch 31 taken 1 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✓ Branch 35 taken 35 times.
✓ Branch 36 taken 1 times.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 42 taken 1 times.
✓ Branch 43 taken 35 times.
✓ Branch 44 taken 1 times.
106 list_of_onnx_layer_creators = [list_of_onnx_layer_creators, addit_list]
183 end if
184
185 6 end subroutine allocate_list_of_onnx_layer_creators
186
187
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
5 module subroutine allocate_list_of_onnx_meta_layer_creators(addit_list)
188 implicit none
189 type(onnx_meta_create_layer_container), &
190 dimension(:), intent(in), optional :: addit_list
191
192
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
5 if(.not.allocated(list_of_onnx_meta_layer_creators)) &
193
8/16
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 4 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 4 times.
4 allocate(list_of_onnx_meta_layer_creators(0))
194 list_of_onnx_meta_layer_creators = [ &
195 list_of_onnx_meta_layer_creators, &
196 onnx_meta_create_layer_container('duvenaud', &
197 create_from_onnx_duvenaud_layer), &
198 onnx_meta_create_layer_container('kipf', &
199 create_from_onnx_kipf_layer), &
200 onnx_meta_create_layer_container( &
201 'dynamic_lno', create_from_onnx_dynamic_lno_layer), &
202 onnx_meta_create_layer_container( &
203 'fixed_lno', create_from_onnx_fixed_lno_layer), &
204 onnx_meta_create_layer_container( &
205 'neural_operator', create_from_onnx_neural_operator_layer), &
206 onnx_meta_create_layer_container( &
207 'orthogonal_nop', create_from_onnx_orthogonal_nop_layer), &
208 onnx_meta_create_layer_container( &
209 'orthogonal_attention', &
210 create_from_onnx_orthogonal_attention_layer) &
211
15/24
✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 5 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 5 times.
✓ Branch 11 taken 7 times.
✓ Branch 12 taken 5 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 5 times.
✓ Branch 15 taken 42 times.
✓ Branch 16 taken 5 times.
✓ Branch 17 taken 5 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 5 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 5 times.
✓ Branch 23 taken 42 times.
✓ Branch 24 taken 5 times.
96 ]
212
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
5 if(present(addit_list))then
213 list_of_onnx_meta_layer_creators = &
214
22/36
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✓ Branch 15 taken 14 times.
✓ Branch 16 taken 1 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
✓ Branch 31 taken 1 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✓ Branch 35 taken 15 times.
✓ Branch 36 taken 1 times.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 42 taken 1 times.
✓ Branch 43 taken 15 times.
✓ Branch 44 taken 1 times.
46 [list_of_onnx_meta_layer_creators, addit_list]
215 end if
216
217 5 end subroutine allocate_list_of_onnx_meta_layer_creators
218
219 6 module subroutine allocate_list_of_onnx_expanded_nop_layer_creators( &
220
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
6 addit_list)
221 implicit none
222 type(onnx_expanded_nop_create_layer_container), &
223 dimension(:), intent(in), optional :: addit_list
224
225
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 if(.not.allocated(list_of_onnx_expanded_nop_layer_creators)) &
226
8/16
✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 5 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 5 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 5 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 5 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 5 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 5 times.
5 allocate(list_of_onnx_expanded_nop_layer_creators(0))
227 list_of_onnx_expanded_nop_layer_creators = [ &
228 list_of_onnx_expanded_nop_layer_creators, &
229 onnx_expanded_nop_create_layer_container( &
230 'dynamic_lno', classify_dynamic_lno_onnx_expanded_nop, &
231 build_dynamic_lno_onnx_expanded_nop), &
232 onnx_expanded_nop_create_layer_container( &
233 'fixed_lno', classify_fixed_lno_onnx_expanded_nop, &
234 build_fixed_lno_onnx_expanded_nop), &
235 onnx_expanded_nop_create_layer_container( &
236 'neural_operator', classify_neural_operator_onnx_expanded_nop, &
237 build_neural_operator_onnx_expanded_nop), &
238 onnx_expanded_nop_create_layer_container( &
239 'spectral_filter', classify_spectral_filter_onnx_expanded_nop, &
240 build_spectral_filter_onnx_expanded_nop) &
241
15/24
✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 6 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 6 times.
✓ Branch 11 taken 4 times.
✓ Branch 12 taken 6 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 6 times.
✓ Branch 15 taken 28 times.
✓ Branch 16 taken 6 times.
✓ Branch 17 taken 6 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 6 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 6 times.
✓ Branch 23 taken 28 times.
✓ Branch 24 taken 6 times.
66 ]
242
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 5 times.
6 if(present(addit_list))then
243 list_of_onnx_expanded_nop_layer_creators = &
244
22/36
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✓ Branch 15 taken 8 times.
✓ Branch 16 taken 1 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
✓ Branch 31 taken 1 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✓ Branch 35 taken 9 times.
✓ Branch 36 taken 1 times.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 42 taken 1 times.
✓ Branch 43 taken 9 times.
✓ Branch 44 taken 1 times.
28 [list_of_onnx_expanded_nop_layer_creators, addit_list]
245 end if
246
247 6 end subroutine allocate_list_of_onnx_expanded_nop_layer_creators
248
249 5 module subroutine allocate_list_of_onnx_expanded_gnn_layer_creators( &
250
4/6
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
5 addit_list)
251 implicit none
252 type(onnx_expanded_gnn_create_layer_container), &
253 dimension(:), intent(in), optional :: addit_list
254
255
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
5 if(.not.allocated( &
256 list_of_onnx_expanded_gnn_layer_creators)) &
257 allocate( &
258
8/16
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 4 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 4 times.
4 list_of_onnx_expanded_gnn_layer_creators(0))
259 list_of_onnx_expanded_gnn_layer_creators = [ &
260 list_of_onnx_expanded_gnn_layer_creators, &
261 onnx_expanded_gnn_create_layer_container( &
262 'kipf', &
263 classify_kipf_onnx_expanded_gnn, &
264 build_kipf_onnx_expanded_gnn), &
265 onnx_expanded_gnn_create_layer_container( &
266 'duvenaud', &
267 classify_duvenaud_onnx_expanded_gnn, &
268 build_duvenaud_onnx_expanded_gnn) &
269
15/24
✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 5 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 5 times.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 5 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 5 times.
✓ Branch 15 taken 12 times.
✓ Branch 16 taken 5 times.
✓ Branch 17 taken 5 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 5 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 5 times.
✓ Branch 23 taken 12 times.
✓ Branch 24 taken 5 times.
31 ]
270
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
5 if(present(addit_list))then
271 list_of_onnx_expanded_gnn_layer_creators = &
272 [list_of_onnx_expanded_gnn_layer_creators, &
273
22/36
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✓ Branch 11 taken 4 times.
✓ Branch 12 taken 1 times.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✓ Branch 24 taken 1 times.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 27 taken 1 times.
✓ Branch 28 taken 5 times.
✓ Branch 29 taken 1 times.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 35 taken 1 times.
✓ Branch 36 taken 5 times.
✓ Branch 37 taken 1 times.
16 addit_list]
274 end if
275
276 5 end subroutine allocate_list_of_onnx_expanded_gnn_layer_creators
277
278 end submodule athena__container_layer_submodule
279