dtfft_plan_r2r_t Derived Type

type, public, extends(dtfft_plan_t) :: dtfft_plan_r2r_t

R2R Plan


Inherits

type~~dtfft_plan_r2r_t~~InheritsGraph type~dtfft_plan_r2r_t dtfft_plan_r2r_t type~dtfft_plan_t dtfft_plan_t type~dtfft_plan_r2r_t->type~dtfft_plan_t MPI_Comm MPI_Comm type~dtfft_plan_t->MPI_Comm comm, comms c_ptr c_ptr type~dtfft_plan_t->c_ptr aux_ptr type~dtfft_effort_t dtfft_effort_t type~dtfft_plan_t->type~dtfft_effort_t effort type~dtfft_executor_t dtfft_executor_t type~dtfft_plan_t->type~dtfft_executor_t executor type~dtfft_platform_t dtfft_platform_t type~dtfft_plan_t->type~dtfft_platform_t platform type~dtfft_precision_t dtfft_precision_t type~dtfft_plan_t->type~dtfft_precision_t precision type~dtfft_stream_t dtfft_stream_t type~dtfft_plan_t->type~dtfft_stream_t stream type~fft_executor fft_executor type~dtfft_plan_t->type~fft_executor fft type~pencil pencil type~dtfft_plan_t->type~pencil pencils, bricks type~reshape_plan reshape_plan type~dtfft_plan_t->type~reshape_plan rplan type~transpose_plan transpose_plan type~dtfft_plan_t->type~transpose_plan plan type~dtfft_stream_t->c_ptr stream type~abstract_executor abstract_executor type~fft_executor->type~abstract_executor fft type~reshape_plan->MPI_Comm comms type~reshape_plan_base reshape_plan_base type~reshape_plan->type~reshape_plan_base type~transpose_plan->type~reshape_plan_base type~abstract_executor->c_ptr plan_forward, plan_backward type~reshape_plan_base->type~dtfft_platform_t platform type~reshape_plan_base->type~dtfft_stream_t stream type~backend_helper backend_helper type~reshape_plan_base->type~backend_helper helper type~dtfft_backend_t dtfft_backend_t type~reshape_plan_base->type~dtfft_backend_t backend type~reshape_container reshape_container type~reshape_plan_base->type~reshape_container plans type~string string type~reshape_plan_base->type~string names type~backend_helper->MPI_Comm comms type~backend_helper->c_ptr nccl_register type~backend_helper->type~pencil pencils type~dtfft_reshape_t dtfft_reshape_t type~backend_helper->type~dtfft_reshape_t reshape_type type~dtfft_transpose_t dtfft_transpose_t type~backend_helper->type~dtfft_transpose_t transpose_type type~ncclcomm ncclComm type~backend_helper->type~ncclcomm nccl_comm type~abstract_reshape_handle abstract_reshape_handle type~reshape_container->type~abstract_reshape_handle p type~ncclcomm->c_ptr member

Type-Bound Procedures

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

