Abstract kernel type
This kernel type is used in reshape_handle_generic type and
is resposible for packing/unpacking/permute operations.
| 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. |
|
| logical, | public | :: | is_dummy_kernel | = | .false. |
If kernel is of type KERNEL_DUMMY |
|
| logical, | public | :: | is_dummy_compressed | = | .false. | ||
| type(kernel_type_t), | public | :: | kernel_type |
Type of the kernel |
|||
| type(string), | public | :: | kernel_string | ||||
| integer(kind=int32), | public, | allocatable | :: | neighbor_data(:,:) |
Neighbor data for pipelined unpacking |
||
| integer(kind=int32), | public, | allocatable | :: | dims(:) |
Local dimensions to process |
||
| class(abstract_compressor), | public, | pointer | :: | compressor |
Compressor pointer. Compressor itself is created by generic handle and passed here |
||
| logical, | public | :: | is_compress |
Enable compression |
|||
| logical, | public | :: | is_decompress |
Enable decompression |
|||
| integer(kind=int64), | public | :: | base_storage |
Creates kernel
Creates kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_kernel), | intent(inout) | :: | self |
Abstract kernel |
||
| integer(kind=int32), | intent(in) | :: | dims(:) |
Local dimensions to process |
||
| 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 |
||
| type(kernel_type_t), | intent(in) | :: | kernel_type |
Type of kernel to build |
||
| integer(kind=int32), | intent(in), | optional | :: | neighbor_data(:,:) |
Optional pointers for unpack kernels |
|
| logical, | intent(in), | optional | :: | force_effort |
Should effort be forced or not |
|
| logical, | intent(in), | optional | :: | with_compression |
Enable compression after executing kernel |
|
| logical, | intent(in), | optional | :: | with_decompression |
Enable decompression before executing kernel |
Executes kernel
Executes kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_kernel), | intent(inout) | :: | self |
Abstract kernel |
||
| type(c_ptr), | intent(in) | :: | in |
Source buffer, can be device or host pointer |
||
| type(c_ptr), | intent(in) | :: | out |
Target buffer, can be device or host pointer |
||
| type(dtfft_stream_t), | intent(in) | :: | stream |
Stream to execute on, used only for device pointers |
||
| integer(kind=int32), | intent(in), | optional | :: | neighbor |
Source rank for pipelined unpacking |
|
| type(c_ptr), | intent(in), | optional | :: | aux |
Target buffer, can be device or host pointer |
|
| integer(kind=int32), | intent(inout), | optional | :: | csize |
Compressed buffer size |
|
| integer(kind=int32), | intent(inout), | optional | :: | csizes(:) |
Multiple compression sizes. This should only be used with CUDA backends |
|
| logical, | intent(in), | optional | :: | skip_compression |
Skip compression/decompression stage. Should be used when packing/unpacking from itself. |
|
| integer(kind=int32), | intent(in), | optional | :: | skip_rank |
Skip compression/decompression for specific rank when neighbor is not specified. |
|
| logical, | intent(in), | optional | :: | sync |
Sync stream after packing/compression. Should be used only for fused backends |
Destroys kernel
Destroys kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_kernel), | intent(inout) | :: | self |
Abstract kernel |
Sets created compressor for the kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_kernel), | intent(inout) | :: | self |
Abstract kernel |
||
| class(abstract_compressor), | intent(in), | target | :: | compressor |
Compressor to set |
Creates underlying kernel
Creates underlying kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_kernel), | intent(inout) | :: | self |
Abstract kernel |
||
| 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 |
Executes underlying kernel
Executes underlying kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_kernel), | intent(inout) | :: | self |
Abstract kernel |
||
| type(c_ptr), | intent(in) | :: | in |
Source buffer, can be device or host pointer |
||
| type(c_ptr), | intent(in) | :: | out |
Target buffer, can be device or host pointer |
||
| type(dtfft_stream_t), | intent(in) | :: | stream |
Stream to execute on, used only for device pointers |
||
| logical, | intent(in) | :: | sync |
Sync stream after kernel execution |
||
| integer(kind=int32), | intent(in), | optional | :: | neighbor |
Source rank for pipelined unpacking |
Destroys underlying kernel
Destroys underlying kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_kernel), | intent(inout) | :: | self |
Abstract kernel |