Host kernel implementation
| 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. |
|
| type(kernel_type_t), | public | :: | kernel_type |
Type of the kernel |
|||
| character(len=:), | public, | allocatable | :: | kernel_string | |||
| integer(kind=int32), | public, | allocatable | :: | neighbor_data(:,:) |
Neighbor data for pipelined unpacking |
||
| integer(kind=int32), | public, | allocatable | :: | dims(:) |
Local dimensions to process |
||
| integer(kind=int8), | public | :: | access_mode |
Access mode for kernel execution |
|||
| procedure(execute_host_interface), | public, | pointer | :: | execute_impl | => | null() |
Pointer to the execute implementation |
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 |
Executes kernel
Executes kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_kernel), | intent(inout) | :: | self |
Abstract kernel |
||
| real(kind=real32), | intent(in) | :: | in(:) |
Source buffer, can be device or host pointer |
||
| real(kind=real32), | intent(inout) | :: | 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 |
Destroys kernel
Destroys kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_kernel), | intent(inout) | :: | self |
Abstract kernel |
Creates kernel
Creates host kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(kernel_host), | intent(inout) | :: | self |
Host kernel class |
||
| 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 kernel
Executes host kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(kernel_host), | intent(inout) | :: | self |
Host kernel class |
||
| real(kind=real32), | intent(in), | target | :: | in(:) |
Source host-allocated buffer |
|
| real(kind=real32), | intent(inout), | target | :: | out(:) |
Target host-allocated buffer |
|
| type(dtfft_stream_t), | intent(in) | :: | stream |
Stream to execute on, unused here |
||
| integer(kind=int32), | intent(in), | optional | :: | neighbor |
Source rank for pipelined unpacking |
Destroys kernel
Destroys host kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(kernel_host), | intent(inout) | :: | self |
Host kernel class |
Executes benchmark for the given kernel
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(kernel_host), | intent(inout) | :: | self |
Host kernel class |
||
| real(kind=real32), | intent(in) | :: | in(:) |
Source host-allocated buffer |
||
| real(kind=real32), | intent(inout) | :: | out(:) |
Target host-allocated buffer |
||
| integer(kind=int32), | intent(in) | :: | n_warmup_iters |
Number of warmup iterations to perform before testing kernel |
||
| integer(kind=int32), | intent(in) | :: | n_iters |
Number of iterations to perform when testing kernel |
||
| real(kind=real64), | intent(out) | :: | execution_time |
Execution time of the selected access |
Selects the best access mode for host kernels, real(real32) version
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(kernel_host), | intent(inout) | :: | self |
Host kernel class |
||
| real(kind=real32), | intent(in) | :: | in(:) |
Source host-allocated buffer |
||
| real(kind=real32), | intent(inout) | :: | out(:) |
Target host-allocated buffer |
||
| integer(kind=int32), | intent(in) | :: | n_warmup_iters |
Number of warmup iterations to perform before testing kernel |
||
| integer(kind=int32), | intent(in) | :: | n_iters |
Number of iterations to perform when testing kernel |
||
| real(kind=real64), | intent(out) | :: | execution_time |
Execution time of the selected access |
Selects the best access mode for host kernels, real(real64) version
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(kernel_host), | intent(inout) | :: | self |
Host kernel class |
||
| real(kind=real32), | intent(in) | :: | in(:) |
Source host-allocated buffer |
||
| real(kind=real32), | intent(inout) | :: | out(:) |
Target host-allocated buffer |
||
| integer(kind=int32), | intent(in) | :: | n_warmup_iters |
Number of warmup iterations to perform before testing kernel |
||
| integer(kind=int32), | intent(in) | :: | n_iters |
Number of iterations to perform when testing kernel |
||
| real(kind=real64), | intent(out) | :: | execution_time |
Execution time of the selected access |
Selects the best access mode for host kernels, complex(real64) version
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(kernel_host), | intent(inout) | :: | self |
Host kernel class |
||
| real(kind=real32), | intent(in) | :: | in(:) |
Source host-allocated buffer |
||
| real(kind=real32), | intent(inout) | :: | out(:) |
Target host-allocated buffer |
||
| integer(kind=int32), | intent(in) | :: | n_warmup_iters |
Number of warmup iterations to perform before testing kernel |
||
| integer(kind=int32), | intent(in) | :: | n_iters |
Number of iterations to perform when testing kernel |
||
| real(kind=real64), | intent(out) | :: | execution_time |
Execution time of the selected access |