Class for managing nvRTC compiled CUDA kernels
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| logical, | private | :: | is_created | = | .false. |
Is module created |
|
| character(len=:), | private, | allocatable | :: | basic_name |
Basic kernel name |
||
| integer(kind=int32), | private | :: | ndims |
Number of dimensions, used only for forward permutation |
|||
| type(CUmodule), | private | :: | cumod |
CUDA module |
|||
| type(nvrtcProgram), | private | :: | prog |
nvRTC program |
|||
| type(kernel_type_t), | private | :: | kernel_type |
Type of kernel |
|||
| integer(kind=int64), | private | :: | base_storage |
Number of bytes needed to store single element |
|||
| type(kernel_config), | private, | allocatable | :: | configs(:) |
Kernel configurations that this module was compiled for |
Creates module with given parameters
Creates module with given parameters, compiles nvRTC program and loads it as CUDA module
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(nvrtc_module), | intent(inout) | :: | self |
This module |
||
| integer(kind=int32), | intent(in) | :: | ndims |
Number of dimensions, used only for forward permutation |
||
| type(kernel_type_t), | intent(in) | :: | kernel_type |
Type of kernel to build |
||
| integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
||
| type(kernel_config), | intent(in) | :: | configs(:) |
Kernel configurations that this module should be compiled for |
||
| type(device_props), | intent(in) | :: | props |
GPU architecture properties |
Destroys module and frees resources
Destroys module and frees resources
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(nvrtc_module), | intent(inout) | :: | self |
Returns kernel ready to be executed
Returns kernel ready to be executed
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(nvrtc_module), | intent(in) | :: | self |
This module |
||
| integer(kind=int32), | intent(in) | :: | ndims |
Number of dimensions, used only for forward permutation |
||
| type(kernel_type_t), | intent(in) | :: | kernel_type |
Type of kernel to build |
||
| integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
||
| integer(kind=int32), | intent(in) | :: | tile_size |
Size of shared memory tile, template parameter |
||
| integer(kind=int32), | intent(in) | :: | block_rows |
Number of rows processed by single thread, template parameter |
Resulting kernel
Checks if kernel is with given parameters is available in this module
Checks if kernel with given parameters is available in this module
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(nvrtc_module), | intent(in) | :: | self |
This module |
||
| integer(kind=int32), | intent(in) | :: | ndims |
Number of dimensions |
||
| type(kernel_type_t), | intent(in) | :: | kernel_type |
Type of kernel to build |
||
| integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
||
| integer(kind=int32), | intent(in) | :: | tile_size |
Size of shared memory tile, template parameter |
||
| integer(kind=int32), | intent(in) | :: | block_rows |
Number of rows processed by single thread, template parameter |
Basic check that this module provides kernels of given type
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(nvrtc_module), | intent(in) | :: | self |
This module |
||
| integer(kind=int32), | intent(in) | :: | ndims |
Number of dimensions |
||
| type(kernel_type_t), | intent(in) | :: | kernel_type |
Type of kernel to build |
||
| integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
Checks if kernel with given parameters is available in this module
Checks if kernel with given parameters is available in this module
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(nvrtc_module), | intent(in) | :: | self |
This module |
||
| integer(kind=int32), | intent(in) | :: | ndims |
Number of dimensions |
||
| type(kernel_type_t), | intent(in) | :: | kernel_type |
Type of kernel to build |
||
| integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |
||
| integer(kind=int32), | intent(in) | :: | tile_size |
Size of shared memory tile, template parameter |
||
| integer(kind=int32), | intent(in) | :: | block_rows |
Number of rows processed by single thread, template parameter |
Basic check that this module provides kernels of given type
Basic check that this module provides kernels of given type
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(nvrtc_module), | intent(in) | :: | self |
This module |
||
| integer(kind=int32), | intent(in) | :: | ndims |
Number of dimensions |
||
| type(kernel_type_t), | intent(in) | :: | kernel_type |
Type of kernel to build |
||
| integer(kind=int64), | intent(in) | :: | base_storage |
Number of bytes needed to store single element |