Performs single transposition

  • private subroutine transpose(self, in, out, transpose_type, aux, error_code)

    Performs single transposition

    Read more…

    Arguments

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

    Abstract plan

    type(*), intent(inout), target :: in(..)

    Incoming buffer of any rank and kind. Note that this buffer will be modified in GPU build

    type(*), intent(inout), target :: out(..)

    Resulting buffer of any rank and kind

    type(dtfft_transpose_t), intent(in) :: transpose_type

    Type of transposition.

    type(*), intent(inout), optional, target :: aux(..)

    Optional auxiliary buffer. If provided, size of buffer must be at least the value returned by alloc_size parameter of get_local_sizes subroutine

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Performs single transposition using type(c_ptr) pointers instead of buffers

  • private subroutine transpose_ptr(self, in, out, transpose_type, aux, error_code)

    Performs single transposition using type(c_ptr) pointers instead of buffers

    Read more…

    Arguments

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

    Abstract plan

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

    Incoming pointer. Note that values of this pointer will be modified in GPU build

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

    Resulting pointer

    type(dtfft_transpose_t), intent(in) :: transpose_type

    Type of transposition.

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

    Auxiliary buffer. Not optional. If not required, c_null_ptr must be passed. Size of buffer must be greater than value returned by alloc_size parameter of get_local_sizes subroutine

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Starts an asynchronous transpose operation

  • private function transpose_start(self, in, out, transpose_type, aux, error_code) result(request)

    Starts an asynchronous transpose operation

    Read more…

    Arguments

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

    Abstract plan

    type(*), intent(inout), target :: in(..)

    Incoming buffer of any rank and kind. Note that this buffer will be modified in GPU build

    type(*), intent(inout), target :: out(..)

    Resulting buffer of any rank and kind

    type(dtfft_transpose_t), intent(in) :: transpose_type

    Type of transposition.

    type(*), intent(inout), optional, target :: aux(..)

    Optional auxiliary buffer. Size of buffer must be greater than value returned by alloc_size parameter of get_local_sizes subroutine

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value type(dtfft_request_t)

    Asynchronous handle describing started transpose operation

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

Starts an asynchronous transpose operation using type(c_ptr) pointers instead of buffers

  • private function transpose_start_ptr(self, in, out, transpose_type, aux, error_code) result(request)

    Starts an asynchronous transpose operation using type(c_ptr) pointers instead of buffers

    Read more…

    Arguments

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

    Abstract plan

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

    Incoming pointer. Note that values of this pointer will be modified in GPU build

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

    Resulting pointer

    type(dtfft_transpose_t), intent(in) :: transpose_type

    Type of transposition.

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

    Auxiliary buffer. Not optional. If not required, c_null_ptr must be passed. Size of buffer must be greater than value returned by alloc_size parameter of get_local_sizes subroutine

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value type(dtfft_request_t)

    Asynchronous handle describing started transpose operation

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

Ends previously started transposition

  • private subroutine transpose_end(self, request, error_code)

    Ends previously started transposition

    Arguments

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

    Abstract plan

    type(dtfft_request_t), intent(inout) :: request

    Handle obtained from transpose_start or transpose_start_ptr

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Executes plan

  • private subroutine execute(self, in, out, execute_type, aux, error_code)

    Executes plan

    Arguments

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

    Abstract plan

    type(*), intent(inout), target :: in(..)

    Incoming buffer of any rank and kind

    type(*), intent(inout), target :: out(..)

    Resulting buffer of any rank and kind

    type(dtfft_execute_t), intent(in) :: execute_type

    Type of execution.

    type(*), intent(inout), optional, target :: aux(..)

    Optional auxiliary buffer. If provided, size of buffer must be at least the value returned by get_aux_size function

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Executes plan using type(c_ptr) pointers instead of buffers

  • private subroutine execute_ptr(self, in, out, execute_type, aux, error_code)

    Executes plan using type(c_ptr) pointers instead of buffers

    Arguments

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

    Abstract plan

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

    Incoming pointer. Note that values of this pointer will be modified in GPU build

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

    Resulting pointer

    type(dtfft_execute_t), intent(in) :: execute_type

    Type of execution.

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

    Auxiliary buffer. Not optional. If not required, c_null_ptr must be passed. Size of buffer must be greater than value returned by alloc_size parameter of get_local_sizes subroutine

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Performs reshape from bricks to pencils layout or vice versa

  • private subroutine reshape(self, in, out, reshape_type, aux, error_code)

    Performs reshape from bricks to pencils layout or vice versa

    Read more…

    Arguments

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

    Abstract plan

    type(*), intent(inout), target :: in(..)

    Incoming buffer of any rank and kind. Note that this buffer will be modified in GPU build

    type(*), intent(inout), target :: out(..)

    Resulting buffer of any rank and kind

    type(dtfft_reshape_t), intent(in) :: reshape_type

    Type of reshape.

    type(*), intent(inout), optional, target :: aux(..)

    Optional auxiliary buffer. Size of buffer must be greater than value returned by alloc_size parameter of get_local_sizes subroutine

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Performs reshape from bricks to pencils layout or vice versa using type(c_ptr) pointers instead of buffers

  • private subroutine reshape_ptr(self, in, out, reshape_type, aux, error_code)

    Performs reshape from bricks to pencils layout or vice versa using type(c_ptr) pointers instead of buffers

    Read more…

    Arguments

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

    Abstract plan

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

    Incoming pointer. Note that values of this pointer will be modified in GPU build

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

    Resulting pointer

    type(dtfft_reshape_t), intent(in) :: reshape_type

    Type of reshape.

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

    Auxiliary buffer. Not optional. If not required, c_null_ptr must be passed. Size of buffer must be greater than value returned by alloc_size parameter of get_local_sizes subroutine

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Starts an asynchronous reshape operation

  • private function reshape_start(self, in, out, reshape_type, aux, error_code) result(request)

    Starts an asynchronous reshape operation

    Read more…

    Arguments

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

    Abstract plan

    type(*), intent(inout), target :: in(..)

    Incoming buffer of any rank and kind. Note that this buffer will be modified in GPU build

    type(*), intent(inout), target :: out(..)

    Resulting buffer of any rank and kind

    type(dtfft_reshape_t), intent(in) :: reshape_type

    Type of reshape.

    type(*), intent(inout), optional, target :: aux(..)

    Optional auxiliary buffer. Size of buffer must be greater than value returned by alloc_size parameter of get_local_sizes subroutine

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value type(dtfft_request_t)

    Asynchronous handle describing started reshape operation

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

