dtfft_kernel_host Module

This module defines kernel_host type and its type bound procedures. The host kernel is an implementation of the abstract_kernel type that runs on the host CPU.


Uses

  • module~~dtfft_kernel_host~~UsesGraph module~dtfft_kernel_host dtfft_kernel_host iso_c_binding iso_c_binding module~dtfft_kernel_host->iso_c_binding iso_fortran_env iso_fortran_env module~dtfft_kernel_host->iso_fortran_env module~dtfft_abstract_kernel dtfft_abstract_kernel module~dtfft_kernel_host->module~dtfft_abstract_kernel module~dtfft_config dtfft_config module~dtfft_kernel_host->module~dtfft_config module~dtfft_interface_nvtx dtfft_interface_nvtx module~dtfft_kernel_host->module~dtfft_interface_nvtx module~dtfft_parameters dtfft_parameters module~dtfft_kernel_host->module~dtfft_parameters module~dtfft_utils dtfft_utils module~dtfft_kernel_host->module~dtfft_utils mpi_f08 mpi_f08 module~dtfft_kernel_host->mpi_f08 module~dtfft_abstract_kernel->iso_fortran_env module~dtfft_abstract_kernel->module~dtfft_interface_nvtx module~dtfft_abstract_kernel->module~dtfft_parameters module~dtfft_abstract_kernel->module~dtfft_utils module~dtfft_abstract_kernel->mpi_f08 module~dtfft_config->iso_c_binding module~dtfft_config->iso_fortran_env module~dtfft_config->module~dtfft_parameters module~dtfft_config->module~dtfft_utils module~dtfft_config->mpi_f08 module~dtfft_errors dtfft_errors module~dtfft_config->module~dtfft_errors module~dtfft_interface_cuda_runtime dtfft_interface_cuda_runtime module~dtfft_config->module~dtfft_interface_cuda_runtime module~dtfft_interface_nvtx->iso_c_binding module~dtfft_interface_nvtx->module~dtfft_utils module~dtfft_parameters->iso_c_binding module~dtfft_parameters->iso_fortran_env module~dtfft_parameters->mpi_f08 module~dtfft_utils->iso_c_binding module~dtfft_utils->iso_fortran_env module~dtfft_utils->module~dtfft_parameters module~dtfft_utils->mpi_f08 module~dtfft_utils->module~dtfft_errors module~dtfft_errors->iso_fortran_env module~dtfft_interface_cuda_runtime->iso_c_binding module~dtfft_interface_cuda_runtime->module~dtfft_parameters module~dtfft_interface_cuda_runtime->module~dtfft_utils

Used by

  • module~~dtfft_kernel_host~~UsedByGraph module~dtfft_kernel_host dtfft_kernel_host module~dtfft_transpose_handle_generic dtfft_transpose_handle_generic module~dtfft_transpose_handle_generic->module~dtfft_kernel_host program~test_host_kernels test_host_kernels program~test_host_kernels->module~dtfft_kernel_host module~dtfft_transpose_plan dtfft_transpose_plan module~dtfft_transpose_plan->module~dtfft_transpose_handle_generic module~dtfft_plan dtfft_plan module~dtfft_plan->module~dtfft_transpose_plan module~dtfft dtfft module~dtfft->module~dtfft_plan module~dtfft_api dtfft_api module~dtfft_api->module~dtfft_plan

Variables

Type Visibility Attributes Name Initial
integer(kind=int8), private, parameter :: ACCESS_MODE_WRITE = -1_int8

Aligned writing

integer(kind=int8), private, parameter :: ACCESS_MODE_READ = +1_int8

Aligned reading

integer(kind=int8), private, parameter :: DEFAULT_ACCESS_MODE = ACCESS_MODE_WRITE

Assuming that aligned writing is more important then aligned reading

type(host_kernel_t), private, parameter :: HOST_KERNEL_BASE = host_kernel_t(1_int8)

Base host kernel type

type(host_kernel_t), private, parameter :: HOST_KERNEL_BLOCK_16 = host_kernel_t(2_int8)

Host kernel with block size of 16

type(host_kernel_t), private, parameter :: HOST_KERNEL_BLOCK_32 = host_kernel_t(3_int8)

Host kernel with block size of 32

type(host_kernel_t), private, parameter :: HOST_KERNEL_BLOCK_64 = host_kernel_t(4_int8)

Host kernel with block size of 64


Interfaces

private interface operator(==)

  • private pure elemental function host_kernel_eq(left, right) result(res)

    Arguments

    Type IntentOptional Attributes Name
    type(host_kernel_t), intent(in) :: left
    type(host_kernel_t), intent(in) :: right

    Return Value logical


