abstract_compressor Derived Type

type, public, abstract :: abstract_compressor

Abstract base class for compression implementations


Inherited by

type~~abstract_compressor~~InheritedByGraph type~abstract_compressor abstract_compressor type~abstract_kernel abstract_kernel type~abstract_kernel->type~abstract_compressor compressor type~compressor_zfp compressor_zfp type~compressor_zfp->type~abstract_compressor type~reshape_handle_generic reshape_handle_generic type~reshape_handle_generic->type~abstract_compressor compressor type~reshape_handle_generic->type~abstract_kernel pack_kernel, unpack_kernel type~abstract_backend abstract_backend type~reshape_handle_generic->type~abstract_backend comm_handle type~abstract_backend->type~abstract_kernel pack_kernel, unpack_kernel type~kernel_device kernel_device type~kernel_device->type~abstract_kernel type~kernel_host kernel_host type~kernel_host->type~abstract_kernel type~backend_cufftmp backend_cufftmp type~backend_cufftmp->type~abstract_backend type~backend_mpi backend_mpi type~backend_mpi->type~abstract_backend type~backend_nccl backend_nccl type~backend_nccl->type~abstract_backend

Components

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

Number of dimensions

integer(kind=int64), public :: storage_size

Size of storage per element

real(kind=real64), public :: compressed_rate

Accumulated compression rate

integer(kind=int64), public :: execution_count

Number of compression executions

integer(kind=int32), public :: dims_permutation

Dimension permutation flag


Type-Bound Procedures

procedure, public, non_overridable, pass(self) :: create

Initializes the compressor with given parameters

  • private function create(self, ndims, config, platform, base_type, storage_size, dims_permutation)

    Initializes the compressor with given parameters

    Arguments

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

    Compressor instance

    integer(kind=int8), intent(in) :: ndims

    Number of dimensions

    type(dtfft_compression_config_t), intent(in) :: config

    Compression configuration

    type(dtfft_platform_t), intent(in) :: platform

    Target platform

    type(MPI_Datatype), intent(in) :: base_type

    MPI data type

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

    Storage size per element

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

    Dimension permutation flag

    Return Value integer(kind=int32)

procedure, public, non_overridable, pass(self) :: compress

Compresses the input data and returns the compressed size

  • private function compress(self, dims, displ, in, out, stream)

    Compresses the input data and returns the compressed size

    Arguments

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

    Compressor instance

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

    Array dimensions

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

    Displacement in arrays

    type(c_ptr), intent(in) :: in

    Pointer to uncompressed data

    type(c_ptr), intent(in) :: out

    Pointer to compressed buffer

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

    Stream handle

    Return Value integer(kind=int64)

procedure, public, non_overridable, pass(self) :: decompress

Decompresses the input data into the output buffer

  • private subroutine decompress(self, dims, displ, in, out, stream)

    Decompresses the input data into the output buffer

    Arguments

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

    Compressor instance

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

    Array dimensions

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

    Displacement in arrays

    type(c_ptr), intent(in) :: in

    Pointer to compressed data

    type(c_ptr), intent(in) :: out

    Pointer to uncompressed buffer

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

    Stream handle

procedure, public, non_overridable, pass(self) :: get_average_rate

Returns the average compression rate over all executions

  • private pure function get_average_rate(self)

    Returns the average compression rate over all executions

    Arguments

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

    Compressor instance

    Return Value real(kind=real64)

procedure(sync_interface), public, deferred, pass(self) :: pre_sync

  • subroutine sync_interface(self, stream) Prototype

    Arguments

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

    Abstract kernel

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

procedure(sync_interface), public, deferred, pass(self) :: post_sync

  • subroutine sync_interface(self, stream) Prototype

    Arguments

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

    Abstract kernel

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

procedure(sync_interface), public, deferred, pass(self) :: sync

  • subroutine sync_interface(self, stream) Prototype

    Arguments

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

    Abstract kernel

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

procedure(create_private_interface), public, deferred, pass(self) :: create_private

Creates the compressor implementation

  • function create_private_interface(self, config, platform, base_type) Prototype

    Creates the compressor implementation

    Arguments

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

    Compressor instance

    type(dtfft_compression_config_t), intent(in) :: config

    Compression configuration

    type(dtfft_platform_t), intent(in) :: platform

    Target platform

    type(MPI_Datatype), intent(in) :: base_type

    MPI data type

    Return Value integer(kind=int32)

procedure(compress_private_interface), public, deferred, pass(self) :: compress_private

Performs compression using the implementation

  • function compress_private_interface(self, dims, in, out, stream) Prototype

    Performs compression using the implementation

    Arguments

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

    Compressor instance

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

    Array dimensions

    type(c_ptr), intent(in) :: in

    Pointer to uncompressed data

    type(c_ptr), intent(in) :: out

    Pointer to compressed buffer

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

    Stream handle

    Return Value integer(kind=int64)

procedure(decompress_private_interface), public, deferred, pass(self) :: decompress_private

Performs decompression using the implementation

  • subroutine decompress_private_interface(self, dims, in, out, stream) Prototype

    Performs decompression using the implementation

    Arguments

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

    Compressor instance

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

    Array dimensions

    type(c_ptr), intent(in) :: in

    Pointer to compressed data

    type(c_ptr), intent(in) :: out

    Pointer to uncompressed buffer

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

    Stream handle

procedure(destroy_interface), public, deferred, pass(self) :: destroy

Destroys the compressor implementation

  • subroutine destroy_interface(self) Prototype

    Destroys the compressor implementation

    Arguments

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

    Compressor instance