Starts an asynchronous reshape operation using type(c_ptr) pointers instead of buffers

  • private function reshape_start_ptr(self, in, out, reshape_type, aux, error_code) result(request)

    Starts an asynchronous reshape operation using type(c_ptr) pointers instead of buffers

    Read more…

    Arguments

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

    Abstract plan

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

    Incoming pointer. Note that values of this pointer will be modified in GPU build

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

    Resulting pointer

    type(dtfft_reshape_t), intent(in) :: reshape_type

    Type of reshape.

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

    Auxiliary buffer. Not optional. If not required, c_null_ptr must be passed. Size of buffer must be greater than value returned by alloc_size parameter of get_local_sizes subroutine

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value type(dtfft_request_t)

    Asynchronous handle describing started reshape operation

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

Ends an asynchronous reshape operation

  • private subroutine reshape_end(self, request, error_code)

    Ends an asynchronous reshape operation

    Arguments

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

    Abstract plan

    type(dtfft_request_t), intent(inout) :: request

    Asynchronous handle describing started reshape operation

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Destroys plan

  • private subroutine destroy(self, error_code)

    Destroys plan, frees all memory

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional Error Code returned to user

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

Returns local starts and counts in real and fourier spaces

  • private subroutine get_local_sizes(self, in_starts, in_counts, out_starts, out_counts, alloc_size, error_code)

    Obtain local starts and counts in real and fourier spaces

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: in_starts(:)

    Starts of local portion of data in real space (0-based)

    integer(kind=int32), intent(out), optional :: in_counts(:)

    Number of elements of local portion of data in ‘real’ space

    integer(kind=int32), intent(out), optional :: out_starts(:)

    Starts of local portion of data in fourier space (0-based)

    integer(kind=int32), intent(out), optional :: out_counts(:)

    Number of elements of local portion of data in fourier space

    integer(kind=int64), intent(out), optional :: alloc_size

    Minimal number of elements required to execute plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Wrapper around get_local_sizes to obtain number of elements only

  • private function get_alloc_size(self, error_code) result(alloc_size)

    Wrapper around get_local_sizes to obtain number of elements only

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value integer(kind=int64)

    Minimal number of elements required to execute plan

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