Abstract Interfaces

abstract interface

  • private subroutine execute_host_interface(self, in, out, neighbor)

    Executes the given kernel on host

    Arguments

    Type IntentOptional Attributes Name
    class(kernel_host), intent(in) :: self

    Host kernel class

    real(kind=real32), intent(in), target :: in(:)

    Source host-allocated buffer

    real(kind=real32), intent(inout), target :: out(:)

    Target host-allocated buffer

    integer(kind=int32), intent(in), optional :: neighbor

    Source rank for pipelined unpacking


Derived Types

type, public, extends(abstract_kernel) ::  kernel_host

Host kernel implementation

Components

Type Visibility Attributes Name Initial
logical, public :: is_created = .false.

Kernel is created flag.

logical, public :: is_dummy = .false.

If kernel should do anything or not.

type(kernel_type_t), public :: kernel_type

Type of the kernel

character(len=:), public, allocatable :: kernel_string
integer(kind=int32), public, allocatable :: neighbor_data(:,:)

Neighbor data for pipelined unpacking

integer(kind=int32), public, allocatable :: dims(:)

Local dimensions to process

integer(kind=int8), public :: access_mode

Access mode for kernel execution

procedure(execute_host_interface), public, pointer :: execute_impl => null()

Pointer to the execute implementation

Type-Bound Procedures

procedure, public, pass(self) :: create ../../

Creates kernel

procedure, public, pass(self) :: execute ../../

Executes kernel

procedure, public, pass(self) :: destroy ../../

Destroys kernel

procedure, public :: create_private => create_host ../../

Creates kernel

procedure, public :: execute_private => execute_host ../../

Executes kernel

procedure, public :: destroy_private => destroy_host ../../

Destroys kernel

procedure, public :: execute_benchmark
procedure, public :: select_access_mode_f32
procedure, public :: select_access_mode_f64
procedure, public :: select_access_mode_f128

type, private ::  host_kernel_t

Components

Type Visibility Attributes Name Initial
integer(kind=int8), public :: val

Functions

private function select_kernel(kernel, base_storage) result(fun)

Selects the kernel implementation based on the given id and base storage size

Arguments

Type IntentOptional Attributes Name
type(host_kernel_t), intent(in) :: kernel

Kernel id

integer(kind=int64), intent(in) :: base_storage

Size of single element in bytes

Return Value procedure(execute_host_interface), pointer

Selected kernel implementation

private function get_host_kernel_string(kernel) result(kernel_string)

Returns string representation of the given host kernel type

Arguments

Type IntentOptional Attributes Name
type(host_kernel_t), intent(in) :: kernel

Host kernel type

Return Value character(len=:), allocatable

String representation of the kernel

private pure elemental function host_kernel_eq(left, right) result(res)

Arguments

Type IntentOptional Attributes Name
type(host_kernel_t), intent(in) :: left
type(host_kernel_t), intent(in) :: right

Return Value logical


Subroutines

public pure subroutine permute_forward_write_f32(in, out, dims)

Forward permutation of a 2D and 3D arrays, contiguous writing, real(real32) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_forward_read_f32(in, out, dims)

Forward permutation of a 2D and 3D arrays, contiguous reading, real(real32) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_write_f32(in, out, dims)

Backward permutation of a 2D and 3D arrays, contiguous writing, real(real32) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_read_f32(in, out, dims)

Backward permutation of a 2D and 3D arrays, contiguous reading, real(real32) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_start_write_f32(in, out, dims)

Backward permutation start of a 3D array, contiguous writing, real(real32) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_start_read_f32(in, out, dims)

