athena__diffstruc_extd_submodule_pad Submodule

Submodule containing implementations for extended diffstruc array operations


Uses


Functions

function get_partial_pad1d(this, upstream_grad) result(output)

Get the partial derivative for the pad1d operation

Arguments

Type IntentOptional Attributes Name
class(array_type), intent(inout) :: this
type(array_type), intent(in) :: upstream_grad

Return Value type(array_type)

function get_partial_pad2d(this, upstream_grad) result(output)

Get the partial derivative for the pad2d operation

Arguments

Type IntentOptional Attributes Name
class(array_type), intent(inout) :: this
type(array_type), intent(in) :: upstream_grad

Return Value type(array_type)

function get_partial_pad3d(this, upstream_grad) result(output)

Get the partial derivative for the pad3d operation

Arguments

Type IntentOptional Attributes Name
class(array_type), intent(inout) :: this
type(array_type), intent(in) :: upstream_grad

Return Value type(array_type)


Subroutines

pure subroutine accumulate_corner_gradients_2d_val(upstream_grad, output, input_shape, indices, adj_ja)

Accumulate corner gradients for 2D padding - raw array version

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in), dimension(:,:) :: upstream_grad
real(kind=real32), intent(inout), dimension(:,:) :: output
integer, intent(in), dimension(4) :: input_shape
integer, intent(in), dimension(:) :: indices
integer, intent(in), dimension(:,:) :: adj_ja

pure subroutine accumulate_corner_gradients_3d_val(upstream_grad, output, input_shape, indices, adj_ja)

Accumulate corner gradients for 3D padding - raw array version

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in), dimension(:,:) :: upstream_grad
real(kind=real32), intent(inout), dimension(:,:) :: output
integer, intent(in), dimension(5) :: input_shape
integer, intent(in), dimension(:) :: indices
integer, intent(in), dimension(:,:) :: adj_ja

pure subroutine accumulate_edge_gradients_1d_val(upstream_grad, output, input_shape, indices, adj_ja)

Accumulate edge gradients for 1D padding - raw array version

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in), dimension(:,:) :: upstream_grad
real(kind=real32), intent(inout), dimension(:,:) :: output
integer, intent(in), dimension(3) :: input_shape
integer, intent(in), dimension(:) :: indices
integer, intent(in), dimension(:,:) :: adj_ja

pure subroutine accumulate_edge_gradients_2d_val(upstream_grad, output, input_shape, indices, adj_ja)

Accumulate edge gradients for 2D padding - raw array version

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in), dimension(:,:) :: upstream_grad
real(kind=real32), intent(inout), dimension(:,:) :: output
integer, intent(in), dimension(4) :: input_shape
integer, intent(in), dimension(:) :: indices
integer, intent(in), dimension(:,:) :: adj_ja

pure subroutine accumulate_edge_gradients_3d_val(upstream_grad, output, input_shape, indices, adj_ja)

Accumulate edge gradients for 3D padding - raw array version

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in), dimension(:,:) :: upstream_grad
real(kind=real32), intent(inout), dimension(:,:) :: output
integer, intent(in), dimension(5) :: input_shape
integer, intent(in), dimension(:) :: indices
integer, intent(in), dimension(:,:) :: adj_ja

pure subroutine accumulate_face_gradients_3d_val(upstream_grad, output, input_shape, indices, adj_ja)

Accumulate face gradients for 3D padding - raw array version

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in), dimension(:,:) :: upstream_grad
real(kind=real32), intent(inout), dimension(:,:) :: output
integer, intent(in), dimension(5) :: input_shape
integer, intent(in), dimension(:) :: indices
integer, intent(in), dimension(:,:) :: adj_ja

subroutine fill_corner_region_2d(input, output)

Fill corner region for 2D padding

Arguments

Type IntentOptional Attributes Name
type(array_type), intent(in) :: input
type(array_type), intent(inout) :: output

subroutine fill_corner_region_3d(input, output)

Fill corner region for 3D padding

Arguments

Type IntentOptional Attributes Name
type(array_type), intent(in) :: input
type(array_type), intent(inout) :: output

subroutine fill_edge_region_1d(input, output)

Fill edge region for 1D padding

Arguments

Type IntentOptional Attributes Name
type(array_type), intent(in) :: input
type(array_type), intent(inout) :: output

subroutine fill_edge_region_2d(input, output)

Fill edge region for 2D padding

Arguments

Type IntentOptional Attributes Name
type(array_type), intent(in) :: input
type(array_type), intent(inout) :: output

subroutine fill_edge_region_3d(input, output)

Fill edge region for 3D padding

Arguments

Type IntentOptional Attributes Name
type(array_type), intent(in) :: input
type(array_type), intent(inout) :: output

subroutine fill_face_region_3d(input, output)

Fill face region for 3D padding

Arguments

Type IntentOptional Attributes Name
type(array_type), intent(in) :: input
type(array_type), intent(inout) :: output

pure subroutine get_partial_pad1d_val(this, upstream_grad, output)

Get the partial derivative for the pad1d operation - raw array version

Arguments

Type IntentOptional Attributes Name
class(array_type), intent(in) :: this
real(kind=real32), intent(in), dimension(:,:) :: upstream_grad
real(kind=real32), intent(out), dimension(:,:) :: output

pure subroutine get_partial_pad2d_val(this, upstream_grad, output)

Get the partial derivative for the pad2d operation - raw array version

Arguments

Type IntentOptional Attributes Name
class(array_type), intent(in) :: this
real(kind=real32), intent(in), dimension(:,:) :: upstream_grad
real(kind=real32), intent(out), dimension(:,:) :: output

pure subroutine get_partial_pad3d_val(this, upstream_grad, output)

Get the partial derivative for the pad3d operation - raw array version

Arguments

Type IntentOptional Attributes Name
class(array_type), intent(in) :: this
real(kind=real32), intent(in), dimension(:,:) :: upstream_grad
real(kind=real32), intent(out), dimension(:,:) :: output

Module Functions

module function pad1d(input, facets, pad_size, imethod) result(output)

1D padding operation

Arguments

Type IntentOptional Attributes Name
type(array_type), intent(in), target :: input
type(facets_type), intent(in) :: facets
integer, intent(in) :: pad_size
integer, intent(in) :: imethod

Return Value type(array_type), pointer

module function pad2d(input, facets, pad_size, imethod) result(output)

2D padding operation

Arguments

Type IntentOptional Attributes Name
type(array_type), intent(in), target :: input
type(facets_type), intent(in), dimension(2) :: facets
integer, intent(in), dimension(2) :: pad_size
integer, intent(in) :: imethod

Return Value type(array_type), pointer

module function pad3d(input, facets, pad_size, imethod) result(output)

3D padding operation

Arguments

Type IntentOptional Attributes Name
type(array_type), intent(in), target :: input
type(facets_type), intent(in), dimension(3) :: facets
integer, intent(in), dimension(3) :: pad_size
integer, intent(in) :: imethod

Return Value type(array_type), pointer