Returns logical value is Z-slab optimization is enabled

  • private function get_z_slab_enabled(self, error_code)

    Returns logical value is Z-slab optimization enabled internally

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value logical

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

Returns logical value is Y-slab optimization is enabled

  • private function get_y_slab_enabled(self, error_code)

    Returns logical value is Y-slab optimization enabled internally

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value logical

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

Returns pencil decomposition

  • private function get_pencil(self, layout, error_code)

    Returns pencil decomposition

    Arguments

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

    Abstract plan

    type(dtfft_layout_t), intent(in) :: layout

    Required layout

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value type(dtfft_pencil_t)

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

Returns number of bytes required to store single element.

  • private function get_element_size(self, error_code)

    Returns number of bytes required to store single element.

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value integer(kind=int64)

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

Returns minimum number of bytes required to execute plan

  • private function get_alloc_bytes(self, error_code)

    Returns minimum number of bytes required to execute plan

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value integer(kind=int64)

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

Returns size of auxiliary buffer in elements

  • private function get_aux_size(self, error_code)

    Returns minimum number of elements required for auxiliary buffer which may be different from alloc_size when backend is pipelined

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value integer(kind=int64)

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

Returns minimum number of bytes required for auxiliary buffer

  • private function get_aux_bytes(self, error_code)

    Returns minimum number of bytes required for auxiliary buffer which may be different from alloc_bytes when backend is pipelined

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value integer(kind=int64)

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

Returns size of auxiliary buffer for reshape in elements

  • private function get_aux_size_reshape(self, error_code)

    Returns minimum number of elements required for reshape auxiliary buffer

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value integer(kind=int64)

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

Returns minimum number of bytes required for auxiliary buffer for reshape

  • private function get_aux_bytes_reshape(self, error_code)

    Returns minimum number of bytes required for reshape auxiliary buffer

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value integer(kind=int64)

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

Returns size of auxiliary buffer for transpose in elements

  • private function get_aux_size_transpose(self, error_code)

    Returns minimum number of elements required for reshape auxiliary buffer

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value integer(kind=int64)

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

Returns minimum number of bytes required for auxiliary buffer for transpose

  • private function get_aux_bytes_transpose(self, error_code)

    Returns minimum number of bytes required for transpose auxiliary buffer

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value integer(kind=int64)

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

Returns FFT Executor associated with plan

  • private function get_executor(self, error_code)

    Returns FFT Executor associated with plan

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value type(dtfft_executor_t)

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

Returns global dimensions

  • private subroutine get_dims(self, dims, error_code)

    Returns global dimensions

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), pointer :: dims(:)

    Global dimensions

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Returns grid decomposition dimensions

  • private subroutine get_grid_dims(self, grid_dims, error_code)

    Returns grid decomposition dimensions

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), pointer :: grid_dims(:)

    Grid dimensions

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Returns precision of plan

  • private function get_precision(self, error_code)

    Returns precision of the plan

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value type(dtfft_precision_t)

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