Backward permutation start of a 3D array, contiguous reading, real(real32) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_end_pipelined_write_f32(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor, contiguous writing, real(real32) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(*)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(*)

Neighbor data

public pure subroutine permute_backward_end_pipelined_read_f32(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor, contiguous reading, real(real32) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(*)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(*)

Neighbor data

public pure subroutine unpack_pipelined_f32(in, out, dims, locals)

Unpacks part of contiguous buffer recieved from a single rank, real(real32) version.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(*)

Neighbor data

public pure subroutine permute_forward_write_f32_block_16(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_forward_read_f32_block_16(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_write_f32_block_16(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_read_f32_block_16(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_start_write_f32_block_16(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_start_read_f32_block_16(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_end_pipelined_write_f32_block_16(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

public pure subroutine permute_backward_end_pipelined_read_f32_block_16(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

public pure subroutine unpack_pipelined_f32_block_16(in, out, dims, locals)

Unpacks part of contiguous buffer recieved from a single rank.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

public pure subroutine permute_forward_write_f32_block_32(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_forward_read_f32_block_32(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_write_f32_block_32(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_read_f32_block_32(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_start_write_f32_block_32(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_start_read_f32_block_32(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_end_pipelined_write_f32_block_32(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

public pure subroutine permute_backward_end_pipelined_read_f32_block_32(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

public pure subroutine unpack_pipelined_f32_block_32(in, out, dims, locals)

Unpacks part of contiguous buffer recieved from a single rank.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

public pure subroutine permute_forward_write_f32_block_64(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_forward_read_f32_block_64(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_write_f32_block_64(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_read_f32_block_64(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_start_write_f32_block_64(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_start_read_f32_block_64(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

public pure subroutine permute_backward_end_pipelined_write_f32_block_64(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

public pure subroutine permute_backward_end_pipelined_read_f32_block_64(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

public pure subroutine unpack_pipelined_f32_block_64(in, out, dims, locals)

Unpacks part of contiguous buffer recieved from a single rank.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private subroutine create_host(self, effort, base_storage, force_effort)

Creates host kernel

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(inout) :: self

Host kernel class

type(dtfft_effort_t), intent(in) :: effort

Effort level for generating transpose kernels

integer(kind=int64), intent(in) :: base_storage

Number of bytes needed to store single element

logical, intent(in), optional :: force_effort

Should effort be forced or not

private subroutine execute_benchmark(self, in, out, n_warmup_iters, n_iters, execution_time)

Executes benchmark for the given kernel

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(inout) :: self

Host kernel class

real(kind=real32), intent(in) :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in) :: n_warmup_iters

Number of warmup iterations to perform before testing kernel

integer(kind=int32), intent(in) :: n_iters

Number of iterations to perform when testing kernel

real(kind=real64), intent(out) :: execution_time

Execution time of the selected access

private subroutine execute_host(self, in, out, stream, neighbor)

Executes host kernel

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(inout) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

type(dtfft_stream_t), intent(in) :: stream

Stream to execute on, unused here

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private subroutine destroy_host(self)

Destroys host kernel

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(inout) :: self

Host kernel class

private subroutine execute_f128(self, in, out, neighbor)

Executes kernel based on its type and access mode, complex(real64) version

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(in) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private subroutine select_access_mode_f128(self, in, out, n_warmup_iters, n_iters, execution_time)

Selects the best access mode for host kernels, complex(real64) version

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(inout) :: self

Host kernel class

real(kind=real32), intent(in) :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in) :: n_warmup_iters

Number of warmup iterations to perform before testing kernel

integer(kind=int32), intent(in) :: n_iters

Number of iterations to perform when testing kernel

real(kind=real64), intent(out) :: execution_time

Execution time of the selected access

private pure subroutine permute_forward_write_f128(in, out, dims)

Forward permutation of a 2D and 3D arrays, contiguous writing, complex(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_forward_read_f128(in, out, dims)

Forward permutation of a 2D and 3D arrays, contiguous reading, complex(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_write_f128(in, out, dims)

Backward permutation of a 2D and 3D arrays, contiguous writing, complex(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_read_f128(in, out, dims)

Backward permutation of a 2D and 3D arrays, contiguous reading, complex(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_write_f128(in, out, dims)

Backward permutation start of a 3D array, contiguous writing, complex(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_read_f128(in, out, dims)

Backward permutation start of a 3D array, contiguous reading, complex(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_end_pipelined_write_f128(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor, contiguous writing, complex(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(*)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(*)

Neighbor data

private pure subroutine permute_backward_end_write_f128(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors, contiguous writing, complex(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(*)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine permute_backward_end_pipelined_read_f128(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor, contiguous reading, complex(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(*)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(*)

Neighbor data

private pure subroutine permute_backward_end_read_f128(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors, contiguous reading, complex(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(*)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine unpack_pipelined_f128(in, out, dims, locals)

Unpacks part of contiguous buffer recieved from a single rank, complex(real64) version.

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(*)

Neighbor data

private pure subroutine unpack_f128(in, out, dims, locals)

Unpacks pack of contiguous buffer recieved from all ranks, complex(real64) version.

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private subroutine execute_f128_block_16(self, in, out, neighbor)

Executes the given kernel on host

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(in) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private pure subroutine permute_forward_write_f128_block_16(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_forward_read_f128_block_16(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_write_f128_block_16(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_read_f128_block_16(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_write_f128_block_16(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_read_f128_block_16(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_end_pipelined_write_f128_block_16(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine permute_backward_end_write_f128_block_16(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine permute_backward_end_pipelined_read_f128_block_16(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine permute_backward_end_read_f128_block_16(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine unpack_pipelined_f128_block_16(in, out, dims, locals)

Unpacks part of contiguous buffer recieved from a single rank.

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine unpack_f128_block_16(in, out, dims, locals)

Unpacks pack of contiguous buffer recieved from all ranks.

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private subroutine execute_f128_block_32(self, in, out, neighbor)

Executes the given kernel on host

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(in) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private pure subroutine permute_forward_write_f128_block_32(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_forward_read_f128_block_32(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_write_f128_block_32(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_read_f128_block_32(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_write_f128_block_32(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_read_f128_block_32(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_end_pipelined_write_f128_block_32(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine permute_backward_end_write_f128_block_32(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine permute_backward_end_pipelined_read_f128_block_32(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine permute_backward_end_read_f128_block_32(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine unpack_pipelined_f128_block_32(in, out, dims, locals)

Unpacks part of contiguous buffer recieved from a single rank.

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine unpack_f128_block_32(in, out, dims, locals)

Unpacks pack of contiguous buffer recieved from all ranks.

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private subroutine execute_f128_block_64(self, in, out, neighbor)

Executes the given kernel on host

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(in) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private pure subroutine permute_forward_write_f128_block_64(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_forward_read_f128_block_64(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_write_f128_block_64(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_read_f128_block_64(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_write_f128_block_64(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_read_f128_block_64(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_end_pipelined_write_f128_block_64(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine permute_backward_end_write_f128_block_64(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine permute_backward_end_pipelined_read_f128_block_64(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine permute_backward_end_read_f128_block_64(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine unpack_pipelined_f128_block_64(in, out, dims, locals)

Unpacks part of contiguous buffer recieved from a single rank.

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine unpack_f128_block_64(in, out, dims, locals)

Unpacks pack of contiguous buffer recieved from all ranks.

Arguments

Type IntentOptional Attributes Name
complex(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

complex(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private subroutine execute_f64(self, in, out, neighbor)

Executes kernel based on its type and access mode, real(real64) version

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(in) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private subroutine select_access_mode_f64(self, in, out, n_warmup_iters, n_iters, execution_time)

Selects the best access mode for host kernels, real(real64) version

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(inout) :: self

Host kernel class

real(kind=real32), intent(in) :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in) :: n_warmup_iters

Number of warmup iterations to perform before testing kernel

integer(kind=int32), intent(in) :: n_iters

Number of iterations to perform when testing kernel

real(kind=real64), intent(out) :: execution_time

Execution time of the selected access

private pure subroutine permute_forward_write_f64(in, out, dims)

Forward permutation of a 2D and 3D arrays, contiguous writing, real(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_forward_read_f64(in, out, dims)

Forward permutation of a 2D and 3D arrays, contiguous reading, real(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_write_f64(in, out, dims)

Backward permutation of a 2D and 3D arrays, contiguous writing, real(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_read_f64(in, out, dims)

Backward permutation of a 2D and 3D arrays, contiguous reading, real(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_write_f64(in, out, dims)

Backward permutation start of a 3D array, contiguous writing, real(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_read_f64(in, out, dims)

Backward permutation start of a 3D array, contiguous reading, real(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_end_pipelined_write_f64(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor, contiguous writing, real(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(*)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(*)

Neighbor data

private pure subroutine permute_backward_end_write_f64(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors, contiguous writing, real(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(*)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine permute_backward_end_pipelined_read_f64(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor, contiguous reading, real(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(*)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(*)

Neighbor data

private pure subroutine permute_backward_end_read_f64(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors, contiguous reading, real(real64) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(*)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine unpack_pipelined_f64(in, out, dims, locals)

Unpacks part of contiguous buffer recieved from a single rank, real(real64) version.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(*)

Neighbor data

private pure subroutine unpack_f64(in, out, dims, locals)

Unpacks pack of contiguous buffer recieved from all ranks, real(real64) version.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private subroutine execute_f64_block_16(self, in, out, neighbor)

Executes the given kernel on host

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(in) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private pure subroutine permute_forward_write_f64_block_16(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_forward_read_f64_block_16(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_write_f64_block_16(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_read_f64_block_16(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_write_f64_block_16(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_read_f64_block_16(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_end_pipelined_write_f64_block_16(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine permute_backward_end_write_f64_block_16(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine permute_backward_end_pipelined_read_f64_block_16(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine permute_backward_end_read_f64_block_16(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine unpack_pipelined_f64_block_16(in, out, dims, locals)

Unpacks part of contiguous buffer recieved from a single rank.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine unpack_f64_block_16(in, out, dims, locals)

Unpacks pack of contiguous buffer recieved from all ranks.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private subroutine execute_f64_block_32(self, in, out, neighbor)

Executes the given kernel on host

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(in) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private pure subroutine permute_forward_write_f64_block_32(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_forward_read_f64_block_32(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_write_f64_block_32(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_read_f64_block_32(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_write_f64_block_32(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_read_f64_block_32(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_end_pipelined_write_f64_block_32(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine permute_backward_end_write_f64_block_32(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine permute_backward_end_pipelined_read_f64_block_32(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine permute_backward_end_read_f64_block_32(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine unpack_pipelined_f64_block_32(in, out, dims, locals)

Unpacks part of contiguous buffer recieved from a single rank.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine unpack_f64_block_32(in, out, dims, locals)

Unpacks pack of contiguous buffer recieved from all ranks.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private subroutine execute_f64_block_64(self, in, out, neighbor)

Executes the given kernel on host

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(in) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private pure subroutine permute_forward_write_f64_block_64(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_forward_read_f64_block_64(in, out, dims)

Forward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_write_f64_block_64(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_read_f64_block_64(in, out, dims)

Backward permutation of a 2D and 3D arrays

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_write_f64_block_64(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_start_read_f64_block_64(in, out, dims)

Backward permutation start of a 3D array

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

private pure subroutine permute_backward_end_pipelined_write_f64_block_64(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine permute_backward_end_write_f64_block_64(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine permute_backward_end_pipelined_read_f64_block_64(in, out, dims, locals)

Backward permutation end of a 3D array for a single neighbor

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine permute_backward_end_read_f64_block_64(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine unpack_pipelined_f64_block_64(in, out, dims, locals)

Unpacks part of contiguous buffer recieved from a single rank.

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:)

Neighbor data

private pure subroutine unpack_f64_block_64(in, out, dims, locals)

Unpacks pack of contiguous buffer recieved from all ranks.

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real64), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private subroutine execute_f32(self, in, out, neighbor)

Executes kernel based on its type and access mode, real(real32) version

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(in) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private subroutine select_access_mode_f32(self, in, out, n_warmup_iters, n_iters, execution_time)

Selects the best access mode for host kernels, real(real32) version

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(inout) :: self

Host kernel class

real(kind=real32), intent(in) :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in) :: n_warmup_iters

Number of warmup iterations to perform before testing kernel

integer(kind=int32), intent(in) :: n_iters

Number of iterations to perform when testing kernel

real(kind=real64), intent(out) :: execution_time

Execution time of the selected access

private pure subroutine permute_backward_end_write_f32(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors, contiguous writing, real(real32) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(*)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine permute_backward_end_read_f32(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors, contiguous reading, real(real32) version

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(*)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine unpack_f32(in, out, dims, locals)

Unpacks pack of contiguous buffer recieved from all ranks, real(real32) version.

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private subroutine execute_f32_block_16(self, in, out, neighbor)

Executes the given kernel on host

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(in) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private pure subroutine permute_backward_end_write_f32_block_16(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine permute_backward_end_read_f32_block_16(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine unpack_f32_block_16(in, out, dims, locals)

Unpacks pack of contiguous buffer recieved from all ranks.

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private subroutine execute_f32_block_32(self, in, out, neighbor)

Executes the given kernel on host

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(in) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private pure subroutine permute_backward_end_write_f32_block_32(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine permute_backward_end_read_f32_block_32(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine unpack_f32_block_32(in, out, dims, locals)

Unpacks pack of contiguous buffer recieved from all ranks.

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private subroutine execute_f32_block_64(self, in, out, neighbor)

Executes the given kernel on host

Arguments

Type IntentOptional Attributes Name
class(kernel_host), intent(in) :: self

Host kernel class

real(kind=real32), intent(in), target :: in(:)

Source host-allocated buffer

real(kind=real32), intent(inout), target :: out(:)

Target host-allocated buffer

integer(kind=int32), intent(in), optional :: neighbor

Source rank for pipelined unpacking

private pure subroutine permute_backward_end_write_f32_block_64(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine permute_backward_end_read_f32_block_64(in, out, dims, locals)

Backward permutation end of a 3D array for all neighbors

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data

private pure subroutine unpack_f32_block_64(in, out, dims, locals)

Unpacks pack of contiguous buffer recieved from all ranks.

Arguments

Type IntentOptional Attributes Name
real(kind=real32), intent(in) :: in(*)

Source host-allocated buffer

real(kind=real32), intent(inout) :: out(*)

Target host-allocated buffer

integer(kind=int32), intent(in) :: dims(:)

Dimensions of the array

integer(kind=int32), intent(in) :: locals(:,:)

Neighbor data