dtfft_compressor_zfp Module

ZFP-based compressor implementation


Uses

  • module~~dtfft_compressor_zfp~~UsesGraph module~dtfft_compressor_zfp dtfft_compressor_zfp iso_c_binding iso_c_binding module~dtfft_compressor_zfp->iso_c_binding iso_fortran_env iso_fortran_env module~dtfft_compressor_zfp->iso_fortran_env module~dtfft_abstract_compressor dtfft_abstract_compressor module~dtfft_compressor_zfp->module~dtfft_abstract_compressor module~dtfft_config dtfft_config module~dtfft_compressor_zfp->module~dtfft_config module~dtfft_errors dtfft_errors module~dtfft_compressor_zfp->module~dtfft_errors module~dtfft_interface_cuda_runtime dtfft_interface_cuda_runtime module~dtfft_compressor_zfp->module~dtfft_interface_cuda_runtime module~dtfft_interface_zfp dtfft_interface_zfp module~dtfft_compressor_zfp->module~dtfft_interface_zfp module~dtfft_parameters dtfft_parameters module~dtfft_compressor_zfp->module~dtfft_parameters module~dtfft_utils dtfft_utils module~dtfft_compressor_zfp->module~dtfft_utils mpi_f08 mpi_f08 module~dtfft_compressor_zfp->mpi_f08 module~dtfft_abstract_compressor->iso_c_binding module~dtfft_abstract_compressor->iso_fortran_env module~dtfft_abstract_compressor->module~dtfft_errors module~dtfft_abstract_compressor->module~dtfft_parameters module~dtfft_abstract_compressor->module~dtfft_utils module~dtfft_abstract_compressor->mpi_f08 module~dtfft_interface_nvtx dtfft_interface_nvtx module~dtfft_abstract_compressor->module~dtfft_interface_nvtx module~dtfft_config->iso_c_binding module~dtfft_config->iso_fortran_env module~dtfft_config->module~dtfft_abstract_compressor module~dtfft_config->module~dtfft_errors module~dtfft_config->module~dtfft_interface_cuda_runtime module~dtfft_config->module~dtfft_parameters module~dtfft_config->module~dtfft_utils module~dtfft_config->mpi_f08 module~dtfft_errors->iso_fortran_env module~dtfft_interface_cuda_runtime->iso_c_binding module~dtfft_interface_cuda_runtime->iso_fortran_env module~dtfft_interface_cuda_runtime->module~dtfft_parameters module~dtfft_interface_cuda_runtime->module~dtfft_utils module~dtfft_interface_zfp->iso_c_binding module~dtfft_interface_zfp->iso_fortran_env 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_errors module~dtfft_utils->module~dtfft_parameters module~dtfft_utils->mpi_f08 module~dtfft_interface_nvtx->iso_c_binding module~dtfft_interface_nvtx->module~dtfft_utils

Used by

  • module~~dtfft_compressor_zfp~~UsedByGraph module~dtfft_compressor_zfp dtfft_compressor_zfp program~test_compression test_compression program~test_compression->module~dtfft_compressor_zfp

Variables

Type Visibility Attributes Name Initial
logical, private, save :: WARNING_ISSUED = .false.

Derived Types

type, public, extends(abstract_compressor) ::  compressor_zfp

ZFP-based compressor implementation

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

logical, private :: is_complex

Indicates if the data type is complex

logical, private :: is_fixed_rate
integer(kind=int64), private :: imag_offset

Byte offset for imaginary part in complex data

type(dtfft_compression_config_t), private :: config

Compression configuration parameters

type(zfp_exec_policy), private :: policy

ZFP execution policy (serial or CUDA)

type(zfp_type), private :: scalar_type

ZFP scalar type (float or double)

type(cudaEvent), private :: event

Type-Bound Procedures

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

Initializes the compressor with given parameters

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

Compresses the input data and returns the compressed size

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

Decompresses the input data into the output buffer

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

Returns the average compression rate over all executions

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

Initializes the ZFP compressor with given configuration

procedure, public :: compress_private => compress ../../

Compresses the input data using ZFP

procedure, public :: decompress_private => decompress ../../

Decompresses the input data using ZFP

procedure, public :: destroy ../../

Cleans up the compressor resources

procedure, public :: sync
procedure, public :: pre_sync
procedure, public :: post_sync
procedure, public :: init ../../

Initializes ZFP stream and field for compression/decompression


Functions

private function create(self, config, platform, base_type)

Initializes the ZFP compressor with given configuration

Arguments

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

Compressor instance

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

Compression settings

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

Target platform (CPU or CUDA)

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

MPI data type

Return Value integer(kind=int32)

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

Compresses the input data using ZFP

Arguments

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

Compressor instance

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

Array dimensions

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

Pointer to input data

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

Pointer to output buffer

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

Stream handle

Return Value integer(kind=int64)


Subroutines

private subroutine init(self, uncompressed_ptr, dims, is_decompression, zfp, field)

Initializes ZFP stream and field for compression/decompression

Arguments

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

Compressor instance

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

Pointer to uncompressed data

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

Array dimensions

logical, intent(in) :: is_decompression

Decompression flag. Used only in omp build

type(zfp_stream), intent(out) :: zfp

ZFP stream

type(zfp_field), intent(out) :: field

ZFP field

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

Decompresses the input data using ZFP

Arguments

Type IntentOptional Attributes Name
class(compressor_zfp), 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 output buffer

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

Stream handle

private subroutine destroy(self)

Cleans up the compressor resources

Arguments

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

Compressor instance

private subroutine pre_sync(self, stream)

Arguments

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

Abstract kernel

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

private subroutine post_sync(self, stream)

Arguments

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

Abstract kernel

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

private subroutine sync(self, stream)

Arguments

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

Abstract kernel

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