Prints plan details

  • private subroutine report(self, error_code)

    Prints plan-related information to stdout

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Reports compression

  • private subroutine report_compression(self, error_code)

    Report compression ratios for all operations where compression was performed This function can be repeatedly called after plan creation and after execution to see how compression ratios evolve.

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Allocates memory for type(c_ptr)

  • private function mem_alloc_ptr(self, alloc_bytes, error_code) result(ptr)

    Allocates memory specific for this plan

    Arguments

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

    Abstract plan

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

    Number of bytes to allocate

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value type(c_ptr)

    Allocated pointer

  • private subroutine mem_alloc_r32_1d(self, alloc_size, ptr, lbound, error_code)

    Allocates pointer of rank 1

    Arguments

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

    Abstract plan

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

    Number of elements to allocate

    real(kind=real32), intent(out), pointer :: ptr(:)

    Allocated pointer

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

    Lower boundary of pointer, default is 1

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_alloc_r64_1d(self, alloc_size, ptr, lbound, error_code)

    Allocates pointer of rank 1

    Arguments

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

    Abstract plan

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

    Number of elements to allocate

    real(kind=real64), intent(out), pointer :: ptr(:)

    Allocated pointer

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

    Lower boundary of pointer, default is 1

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_alloc_r32_2d(self, alloc_size, ptr, sizes, lbounds, error_code)

    Allocates pointer of rank 2

    Arguments

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

    Abstract plan

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

    Number of elements to allocate

    real(kind=real32), intent(out), pointer :: ptr(:,:)

    Allocated pointer

    integer(kind=int32), intent(in) :: sizes(2)

    Number of elements in each direction

    integer(kind=int32), intent(in), optional :: lbounds(2)

    Lower boundaries of pointer, default is (1, 1)

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_alloc_r64_2d(self, alloc_size, ptr, sizes, lbounds, error_code)

    Allocates pointer of rank 2

    Arguments

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

    Abstract plan

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

    Number of elements to allocate

    real(kind=real64), intent(out), pointer :: ptr(:,:)

    Allocated pointer

    integer(kind=int32), intent(in) :: sizes(2)

    Number of elements in each direction

    integer(kind=int32), intent(in), optional :: lbounds(2)

    Lower boundaries of pointer, default is (1, 1)

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_alloc_r32_3d(self, alloc_size, ptr, sizes, lbounds, error_code)

    Allocates pointer of rank 3

    Arguments

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

    Abstract plan

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

    Number of elements to allocate

    real(kind=real32), intent(out), pointer :: ptr(:,:,:)

    Allocated pointer

    integer(kind=int32), intent(in) :: sizes(3)

    Number of elements in each direction

    integer(kind=int32), intent(in), optional :: lbounds(3)

    Lower boundaries of pointer, default is (1, 1)

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_alloc_r64_3d(self, alloc_size, ptr, sizes, lbounds, error_code)

    Allocates pointer of rank 3

    Arguments

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

    Abstract plan

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

    Number of elements to allocate

    real(kind=real64), intent(out), pointer :: ptr(:,:,:)

    Allocated pointer

    integer(kind=int32), intent(in) :: sizes(3)

    Number of elements in each direction

    integer(kind=int32), intent(in), optional :: lbounds(3)

    Lower boundaries of pointer, default is (1, 1)

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_alloc_c32_1d(self, alloc_size, ptr, lbound, error_code)

    Allocates pointer of rank 1

    Arguments

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

    Abstract plan

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

    Number of elements to allocate

    complex(kind=real32), intent(out), pointer :: ptr(:)

    Allocated pointer

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

    Lower boundary of pointer, default is 1

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_alloc_c64_1d(self, alloc_size, ptr, lbound, error_code)

    Allocates pointer of rank 1

    Arguments

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

    Abstract plan

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

    Number of elements to allocate

    complex(kind=real64), intent(out), pointer :: ptr(:)

    Allocated pointer

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

    Lower boundary of pointer, default is 1

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_alloc_c32_2d(self, alloc_size, ptr, sizes, lbounds, error_code)

    Allocates pointer of rank 2

    Arguments

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

    Abstract plan

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

    Number of elements to allocate

    complex(kind=real32), intent(out), pointer :: ptr(:,:)

    Allocated pointer

    integer(kind=int32), intent(in) :: sizes(2)

    Number of elements in each direction

    integer(kind=int32), intent(in), optional :: lbounds(2)

    Lower boundaries of pointer, default is (1, 1)

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_alloc_c64_2d(self, alloc_size, ptr, sizes, lbounds, error_code)

    Allocates pointer of rank 2

    Arguments

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

    Abstract plan

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

    Number of elements to allocate

    complex(kind=real64), intent(out), pointer :: ptr(:,:)

    Allocated pointer

    integer(kind=int32), intent(in) :: sizes(2)

    Number of elements in each direction

    integer(kind=int32), intent(in), optional :: lbounds(2)

    Lower boundaries of pointer, default is (1, 1)

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_alloc_c32_3d(self, alloc_size, ptr, sizes, lbounds, error_code)

    Allocates pointer of rank 3

    Arguments

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

    Abstract plan

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

    Number of elements to allocate

    complex(kind=real32), intent(out), pointer :: ptr(:,:,:)

    Allocated pointer

    integer(kind=int32), intent(in) :: sizes(3)

    Number of elements in each direction

    integer(kind=int32), intent(in), optional :: lbounds(3)

    Lower boundaries of pointer, default is (1, 1)

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_alloc_c64_3d(self, alloc_size, ptr, sizes, lbounds, error_code)

    Allocates pointer of rank 3

    Arguments

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

    Abstract plan

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

    Number of elements to allocate

    complex(kind=real64), intent(out), pointer :: ptr(:,:,:)

    Allocated pointer

    integer(kind=int32), intent(in) :: sizes(3)

    Number of elements in each direction

    integer(kind=int32), intent(in), optional :: lbounds(3)

    Lower boundaries of pointer, default is (1, 1)

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Frees previously allocated memory for type(c_ptr)

  • private subroutine mem_free_ptr(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

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

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_free_r32_1d(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

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

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_free_r32_2d(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

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

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_free_r32_3d(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

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

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_free_r64_1d(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

    real(kind=real64), intent(inout), target :: ptr(:)

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_free_r64_2d(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

    real(kind=real64), intent(inout), target :: ptr(:,:)

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_free_r64_3d(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

    real(kind=real64), intent(inout), target :: ptr(:,:,:)

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_free_c32_1d(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

    complex(kind=real32), intent(inout), target :: ptr(:)

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_free_c32_2d(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

    complex(kind=real32), intent(inout), target :: ptr(:,:)

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_free_c32_3d(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

    complex(kind=real32), intent(inout), target :: ptr(:,:,:)

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_free_c64_1d(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

    complex(kind=real64), intent(inout), target :: ptr(:)

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_free_c64_2d(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

    complex(kind=real64), intent(inout), target :: ptr(:,:)

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine mem_free_c64_3d(self, ptr, error_code)

    Frees previously allocated memory specific for this plan

    Arguments

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

    Abstract plan

    complex(kind=real64), intent(inout), target :: ptr(:,:,:)

    Pointer allocated with mem_alloc

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

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

Returns selected backend during autotuning

  • private function get_backend(self, error_code)

    Returns selected backend during autotuning

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value type(dtfft_backend_t)

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

Returns selected backend for reshape operations during autotuning

  • private function get_reshape_backend(self, error_code)

    Returns selected reshape backend during autotuning

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value type(dtfft_backend_t)

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

Returns plan execution platform

  • private function get_platform(self, error_code)

    Returns execution platform of the plan (HOST or CUDA)

    Arguments

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

    Abstract plan

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

    Return Value type(dtfft_platform_t)

generic, public :: get_stream => get_stream_ptr, get_stream_int64

  • private subroutine get_stream_ptr(self, stream, error_code)

    Returns CUDA stream associated with plan

    Arguments

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

    Abstract plan

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

    dtFFT Stream

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

  • private subroutine get_stream_int64(self, stream, error_code)

    Returns CUDA stream associated with plan

    Arguments

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

    Abstract plan

    integer(kind=int64), intent(out) :: stream

    CUDA-Fortran Stream

    integer(kind=int32), intent(out), optional :: error_code

    Optional error code returned to user

generic, public :: create => create_r2r, create_r2r_pencil

Creates R2R plan

  • private subroutine create_r2r(self, dims, kinds, comm, precision, effort, executor, error_code)

    R2R Plan Constructor

    Arguments

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

    R2R Plan

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

    Global dimensions of transform

    type(dtfft_r2r_kind_t), intent(in), optional :: kinds(:)

    Kinds of R2R transform

    type(MPI_Comm), intent(in), optional :: comm

    Communicator

    type(dtfft_precision_t), intent(in), optional :: precision

    Presicion of Transform

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

    Effort level for the plan creation

    type(dtfft_executor_t), intent(in), optional :: executor

    Type of External FFT Executor

    integer(kind=int32), intent(out), optional :: error_code

    Optional Error Code returned to user

  • private subroutine create_r2r_pencil(self, pencil, kinds, comm, precision, effort, executor, error_code)

    R2R Plan Constructor

    Arguments

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

    R2R Plan

    type(dtfft_pencil_t), intent(in) :: pencil

    Local pencil of data to be transformed

    type(dtfft_r2r_kind_t), intent(in), optional :: kinds(:)

    Kinds of R2R transform

    type(MPI_Comm), intent(in), optional :: comm

    Communicator

    type(dtfft_precision_t), intent(in), optional :: precision

    Presicion of Transform

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

    Effort level for the plan creation

    type(dtfft_executor_t), intent(in), optional :: executor

    Type of External FFT Executor

    integer(kind=int32), intent(out), optional :: error_code

    Optional Error Code returned to user

procedure, private, pass(self) :: create_r2r

Creates R2R plan using global dimensions

  • private subroutine create_r2r(self, dims, kinds, comm, precision, effort, executor, error_code)

    R2R Plan Constructor

    Arguments

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

    R2R Plan

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

    Global dimensions of transform

    type(dtfft_r2r_kind_t), intent(in), optional :: kinds(:)

    Kinds of R2R transform

    type(MPI_Comm), intent(in), optional :: comm

    Communicator

    type(dtfft_precision_t), intent(in), optional :: precision

    Presicion of Transform

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

    Effort level for the plan creation

    type(dtfft_executor_t), intent(in), optional :: executor

    Type of External FFT Executor

    integer(kind=int32), intent(out), optional :: error_code

    Optional Error Code returned to user

procedure, private, pass(self) :: create_r2r_pencil

Creates R2R plan using Pencil of local data

  • private subroutine create_r2r_pencil(self, pencil, kinds, comm, precision, effort, executor, error_code)

    R2R Plan Constructor

    Arguments

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

    R2R Plan

    type(dtfft_pencil_t), intent(in) :: pencil

    Local pencil of data to be transformed

    type(dtfft_r2r_kind_t), intent(in), optional :: kinds(:)

    Kinds of R2R transform

    type(MPI_Comm), intent(in), optional :: comm

    Communicator

    type(dtfft_precision_t), intent(in), optional :: precision

    Presicion of Transform

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

    Effort level for the plan creation

    type(dtfft_executor_t), intent(in), optional :: executor

    Type of External FFT Executor

    integer(kind=int32), intent(out), optional :: error_code

    Optional Error Code returned to user

procedure, private, pass(self) :: create_r2r_internal

Private method that combines common logic for R2R plan creation

  • private function create_r2r_internal(self, dims, pencil, kinds, comm, precision, effort, executor)

    Creates plan for R2R plans

    Arguments

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

    R2R Plan

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

    Global dimensions of transform

    type(dtfft_pencil_t), intent(in), optional :: pencil

    Pencil of data to be transformed

    type(dtfft_r2r_kind_t), intent(in), optional :: kinds(:)

    Kinds of R2R transform

    type(MPI_Comm), intent(in), optional :: comm

    Communicator

    type(dtfft_precision_t), intent(in), optional :: precision

    Presicion of Transform

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

    Effort level for the plan creation

    type(dtfft_executor_t), intent(in), optional :: executor

    Type of External FFT Executor

    Return Value integer(kind=int32)