Reshape Plan class This class is a container for transposition plans
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(dtfft_backend_t), | public | :: | backend |
Backend |
|||
| type(backend_helper), | public | :: | helper |
Backend helper |
|||
| integer(kind=int64), | public | :: | min_buffer_size |
Minimal buffer size for transposition |
|||
| type(dtfft_platform_t), | public | :: | platform |
Platform used for transposition |
|||
| type(dtfft_stream_t), | public | :: | stream |
CUDA stream |
|||
| type(reshape_container), | public, | allocatable | :: | plans(:) |
Plans for each reshape operation |
||
| type(string), | public, | allocatable | :: | names(:) |
Names of each reshape operation |
||
| integer(kind=int32), | private, | allocatable | :: | init_grid(:) | |||
| integer(kind=int32), | private, | allocatable | :: | final_grid(:) | |||
| type(MPI_Comm), | private, | allocatable | :: | comms(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(reshape_plan_base), | intent(inout) | :: | self | |||
| type(dtfft_platform_t), | intent(in) | :: | platform | |||
| type(dtfft_effort_t), | intent(in) | :: | effort |
Returns .true. if any of the plans is running asynchronously
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(reshape_plan_base), | intent(in) | :: | self |
Transposition class |
Returns auxiliary buffer size
Returns maximum auxiliary memory size needed by transpose plan
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(reshape_plan_base), | intent(in) | :: | self |
Transposition class |
Returns true if aux is needed. false otherwise
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(reshape_plan_base), | intent(in) | :: | self |
Transposition class |
Returns backend id
Returns plan backend
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(reshape_plan_base), | intent(in) | :: | self |
Transposition class |
Executes transposition
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(reshape_plan_base), | intent(inout) | :: | self |
Transposition class |
||
| type(c_ptr), | intent(in) | :: | in |
Incoming buffer |
||
| type(c_ptr), | intent(in) | :: | out |
Resulting buffer |
||
| integer(kind=int32), | intent(in) | :: | reshape_type |
Type of reshape to execute |
||
| type(async_exec_t), | intent(in) | :: | exec_type |
Type of execution (sync/async) |
||
| type(c_ptr), | intent(in) | :: | aux |
Optional auxiliary buffer |
||
| integer(kind=int32), | intent(out), | optional | :: | error_code |
Error code |
Finishes asynchronous reshape
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(reshape_plan_base), | intent(inout) | :: | self |
Reshape class |
||
| type(c_ptr), | intent(in) | :: | in |
Incoming buffer |
||
| type(c_ptr), | intent(in) | :: | out |
Resulting buffer |
||
| integer(kind=int32), | intent(in) | :: | reshape_type |
Type of reshape to execute |
||
| type(c_ptr), | intent(in) | :: | aux | |||
| integer(kind=int32), | intent(out) | :: | error_code |
Error code |
Allocates memory based on selected backend
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(reshape_plan_base), | intent(inout) | :: | self |
Transposition class |
||
| type(MPI_Comm), | intent(in) | :: | comm |
MPI communicator |
||
| integer(kind=int64), | intent(in) | :: | alloc_bytes |
Number of bytes to allocate |
||
| type(c_ptr), | intent(out) | :: | ptr |
Pointer to the allocated memory |
||
| integer(kind=int32), | intent(out) | :: | error_code |
Error code |
Frees memory allocated with mem_alloc
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(reshape_plan_base), | intent(inout) | :: | self |
Transposition class |
||
| type(c_ptr), | intent(in) | :: | ptr |
Pointer to the memory to free |
||
| integer(kind=int32), | intent(out) | :: | error_code |
Error code |
Creates transpose plan
Creates reshape plan
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(reshape_plan), | intent(inout) | :: | self |
Reshape plan to be initialized |
||
| type(dtfft_platform_t), | intent(in) | :: | platform |
Platform to create plan for (HOST or CUDA) |
||
| type(pencil_init), | intent(in) | :: | ipencil |
Pencil decomposition passed by user |
||
| type(pencil), | intent(in) | :: | pencils(:) |
Array of pencil decompositions for different layouts |
||
| type(MPI_Comm), | intent(in) | :: | comm |
Global MPI communicator |
||
| type(MPI_Comm), | intent(in) | :: | local_comms(:) |
Local MPI communicators for each dimension |
||
| type(MPI_Datatype), | intent(in) | :: | base_dtype |
Base MPI datatype for complex data |
||
| integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single complex element |
||
| type(dtfft_effort_t), | intent(in) | :: | effort |
dtFFT planner effort level (ESTIMATE, MEASURE, PATIENT, EXHAUSTIVE) |
||
| type(dtfft_backend_t), | intent(in) | :: | backend |
Communication backend to use |
||
| type(MPI_Datatype), | intent(in) | :: | base_init_dtype |
Base MPI datatype for real data |
||
| integer(kind=int64), | intent(in) | :: | base_init_storage |
Number of bytes needed to store single real element |
||
| type(pencil), | intent(out) | :: | bricks(:) |
Pencils describing brick data distribution |
||
| logical, | intent(out) | :: | is_final_enabled |
Flag indicating if final reshape in Fourier space is enabled |
Error code: DTFFT_SUCCESS on success
Returns grid for specified reshape
Returns grid decomposition for specified dimension
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(reshape_plan), | intent(in), | target | :: | self |
Reshape plan |
|
| integer(kind=int8), | intent(in) | :: | dim |
Dimension: 1 for initial grid, other values for final grid |
||
| integer(kind=int32), | intent(out), | pointer | :: | grid(:) |
Pointer to grid array |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(reshape_plan), | intent(inout) | :: | self |