GCC Code Coverage Report


Directory: src/athena/
File: src/athena/athena_initialiser_data.f90
Date: 2026-04-15 16:08:59
Exec Total Coverage
Lines: 15 22 68.2%
Functions: 0 0 -%
Branches: 154 400 38.5%

Line Branch Exec Source
1 module athena__initialiser_data
2 !! Module containing the implementation of the data initialiser
3 !!
4 !! This module contains the implementation of the data initialiser
5 !! for the weights and biases of a layer
6 use coreutils, only: real32, stop_program
7 use athena__misc_types, only: base_init_type
8 implicit none
9
10
11 private
12
13 public :: data_init_type
14
15
16 type, extends(base_init_type) :: data_init_type
17 !! Type for the data initialiser
18 real(real32), dimension(:), allocatable :: data
19 !! Data to initialise the weights or biases with
20 contains
21 procedure, pass(this) :: initialise => data_initialise
22 !! Initialise the weights and biases using the data distribution
23 end type data_init_type
24
25
26 interface data_init_type
27 module function initialiser_data_setup(data) result(initialiser)
28 !! Interface for the data initialiser
29 type(data_init_type) :: initialiser
30 !! data initialiser object
31 real(real32), dimension(..), intent(in) :: data
32 !! Data to initialise the weights and biases with
33 end function initialiser_data_setup
34 end interface data_init_type
35
36
37
38 contains
39
40 !###############################################################################
41 5 module function initialiser_data_setup(data) result(initialiser)
42 !! Interface for the data initialiser
43 implicit none
44
45 ! Arguments
46 real(real32), dimension(..), intent(in) :: data
47 !! Data to initialise the weights and biases with
48
49 type(data_init_type) :: initialiser
50 !! data initialiser object
51
52 5 initialiser%name = "data"
53
11/20
✗ Branch 0 not taken.
✓ Branch 1 taken 13 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 13 times.
✓ Branch 4 taken 13 times.
✓ Branch 5 taken 5 times.
✓ Branch 6 taken 5 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 5 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 5 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 5 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 5 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 5 times.
18 allocate(initialiser%data(size(data)))
54 select rank(data)
55 rank(0)
56 initialiser%data(1) = data
57 rank(1)
58
11/20
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 27 taken 40 times.
✓ Branch 28 taken 2 times.
42 initialiser%data(:) = data(:)
59 rank(2)
60
11/16
✗ 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 2 times.
✓ Branch 14 taken 2 times.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✓ Branch 17 taken 1 times.
✓ Branch 19 taken 4 times.
✓ Branch 20 taken 1 times.
8 initialiser%data(:) = reshape(data, [size(data)])
61 rank(3)
62 initialiser%data(:) = reshape(data, [size(data)])
63 rank(4)
64
11/16
✗ 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 4 times.
✓ Branch 14 taken 4 times.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✓ Branch 17 taken 1 times.
✓ Branch 19 taken 8 times.
✓ Branch 20 taken 1 times.
14 initialiser%data(:) = reshape(data, [size(data)])
65 rank(5)
66
11/16
✗ 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 5 times.
✓ Branch 14 taken 5 times.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✓ Branch 17 taken 1 times.
✓ Branch 19 taken 4 times.
✓ Branch 20 taken 1 times.
11 initialiser%data(:) = reshape(data, [size(data)])
67 rank(6)
68 initialiser%data(:) = reshape(data, [size(data)])
69 rank default
70 call stop_program("initialiser_data_setup: Unsupported rank of data array")
71 end select
72
73 10 end function initialiser_data_setup
74 !###############################################################################
75
76
77 !###############################################################################
78 9 pure subroutine data_initialise(this, input, fan_in, fan_out, spacing)
79 !! Initialise the weights and biases using the data distribution
80 implicit none
81
82 ! Arguments
83 class(data_init_type), intent(inout) :: this
84 !! Instance of the data initialiser
85 real(real32), dimension(..), intent(out) :: input
86 !! Weights and biases to initialise
87 integer, optional, intent(in) :: fan_in, fan_out
88 !! Number of input and output parameters
89 integer, dimension(:), optional, intent(in) :: spacing
90 !! Spacing of the input and output units
91
92 select rank(input)
93 rank(0)
94 input = this%data(1)
95 rank(1)
96
11/20
✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 6 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 6 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 6 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 6 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 6 times.
✓ Branch 27 taken 283 times.
✓ Branch 28 taken 6 times.
289 input(:) = this%data(:)
97 rank(2)
98
12/22
✗ 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 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✓ Branch 24 taken 2 times.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
3 input(:,:) = reshape(this%data, shape(input))
99 rank(3)
100 input(:,:,:) = reshape(this%data, shape(input))
101 rank(4)
102
20/38
✗ 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 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 1 times.
✓ Branch 48 taken 4 times.
✓ Branch 49 taken 1 times.
✓ Branch 50 taken 4 times.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✓ Branch 53 taken 4 times.
5 input(:,:,:,:) = reshape(this%data, shape(input))
103 rank(5)
104
24/46
✗ 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 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 1 times.
✓ Branch 60 taken 5 times.
✓ Branch 61 taken 1 times.
✓ Branch 62 taken 5 times.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✓ Branch 65 taken 5 times.
6 input(:,:,:,:,:) = reshape(this%data, shape(input))
105 rank(6)
106 input(:,:,:,:,:,:) = reshape(this%data, shape(input))
107 end select
108
109 9 end subroutine data_initialise
110 !###############################################################################
111
112
32/62
✓ Branch 0 taken 51 times.
✓ Branch 1 taken 34 times.
✓ Branch 2 taken 43 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 34 times.
✓ Branch 5 taken 5 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 3 times.
✓ Branch 8 taken 1 times.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 1 times.
✓ Branch 13 taken 1 times.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 9 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 9 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 9 times.
✓ Branch 24 taken 6 times.
✓ Branch 25 taken 3 times.
✓ Branch 26 taken 1 times.
✓ Branch 27 taken 2 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 1 times.
✓ Branch 31 taken 1 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 34 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 34 times.
✓ Branch 45 taken 34 times.
✓ Branch 46 taken 34 times.
✗ Branch 47 not taken.
✓ Branch 48 taken 34 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✓ Branch 67 taken 34 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✓ Branch 70 taken 34 times.
242 end module athena__initialiser_data
113