Header module for all focal parameters, types and interfaces
This is a header module: it contains subroutine interface definitions only. Subroutine implementation (code) is found in the corresponding submodule files.
Use of global parameters must not restrict ability to use the module asynchronously or within parallel/multithread environment
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | parameter | :: | errStringLen | = | 50 |
Max length of OpenCL error code strings |
integer, | public, | parameter | :: | fclAllocationSize | = | 10 |
Default allocation increment for dynamically growing lists |
integer, | public, | parameter | :: | CL_PLATFORM_NOT_FOUND_KHR | = | -1001 |
Extension error: No valid ICDs found |
integer, | public, | parameter | :: | NV_ILLEGAL_BUFFER_READ_WRITE | = | -9999 |
Vendor error: Illegal read or write to a buffer in NDRangeKernel |
type(fclCommandQ), | public, | target | :: | fclDefaultCmdQ |
Default command queue: used when command queue is omittetd in focal api calls |
||
type(fclContext), | public, | target | :: | fclDefaultCtx |
Default context: used when context is omittetd in focal api calls |
||
type(fclProfiler), | public | :: | fclDefaultProfiler |
Default profiler: used when profile is omitted in focal api calls |
|||
type(fclEvent), | public, | target | :: | fclLastWriteEvent |
Focal event object for the most recent write event (host-to-device) to be enqueued |
||
type(fclEvent), | public, | target | :: | fclLastReadEvent |
Focal event object for the most recent read event (device-to-host) to be enqueued |
||
type(fclEvent), | public, | target | :: | fclLastCopyEvent |
Focal event object for the most recent copy event (device-to-device) to be enqueued |
||
type(fclEvent), | public, | target | :: | fclLastKernelEvent |
Focal event object for the most recent kernel event to be enqueued |
||
type(fclEvent), | public, | target | :: | fclLastBarrierEvent |
Focal event object for the most recent barrier event to be enqueued |
||
character(kind=c_char, len=1), | public, | target, bind(C,name="0") | :: | fclKernelStart |
c interoperable character for start of fclKernels binary resource |
||
character(kind=c_char, len=1), | public, | target, bind(C,name="0") | :: | fclKernelEnd |
c interoperable character for sendtart of fclKernels binary resource |
||
procedure(fclHandleErrorInterface), | public, | pointer | :: | fclErrorHandler | => | NULL() |
Procedure pointer for custom OpenCL runtime error handler |
integer(kind=c_intptr_t), | public, | allocatable | :: | fclHostPtrMap(:,:) |
Map allocated host pointers to cl_buffer pointers (needed for deallocation) |
Return the text representation for an openCL error code
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | errcode |
OpenCL API error code |
Returns OpenCL error string
Wrapper to invoke fclErrorHandle procedure pointer (fixes issue with ifort)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_int32_t), | intent(in) | :: | errcode | |||
character(len=*), | intent(in) | :: | focalCall | |||
character(len=*), | intent(in) | :: | oclCall |
Check an openCL error code and print build log if necessary
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | builderrcode |
OpenCL API error code |
||
type(fclProgram), | intent(in) | :: | prog |
Focal program object |
||
type(fclContext), | intent(in) | :: | ctx |
Focal context object |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_int32_t), | intent(in) | :: | errcode | |||
character(len=*), | intent(in) | :: | focalCall | |||
character(len=*), | intent(in) | :: | oclCall |
Stop and print message for Focal errors not caused by openCL API call
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in), | optional | :: | descrip |
Description of current API call |
Generic interface for allocating host arrays using 'pinned' (non-paged) memory. This is required for asynchronous transfers.
Currently implements interfaces for 1D and 2D int32, float and double arrays.
This is a blocking command. Execution waits on host until map is complete
Example: Allocate a 1D integer array with 100 elements
integer, pointer :: hostArray(:)
call fclAllocHost(cmdq,hostArray,100)
NB: cmdq
is optional, if omitted then the default command queue is used
Allocate a 'pinned' (non-paged) host array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in) | :: | cmdq |
Command Q with which to associate the allocated device memory |
||
type(c_ptr), | intent(out) | :: | hostPtr |
c pointer to allocated host memory |
||
integer(kind=c_int64_t), | intent(in) | :: | nBytes |
Desired array size in bytes |
Allocate a 'pinned' (non-paged) host array on default cmdq
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(c_ptr), | intent(out) | :: | hostPtr |
c pointer to allocated host memory |
||
integer(kind=c_int64_t), | intent(in) | :: | nBytes |
Desired array size in bytes |
Allocate a 1D 'pinned' host array for 32bit integers
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in) | :: | cmdq |
Command Q with which to associate the allocated device memory |
||
integer(kind=c_int32_t), | intent(inout), | pointer | :: | hostPtr(:) |
Host array pointer to allocate |
|
integer, | intent(in) | :: | dim |
Size of array to allocate |
Allocate a 1D 'pinned' host array for 32bit integers on default cmdq
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_int32_t), | intent(inout), | pointer | :: | hostPtr(:) |
Host array pointer to allocate |
|
integer, | intent(in) | :: | dim |
Size of array to allocate |
Allocate a 1D 'pinned' host array for 32bit reals
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in) | :: | cmdq |
Command Q with which to associate the allocated device memory |
||
real(kind=c_Float), | intent(inout), | pointer | :: | hostPtr(:) |
Host array pointer to allocate |
|
integer, | intent(in) | :: | dim |
Size of array to allocate |
Allocate a 1D 'pinned' host array for 32bit reals on default cmdq
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=c_Float), | intent(inout), | pointer | :: | hostPtr(:) |
Host array pointer to allocate |
|
integer, | intent(in) | :: | dim |
Size of array to allocate |
Allocate a 1D 'pinned' host array for 64bit reals
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in) | :: | cmdq |
Command Q with which to associate the allocated device memory |
||
real(kind=c_Double), | intent(inout), | pointer | :: | hostPtr(:) |
Host array pointer to allocate |
|
integer, | intent(in) | :: | dim |
Size of array to allocate |
Allocate a 1D 'pinned' host array for 64bit reals on default cmdq
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=c_Double), | intent(inout), | pointer | :: | hostPtr(:) |
Host array pointer to allocate |
|
integer, | intent(in) | :: | dim |
Size of array to allocate |
Generic interface to free pinned host pointer
This is a blocking command. Execution waits on host until unmap is complete
Enqueue unmap/free command to specific command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in) | :: | cmdq | |||
type(c_ptr), | intent(in) | :: | hostPtr |
Enqueue unmap/free command to default command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(c_ptr), | intent(inout) | :: | hostPtr |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in) | :: | cmdq | |||
integer(kind=c_int32_t), | intent(inout), | pointer | :: | hostPtr(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_int32_t), | intent(inout), | pointer | :: | hostPtr(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in) | :: | cmdq | |||
real(kind=c_float), | intent(inout), | pointer | :: | hostPtr(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=c_float), | intent(inout), | pointer | :: | hostPtr(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in) | :: | cmdq | |||
real(kind=c_double), | intent(inout), | pointer | :: | hostPtr(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=c_double), | intent(inout), | pointer | :: | hostPtr(:) |
Generic interface for assignment of fclBuffer objects by operator-overloading
Helper routine for swapping device buffer pointers. Also swaps the command queue pointers associated with each buffer if different.
The debug build will throw an error if either buffer is uninitialised or if the buffers do not match in size.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceBuffer), | intent(inout) | :: | memObject1 |
Buffer objects with which to swap pointers |
||
class(fclDeviceBuffer), | intent(inout) | :: | memObject2 |
Buffer objects with which to swap pointers |
Generic interface to initialise buffers on the device
Initialise untyped buffer object on specified command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in), | target | :: | cmdq |
Queue with which to associate new buffer |
|
type(fclDeviceBuffer), | intent(inout) | :: | buffer |
Focal memory object to initialise |
||
integer(kind=c_size_t), | intent(in) | :: | nBytes |
Size of buffer in bytes |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise untyped buffer object on the default command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDeviceBuffer), | intent(inout) | :: | buffer |
Focal memory object to initialise |
||
integer(kind=c_size_t), | intent(in) | :: | nBytes |
Size of buffer in bytes |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise float buffer object on specific command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in), | target | :: | cmdq |
Queue with which to associate new buffer |
|
type(fclDeviceFloat), | intent(inout) | :: | buffer |
Focal memory object to initialise |
||
integer, | intent(in) | :: | dim |
Dimension of buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise float buffer object on the default command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDeviceFloat), | intent(inout) | :: | buffer |
Focal memory object to initialise |
||
integer, | intent(in) | :: | dim |
Dimension of buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise double buffer object on specific command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in), | target | :: | cmdq |
Queue with which to associate new buffer |
|
type(fclDeviceDouble), | intent(inout) | :: | buffer |
Focal memory object to initialise |
||
integer, | intent(in) | :: | dim |
Dimension of buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise double buffer object on the default command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDeviceDouble), | intent(inout) | :: | buffer |
Focal memory object to initialise |
||
integer, | intent(in) | :: | dim |
Dimension of buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise 32bit integer buffer object on specific command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in), | target | :: | cmdq |
Queue with which to associate new buffer |
|
type(fclDeviceInt32), | intent(inout) | :: | buffer |
Focal memory object to initialise |
||
integer, | intent(in) | :: | dim |
Dimension of buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise 32bit integer buffer object on the default command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDeviceInt32), | intent(inout) | :: | buffer |
Focal memory object to initialise |
||
integer, | intent(in) | :: | dim |
Dimension of buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Generic interface to initialise sub-buffers on the device
Initialise an untyped sub-buffer from an existing buffer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in), | target | :: | cmdq |
Queue with which to associate new buffer |
|
type(fclDeviceBuffer), | intent(inout) | :: | subBuffer |
Focal memory object to initialise as new sub-buffer |
||
class(fclDeviceBuffer), | intent(inout) | :: | sourceBuffer |
Focal memory object in which to create sub-buffer |
||
integer(kind=c_size_t), | intent(in) | :: | offset |
Offset in bytes of sub-buffer within sourceBuffer |
||
integer(kind=c_size_t), | intent(in) | :: | size |
Size in bytes of sub-buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise an untyped sub-buffer from an existing buffer on the default command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDeviceBuffer), | intent(inout) | :: | subBuffer |
Focal memory object to initialise as new sub-buffer |
||
class(fclDeviceBuffer), | intent(inout) | :: | sourceBuffer |
Focal memory object in which to create sub-buffer |
||
integer(kind=c_size_t), | intent(in) | :: | offset |
Offset in bytes of sub-buffer within sourceBuffer |
||
integer(kind=c_size_t), | intent(in) | :: | size |
Size in bytes of sub-buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise a float sub-buffer from an existing float buffer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in), | target | :: | cmdq |
Queue with which to associate new buffer |
|
type(fclDeviceFloat), | intent(inout) | :: | subBuffer |
Focal memory object to initialise as new sub-buffer |
||
type(fclDeviceFloat), | intent(inout) | :: | sourceBuffer |
Focal memory object in which to create sub-buffer |
||
integer, | intent(in) | :: | start |
Zero-based start element of sub-buffer within sourceBuffer |
||
integer, | intent(in) | :: | length |
Length (no. of elements) of sub-buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise a float sub-buffer from an existing float buffer on the default command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDeviceFloat), | intent(inout) | :: | subBuffer |
Focal memory object to initialise as new sub-buffer |
||
type(fclDeviceFloat), | intent(inout) | :: | sourceBuffer |
Focal memory object in which to create sub-buffer |
||
integer, | intent(in) | :: | start |
Zero-based start element of sub-buffer within sourceBuffer |
||
integer, | intent(in) | :: | length |
Length (no. of elements) of sub-buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise a double sub-buffer from an existing float buffer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in), | target | :: | cmdq |
Queue with which to associate new buffer |
|
type(fclDeviceDouble), | intent(inout) | :: | subBuffer |
Focal memory object to initialise as new sub-buffer |
||
type(fclDeviceDouble), | intent(inout) | :: | sourceBuffer |
Focal memory object in which to create sub-buffer |
||
integer, | intent(in) | :: | start |
Zero-based start element of sub-buffer within sourceBuffer |
||
integer, | intent(in) | :: | length |
Length (no. of elements) of sub-buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise a double sub-buffer from an existing float buffer on the default command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDeviceDouble), | intent(inout) | :: | subBuffer |
Focal memory object to initialise as new sub-buffer |
||
type(fclDeviceDouble), | intent(inout) | :: | sourceBuffer |
Focal memory object in which to create sub-buffer |
||
integer, | intent(in) | :: | start |
Zero-based start element of sub-buffer within sourceBuffer |
||
integer, | intent(in) | :: | length |
Length (no. of elements) of sub-buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise a 32bit integer sub-buffer from an existing float buffer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in), | target | :: | cmdq |
Queue with which to associate new buffer |
|
type(fclDeviceInt32), | intent(inout) | :: | subBuffer |
Focal memory object to initialise as new sub-buffer |
||
type(fclDeviceInt32), | intent(inout) | :: | sourceBuffer |
Focal memory object in which to create sub-buffer |
||
integer, | intent(in) | :: | start |
Zero-based start element of sub-buffer within sourceBuffer |
||
integer, | intent(in) | :: | length |
Length (no. of elements) of sub-buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Initialise a 32bit integer sub-buffer from an existing float buffer on the default command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDeviceInt32), | intent(inout) | :: | subBuffer |
Focal memory object to initialise as new sub-buffer |
||
type(fclDeviceInt32), | intent(inout) | :: | sourceBuffer |
Focal memory object in which to create sub-buffer |
||
integer, | intent(in) | :: | start |
Zero-based start element of sub-buffer within sourceBuffer |
||
integer, | intent(in) | :: | length |
Length (no. of elements) of sub-buffer |
||
character(len=*), | intent(in), | optional | :: | profileName |
Descriptive name for profiling output |
|
character(len=*), | intent(in), | optional | :: | access |
Read/write access of kernels to buffer 'rw' = read&write (default), 'r'=read-only, 'w'=write-only |
Fill device buffer with scalar pattern
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceBuffer), | intent(inout), | target | :: | memObject |
Focal memory object to fill |
|
type(c_ptr), | intent(in) | :: | hostBufferPtr |
C Pointer to host scalar patter |
||
integer(kind=c_size_t), | intent(in) | :: | nBytesPattern |
Size of scalar pattern in bytes |
Assign a scalar integer to a device integer memory buffer Called by operator-overloading of assignment(=)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceInt32), | intent(inout) | :: | memObject |
Focal memory object to fill |
||
integer(kind=c_int32_t), | intent(in), | target | :: | hostValue |
Host value with which to fill |
Assign a scalar float to a device float memory buffer Called by operator-overloading of assignment(=)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceFloat), | intent(inout) | :: | memObject |
Focal memory object to fill |
||
real(kind=c_float), | intent(in), | target | :: | hostValue |
Host value with which to fill |
Assign a scalar double to a device double memory buffer Called by operator-overloading of assignment(=)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceDouble), | intent(inout) | :: | memObject |
Focal memory object to fill |
||
real(kind=c_double), | intent(in), | target | :: | hostValue |
Host value with which to fill |
Transfer host buffer to device buffer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceBuffer), | intent(inout), | target | :: | memObject |
Focal memory object (target) |
|
type(c_ptr), | intent(in) | :: | hostBufferPtr |
C Pointer to host array (source) |
||
integer(kind=c_size_t), | intent(in) | :: | nBytes |
Size of buffers in bytes |
Transfer host integer array to device integer array Called by operator-overloading of assignment(=)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceInt32), | intent(inout) | :: | memObject |
Focal memory object (target) |
||
integer(kind=c_int32_t), | intent(in), | target | :: | hostBuffer(:) |
Host array (source) |
Transfer host float array to device float array Called by operator-overloading of assignment(=)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceFloat), | intent(inout) | :: | memObject |
Focal memory object (target) |
||
real(kind=c_float), | intent(in), | target | :: | hostBuffer(:) |
Host array (source) |
Transfer host double array to device double array Called by operator-overloading of assignment(=)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceDouble), | intent(inout) | :: | memObject |
Focal memory object (target) |
||
real(kind=c_double), | intent(in), | target | :: | hostBuffer(:) |
Host array (source) |
Transfer device buffer to host buffer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(c_ptr), | intent(in) | :: | hostBufferPtr |
C pointer to host buffer (target) |
||
class(fclDeviceBuffer), | intent(in), | target | :: | memObject |
Focal memory object (source) |
|
integer(kind=c_size_t), | intent(in) | :: | nBytes |
Size of buffers in bytes |
Transfer device integer array to host integer array Called by operator-overloading of assignment(=)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_int32_t), | intent(inout), | target | :: | hostBuffer(:) |
Host array (target) |
|
class(fclDeviceInt32), | intent(in) | :: | memObject |
Focal memory object (source) |
Transfer device float array to host float array Called by operator-overloading of assignment(=)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=c_float), | intent(inout), | target | :: | hostBuffer(:) |
Host array (target) |
|
class(fclDeviceFloat), | intent(in) | :: | memObject |
Focal memory object (source) |
Transfer device double array to host double array Called by operator-overloading of assignment(=)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=c_double), | intent(inout), | target | :: | hostBuffer(:) |
Host array (target) |
|
class(fclDeviceDouble), | intent(in) | :: | memObject |
Focal memory object (source) |
Transfer device buffer to device buffer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceBuffer), | intent(inout), | target | :: | memObject1 |
Focal memory object (target) |
|
class(fclDeviceBuffer), | intent(in) | :: | memObject2 |
Focal memory object (source) |
Transfer device integer array to device integer array Called by operator-overloading of assignment(=)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceInt32), | intent(inout), | target | :: | memObject1 |
Focal memory object (target) |
|
class(fclDeviceInt32), | intent(in) | :: | memObject2 |
Focal memory object (source) |
Transfer device float array to device float array Called by operator-overloading of assignment(=)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceFloat), | intent(inout), | target | :: | memObject1 |
Focal memory object (target) |
|
class(fclDeviceFloat), | intent(in) | :: | memObject2 |
Focal memory object (source) |
Transfer device double array to device double array Called by operator-overloading of assignment(=)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceDouble), | intent(inout), | target | :: | memObject1 |
Focal memory object (target) |
|
class(fclDeviceDouble), | intent(in) | :: | memObject2 |
Focal memory object (source) |
Release device memory associated with memObject
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceBuffer) | :: | memObject |
Query platform information. See clGetPlatformInfo for values of 'key' argument containined in clfortran module.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclPlatform), | intent(in) | :: | platform | |||
integer(kind=c_int32_t), | intent(in) | :: | key | |||
character(len=:), | intent(out), | allocatable, target | :: | value |
Generic interface to query device information. See clGetDeviceInfo for values of 'key' argument contained in clfortran module.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDevice), | intent(in) | :: | device | |||
integer(kind=c_int32_t), | intent(in) | :: | key | |||
character(len=:), | intent(out), | allocatable, target | :: | value |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDevice), | intent(in) | :: | device | |||
integer(kind=c_int32_t), | intent(in) | :: | key | |||
integer(kind=c_int32_t), | intent(out), | target | :: | value |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDevice), | intent(in) | :: | device | |||
integer(kind=c_int32_t), | intent(in) | :: | key | |||
integer(kind=c_int64_t), | intent(out), | target | :: | value |
Generic interface to query kernel information. See clGetDeviceInfo for values of 'key' argument contained in clfortran module.
Query kernel information for string info. See clGetPlatformInfo for values of 'key' argument containined in clfortran module.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclKernel), | intent(in) | :: | kernel | |||
integer(kind=c_int32_t), | intent(in) | :: | key | |||
character(len=:), | intent(out), | allocatable, target | :: | value |
Query kernel information for 32bit integer. See clGetPlatformInfo for values of 'key' argument containined in clfortran module.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclKernel), | intent(in) | :: | kernel | |||
integer(kind=c_int32_t), | intent(in) | :: | key | |||
integer(kind=c_int32_t), | intent(out), | target | :: | value |
Query kernel work group information for 64bit integer. See clGetPlatformInfo for values of 'key' argument containined in clfortran module.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclKernel), | intent(in) | :: | kernel | |||
type(fclDevice), | intent(in) | :: | device | |||
integer(kind=c_int32_t), | intent(in) | :: | key | |||
integer(kind=c_int64_t), | intent(out), | target | :: | value |
Generic interface to query kernel argument information. See clGetDeviceInfo for values of 'key' argument contained in clfortran module.
Query kernel information for string info. See clGetPlatformInfo for values of 'key' argument containined in clfortran module.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclKernel), | intent(in) | :: | kernel | |||
integer, | intent(in) | :: | argNo | |||
integer(kind=c_int32_t), | intent(in) | :: | key | |||
character(len=:), | intent(out), | allocatable, target | :: | value |
Query kernel information for 32bit integer. See clGetPlatformInfo for values of 'key' argument containined in clfortran module.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclKernel), | intent(in) | :: | kernel | |||
integer, | intent(in) | :: | argNo | |||
integer(kind=c_int32_t), | intent(in) | :: | key | |||
integer(kind=c_int32_t), | intent(out), | target | :: | value |
Query kernel information for 32bit integer. See clGetPlatformInfo for values of 'key' argument containined in clfortran module.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclEvent), | intent(in) | :: | event | |||
integer(kind=c_int32_t), | intent(in) | :: | key | |||
integer(kind=c_int32_t), | intent(out), | target | :: | value |
Return pointer to array of available fclPlatforms
Return fclPlatform object for OpenCL platform id
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_intptr_t), | intent(in) | :: | platform_id |
OpenCL platform id |
Return pointer to array of fclDevices on platform id
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_intptr_t), | intent(in) | :: | platform_id |
OpenCL platform id |
Return fclDevice for OpenCL device id
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_intptr_t), | intent(in) | :: | device_id |
OpenCL device id |
Generic interface to create a context
Create a context with fclPlatform object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclPlatform), | intent(inout), | target | :: | platform |
Create a context with the first platform where the vendor property contains a specified string (case-insensitive).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | vendor |
String with which to match platform vendor. Separate multiple vendors with commas. First matching vendor in list is used. Matching is case-insensitive substring. e.g. e.g. |
Filter and sort list of devices based on criteria
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDevice), | intent(in) | :: | devices(:) | |||
character(len=*), | intent(in), | optional | :: | vendor |
Filter device list based on platform vendor. Specify multiple possible vendors in comma-separate list |
|
character(len=*), | intent(in), | optional | :: | type |
Filter device list based on device type. Specify at least one of 'cpu', 'gpu', default: 'cpu,gpu' (both) |
|
character(len=*), | intent(in), | optional | :: | nameLike |
Filter devices based on device name. Look for this substring in device name. |
|
character(len=*), | intent(in), | optional | :: | extensions |
Filter devices based on supported device extensions. Specify comma-separated list of OpenCL extension names, e.g. cl_khr_fp64. See clGetDeviceInfo Extensions specified are requirements: devices are filtered-out if they don't support all extensions specified. |
|
character(len=*), | intent(in), | optional | :: | sortBy |
Sort device list based on either 'memory': total global memory, 'cores': total number of compute units, 'clock': maximum clock speed |
Filtered and sorted list. Unallocated if no matching devices found.
Quick setup helper function: find a single device based on criteria and set the default context accordingly. Raises runtime error if no matching device is found.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in), | optional | :: | vendor |
Filter device based on platform vendor Specify multiple possible vendors in comma-separate list |
|
character(len=*), | intent(in), | optional | :: | type |
Filter device list based on device type. Specify at least one of 'cpu', 'gpu', default: 'cpu,gpu' (both) |
|
character(len=*), | intent(in), | optional | :: | nameLike |
Filter devices based on device name. Look for this substring in device name. |
|
character(len=*), | intent(in), | optional | :: | extensions |
Filter devices based on supported device extensions. Specify comma-separated list of OpenCL extension names, e.g. cl_khr_fp64. See clGetDeviceInfo Extensions specified are requirements: devices are filtered-out if they don't support all extensions specified. |
|
character(len=*), | intent(in), | optional | :: | sortBy |
Sort device list based on either 'memory': total global memory, 'cores': total number of compute units, 'clock': maximum clock speed |
The device chosen based on the user criteria
Set the global default context
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclContext), | intent(in) | :: | ctx |
Generic interface to list devices, sorted and filtered by properties Raises runtime error if no matching device is found.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclContext), | intent(in), | target | :: | ctx |
Context containing device for command queue |
|
character(len=*), | intent(in), | optional | :: | vendor |
Filter device list based on platform vendor. Specify multiple possible vendors in comma-separate list |
|
character(len=*), | intent(in), | optional | :: | type |
Filter device list based on device type. Specify at least one of 'cpu', 'gpu', default: 'cpu,gpu' (both) |
|
character(len=*), | intent(in), | optional | :: | nameLike |
Filter devices based on device name. Look for this substring in device name. |
|
character(len=*), | intent(in), | optional | :: | extensions |
Filter devices based on supported device extensions. Specify comma-separated list of OpenCL extension names, e.g. cl_khr_fp64. See clGetDeviceInfo Extensions specified are requirements: devices are filtered-out if they don't support all extensions specified. |
|
character(len=*), | intent(in), | optional | :: | sortBy |
Sort device list based on either 'memory': total global memory, 'cores': total number of compute units, 'clock': maximum clock speed |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in), | optional | :: | vendor |
Filter device list based on platform vendor. Specify multiple possible vendors in comma-separate list |
|
character(len=*), | intent(in), | optional | :: | type |
Filter device list based on device type. Specify at least one of 'cpu', 'gpu', default: 'cpu,gpu' (both) |
|
character(len=*), | intent(in), | optional | :: | nameLike |
Filter devices based on device name. Look for this substring in device name. |
|
character(len=*), | intent(in), | optional | :: | extensions |
Filter devices based on supported device extensions. Specify comma-separated list of OpenCL extension names, e.g. cl_khr_fp64. See clGetDeviceInfo Extensions specified are requirements: devices are filtered-out if they don't support all extensions specified. |
|
character(len=*), | intent(in), | optional | :: | sortBy |
Sort device list based on either 'memory': total global memory, 'cores': total number of compute units, 'clock': maximum clock speed |
Generic interface to create a device command queue
Create a command queue with a Focal device object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclContext), | intent(in), | target | :: | ctx |
Context containing device for command queue |
|
type(fclDevice), | intent(inout), | target | :: | device |
Device on which to create command queue |
|
logical, | intent(in), | optional | :: | enableProfiling |
Enable OpenCL profiling |
|
logical, | intent(in), | optional | :: | outOfOrderExec |
Enable out of order execution |
|
logical, | intent(in), | optional | :: | blockingWrite |
Enable/disable host-blocking write to device |
|
logical, | intent(in), | optional | :: | blockingRead |
Enable/disable host-blocking read from device |
Returns fclCommandQ object
Create a command queue with a Focal device object using default context
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDevice), | intent(inout), | target | :: | device |
Device on which to create command queue |
|
logical, | intent(in), | optional | :: | enableProfiling |
Enable OpenCL profiling |
|
logical, | intent(in), | optional | :: | outOfOrderExec |
Enable out of order execution |
|
logical, | intent(in), | optional | :: | blockingWrite |
Enable/disable host-blocking write to device |
|
logical, | intent(in), | optional | :: | blockingRead |
Enable/disable host-blocking read from device |
Returns fclCommandQ object
Generic interface to create a pool of command queues
Create a command queue pool with a Focal device object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclContext), | intent(in), | target | :: | ctx |
Context containing device for command queue |
|
integer, | intent(in) | :: | N |
Number of command queues to create in pool |
||
type(fclDevice), | intent(inout), | target | :: | device |
Device on which to create command queue |
|
logical, | intent(in), | optional | :: | enableProfiling |
Enable OpenCL profiling |
|
logical, | intent(in), | optional | :: | outOfOrderExec |
Enable out of order execution |
|
logical, | intent(in), | optional | :: | blockingWrite |
Enable/disable host-blocking write to device |
|
logical, | intent(in), | optional | :: | blockingRead |
Enable/disable host-blocking read from device |
Returns fclCommandQPool object
Create a command queue pool with a Focal device object using default context
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | N |
Number of command queues to create in pool |
||
type(fclDevice), | intent(inout), | target | :: | device |
Device on which to create command queue |
|
logical, | intent(in), | optional | :: | enableProfiling |
Enable OpenCL profiling |
|
logical, | intent(in), | optional | :: | outOfOrderExec |
Enable out of order execution |
|
logical, | intent(in), | optional | :: | blockingWrite |
Enable/disable host-blocking write to device |
|
logical, | intent(in), | optional | :: | blockingRead |
Enable/disable host-blocking read from device |
Returns fclCommandQPool object
Returns next scheduled queue in queue pool
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclCommandQPool), | intent(inout), | target | :: | qPool |
Returns current scheduled queue in queue pool
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclCommandQPool), | intent(in), | target | :: | qPool |
Set the global default command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in) | :: | cmdq |
Generic interface to compile an openCL program
Compile program source on context ctx
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclContext), | intent(in), | target | :: | ctx | ||
character(len=*), | intent(in) | :: | source |
Program source code |
||
character(len=*), | intent(in), | optional | :: | options |
OpenCL compilation options |
Returns fclProgram object
Compile program source on fclDefaultContext
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | source |
Program source code |
||
character(len=*), | intent(in), | optional | :: | options |
OpenCL compilation options |
Returns fclProgram object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclContext), | intent(in) | :: | ctx | |||
type(fclProgram), | intent(in) | :: | prog | |||
type(fclDevice), | intent(in) | :: | device | |||
integer, | intent(in), | optional | :: | outputUnit |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclProgram), | intent(in) | :: | prog | |||
type(fclDevice), | intent(in) | :: | device | |||
integer, | intent(in), | optional | :: | outputUnit |
Extract a kernel object for execution from a compiled program object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclProgram), | intent(in) | :: | prog |
Compiled program object containing kernel |
||
character(len=*), | intent(in) | :: | kernelName |
Name of kernel to extract for execution |
||
integer, | intent(in), | optional | :: | global_work_size(:) |
Global work group dimensions, default unset (must set prior to launching) |
|
integer, | intent(in), | optional | :: | local_work_size(:) |
Local work group dimensions, default zeros (decided by OpenCL runtime) |
|
integer, | intent(in), | optional | :: | work_dim |
Number of dimensions for kernel work group, default 1 |
|
integer, | intent(in), | optional | :: | global_work_offset(:) |
Global work group offsets, default zeros |
Returns fclKernel object for execution
Release underlying memory associated with OpenCL program pointer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclProgram), | intent(in) | :: | prog |
Compiled program object containing kernel |
Generic interface to launch a kernel with event dependencies
Specific interface for a single event dependency on a specific command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclKernel), | intent(inout) | :: | kernel |
Focal kernel object to launch |
||
type(fclCommandQ), | intent(inout) | :: | cmdQ |
CmdQ on which to launch kernel |
||
type(fclEvent), | intent(in) | :: | event |
Event dependency for kernel |
Specific interface a single event dependency on the default command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclKernel), | intent(inout) | :: | kernel |
Focal kernel object to launch |
||
type(fclEvent), | intent(in) | :: | event |
Event dependency for kernel |
Specific interface for a multiple event dependencies on a specific command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclKernel), | intent(inout) | :: | kernel |
Focal kernel object to launch |
||
type(fclCommandQ), | intent(inout) | :: | cmdQ |
CmdQ on which to launch kernel |
||
type(fclEvent), | intent(in) | :: | eventList(:) |
Event dependency list for kernel |
Specific interface for a multiple event dependencies on the default command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclKernel), | intent(inout) | :: | kernel |
Focal kernel object to launch |
||
type(fclEvent), | intent(in) | :: | eventList(:) |
Event dependency list for kernel |
Create a integer local kernel argument object for launching kernels
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nElem |
No of array elements |
Returns local argument object
Create a float local kernel argument object for launching kernels
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nElem |
No of array elements |
Returns local argument object
Create a double local kernel argument object for launching kernels
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nElem |
No of array elements |
Returns local argument object
Enqueue a kernel with command arguments
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclKernel), | intent(inout), | target | :: | kernel |
Focal kernel object |
|
class(*), | intent(in), | optional, | target | :: | a0 |
Focal command queue or first kernel argument |
class(*), | intent(in), | optional, | target | :: | a1 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a2 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a3 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a4 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a5 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a6 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a7 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a8 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a9 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a10 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a11 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a12 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a13 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a14 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a15 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a16 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a17 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a18 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a19 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a20 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a21 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a22 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a23 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a24 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a25 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a26 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a27 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a28 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a29 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a30 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a31 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a32 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a33 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a34 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a35 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a36 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a37 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a38 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a39 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a40 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a41 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a42 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a43 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a44 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a45 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a46 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a47 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a48 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a49 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a50 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a51 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a52 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a53 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a54 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a55 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a56 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a57 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a58 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a59 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a60 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a61 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a62 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a63 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a64 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a65 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a66 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a67 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a68 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a69 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a70 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a71 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a72 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a73 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a74 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a75 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a76 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a77 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a78 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a79 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a80 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a81 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a82 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a83 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a84 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a85 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a86 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a87 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a88 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a89 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a90 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a91 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a92 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a93 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a94 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a95 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a96 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a97 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a98 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a99 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a100 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a101 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a102 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a103 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a104 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a105 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a106 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a107 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a108 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a109 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a110 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a111 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a112 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a113 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a114 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a115 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a116 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a117 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a118 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a119 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a120 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a121 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a122 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a123 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a124 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a125 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a126 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a127 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a128 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a129 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
Sets kernel arguments and parses argument list for optional cmdq and actual number of arguments.
This is helper routine used internally by focal. If you just want set kernel arguments
without launching a kernel, use fclSetKernelArgs
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclKernel), | intent(in), | target | :: | kernel |
Focal kernel object |
|
type(fclCommandQ), | intent(out), | pointer | :: | cmdq |
Returns a0 if it is cmdq, otherwise returns fclDefaultCommandQ |
|
integer, | intent(out) | :: | narg |
Returns the actual number of arguments passed |
||
class(*), | intent(in), | optional, | target | :: | a0 |
Focal command queue or first kernel argument |
class(*), | intent(in), | optional, | target | :: | a1 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a2 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a3 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a4 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a5 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a6 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a7 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a8 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a9 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a10 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a11 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a12 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a13 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a14 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a15 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a16 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a17 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a18 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a19 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a20 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a21 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a22 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a23 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a24 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a25 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a26 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a27 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a28 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a29 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a30 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a31 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a32 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a33 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a34 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a35 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a36 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a37 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a38 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a39 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a40 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a41 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a42 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a43 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a44 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a45 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a46 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a47 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a48 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a49 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a50 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a51 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a52 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a53 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a54 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a55 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a56 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a57 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a58 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a59 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a60 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a61 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a62 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a63 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a64 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a65 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a66 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a67 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a68 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a69 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a70 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a71 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a72 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a73 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a74 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a75 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a76 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a77 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a78 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a79 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a80 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a81 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a82 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a83 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a84 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a85 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a86 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a87 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a88 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a89 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a90 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a91 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a92 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a93 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a94 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a95 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a96 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a97 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a98 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a99 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a100 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a101 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a102 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a103 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a104 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a105 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a106 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a107 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a108 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a109 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a110 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a111 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a112 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a113 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a114 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a115 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a116 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a117 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a118 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a119 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a120 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a121 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a122 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a123 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a124 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a125 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a126 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a127 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a128 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a129 |
Subsequent kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
Set all kernel arguments at once without launching kernel.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclKernel), | intent(in), | target | :: | kernel |
Focal kernel object |
|
class(*), | intent(in), | optional, | target | :: | a0 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a1 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a2 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a3 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a4 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a5 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a6 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a7 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a8 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a9 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a10 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a11 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a12 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a13 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a14 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a15 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a16 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a17 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a18 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a19 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a20 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a21 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a22 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a23 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a24 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a25 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a26 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a27 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a28 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a29 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a30 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a31 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a32 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a33 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a34 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a35 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a36 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a37 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a38 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a39 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a40 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a41 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a42 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a43 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a44 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a45 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a46 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a47 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a48 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a49 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a50 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a51 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a52 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a53 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a54 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a55 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a56 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a57 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a58 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a59 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a60 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a61 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a62 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a63 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a64 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a65 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a66 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a67 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a68 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a69 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a70 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a71 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a72 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a73 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a74 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a75 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a76 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a77 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a78 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a79 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a80 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a81 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a82 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a83 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a84 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a85 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a86 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a87 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a88 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a89 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a90 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a91 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a92 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a93 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a94 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a95 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a96 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a97 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a98 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a99 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a100 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a101 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a102 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a103 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a104 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a105 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a106 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a107 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a108 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a109 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a110 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a111 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a112 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a113 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a114 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a115 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a116 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a117 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a118 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a119 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a120 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a121 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a122 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a123 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a124 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a125 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a126 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a127 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a128 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
class(*), | intent(in), | optional, | target | :: | a129 |
Kernel arguments. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
Set or change a single kernel argument
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclKernel), | intent(in) | :: | kernel |
Focal kernel object |
||
integer(kind=c_int32_t), | intent(in) | :: | argIndex |
Index of kernel argument to set |
||
class(*), | intent(in), | target | :: | argValue |
Value of kernel argument. Can be a scalar, an fclDeviceBuffer object, or an fclLocalArgument |
Release OpenCL memory associated with underlying kernel pointer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclKernel), | intent(inout) | :: | kernel |
Focal kernel object |
Generic interface to enqueue a command queue barrier Wait on device for all preceding queue events to complete before subsequent events can proceed.
Enqueue barrier on all events in command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(inout), | target | :: | cmdq |
Enqueue barrier on all events in default command queue
Generic interface to wait on host for events
Wait on host for all events in user-specified command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(in) | :: | cmdq |
Wait on host for all events in focal default command queue
Wait on host for all events in all queues in a queue pool
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQPool), | intent(in) | :: | qPool |
Wait on host for a specific event
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclEvent), | intent(in), | target | :: | event |
Wait on host for set of events
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclEvent), | intent(in), | target | :: | eventList(:) |
Light weight wrapper for clReleaseEvent (decrement reference count)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclEvent), | intent(in) | :: | event |
Focal event object to release |
Light weight wrapper for clRetainEvent (increment reference count)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclEvent), | intent(in) | :: | event |
Focal event object to retain |
Generic interface to set pre-requisite events for the next enqueued action. This does not append to any existing dependencies - it overwrites the dependency list.
Interface for specifying a single event dependency on specific cmdq
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | target | :: | cmdQ |
Command queue |
||
type(fclEvent), | intent(in) | :: | event |
Event dependency |
||
logical, | intent(in), | optional | :: | hold |
Hold dependency list: set to true to not automatically clear dependencies after enqueueing. Use for applying the same dependency to multiple commands. Default false. |
Interface for specifying a single event dependency on default cmdq
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclEvent), | intent(in) | :: | event |
Event dependency |
||
logical, | intent(in), | optional | :: | hold |
Hold dependency list: set to true to not automatically clear dependencies after enqueueing. Use for applying the same dependency to multiple commands. Default false. |
Interface for specifying a list of dependent events on specific cmdq
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | target | :: | cmdQ |
Command queue |
||
type(fclEvent), | intent(in) | :: | eventList(:) |
List of event dependencies |
||
logical, | intent(in), | optional | :: | hold |
Hold dependency list: set to true to not automatically clear dependencies after enqueueing. Use for applying the same dependency to multiple commands. Default false. |
Interface for specifying a list of dependent events on default cmdq
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclEvent), | intent(in) | :: | eventList(:) |
List of event dependencies |
||
logical, | intent(in), | optional | :: | hold |
Event dependency Hold dependency list: set to true to not automatically clear dependencies after enqueueing. Use for applying the same dependency to multiple commands. Default false. |
Called after every enqueue operation: Clear dependencies unless dependency hold is .true.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(inout) | :: | cmdq |
Generic interface to clear dependency list and reset dependency hold to .false.
Interface for specific command queue
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclCommandQ), | intent(inout) | :: | cmdq |
Interface for default command queueu
Generic interface to create a user event
Create user event in a specific context
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclContext), | intent(in) | :: | ctx |
Create user event in the default context
Set status of a user event
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclEvent), | intent(inout) | :: | event | |||
integer(kind=c_int32_t), | intent(in), | optional | :: | stat |
Enable profiling for multiple container (kernel/buffer) and add to profiler collection
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclProfiler), | intent(inout) | :: | profiler |
Profiler - collection of objects to profile |
||
integer, | intent(in) | :: | profileSize |
Number of events to save for profiling (allocation size) |
||
class(fclProfileContainer), | intent(inout), | target | :: | c0 |
Object (kernel/buffer) for which to enable profiling |
|
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c1 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c2 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c3 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c4 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c5 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c6 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c7 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c8 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c9 |
Subsequent objects (kernel/buffer) for which to enable profiling |
Enable profiling for multiple container (kernel/buffer) and add to the default profiler
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | profileSize |
Number of events to save for profiling (allocation size) |
||
class(fclProfileContainer), | intent(inout), | target | :: | c0 |
Object (kernel/buffer) for which to enable profiling |
|
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c1 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c2 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c3 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c4 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c5 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c6 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c7 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c8 |
Subsequent objects (kernel/buffer) for which to enable profiling |
class(fclProfileContainer), | intent(inout), | optional, | target | :: | c9 |
Subsequent objects (kernel/buffer) for which to enable profiling |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclEvent), | intent(in) | :: | eventList(:) |
Enable profiling on a specific container by allocating space to save events
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclProfileContainer), | intent(inout), | target | :: | container |
Container on which to enable profiling. This can be one of:
|
|
integer, | intent(in) | :: | profileSize |
Number of events to allocate space for |
||
type(fclProfiler), | intent(inout), | optional | :: | profiler |
Profiler collection object to which to add the kernel/buffer. |
If profiling is enabled for the container, save an event to it
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclProfileContainer), | intent(in) | :: | container |
Profiling container ( |
||
type(fclEvent), | intent(in) | :: | event |
Event to push to container |
||
integer, | intent(in), | optional | :: | type |
For buffer object events only, indicates transfer type |
Dump summary of profiler data for list of kernels to specific output unit
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclProfiler), | intent(in) | :: | profiler |
Profiler object containing collection of kernels & buffers to profile |
||
integer, | intent(in), | optional | :: | outputUnit |
Output unit to write summary data |
Dump summary of default profiler data for list of kernels to specific output unit
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in), | optional | :: | outputUnit |
Output unit to write summary data |
Dump summary of profile data for list of kernels to specific output unit
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | outputUnit |
Output unit to write summary data |
||
class(fclKernel), | intent(in) | :: | kernelList(:) |
List of kernels for which to dump profile data |
||
type(fclDevice), | intent(in) | :: | device |
Device on which the kernels were executed Needed for kernel work group info. |
Dump summary of profile data for list of buffers to specific output unit.
Three buffer list inputs are provided for different buffer types
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | outputUnit |
Output unit to write summary data. |
||
class(fclDeviceBuffer), | intent(in), | target | :: | bufferList1(:) |
List of buffers for which to dump profile data |
|
class(fclDeviceBuffer), | intent(in), | optional, | target | :: | bufferList2(:) |
List of buffers for which to dump profile data |
class(fclDeviceBuffer), | intent(in), | optional, | target | :: | bufferList3(:) |
List of buffers for which to dump profile data |
Writes a chrome://tracing data format for profiled events
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclProfiler), | intent(in) | :: | profiler |
Profiler collection object containing kernels/buffers that have been profiled |
||
character(len=*), | intent(in) | :: | filename |
Filename to which to write chrome://tracing format |
Writes a chrome://tracing data format for the default profiler
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | filename |
Filename to which to write chrome://tracing format |
Returns OpenCL compile options as interoperable string for debug mode
Debug routine: only executed for debug build.
Check the (default) context is initialised. Assumes uninitialised contexts have cl_context = -1.
Debug routine: only executed for debug build.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | descrip |
Description of program location for error output |
||
type(fclContext), | intent(in), | optional | :: | ctx |
Context to test. Uses fclDefaultContext if not present. |
Check a device object is valid Assumes uninitialised devices have cl_device_id = -1.
Debug routine: only executed for debug build.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclDevice), | intent(in) | :: | device |
Device object to check |
||
character(len=*), | intent(in) | :: | descrip |
Description of program location for error output |
Check that a device buffer object has been initialised.
Debug routine: only executed for debug build.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceBuffer), | intent(in) | :: | memObject | |||
character(len=*), | intent(in) | :: | descrip |
Check that a host buffer matches the size in bytes of a device buffer.
Debug routine: only executed for debug build.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceBuffer), | intent(in) | :: | memObject | |||
integer(kind=c_size_t), | intent(in) | :: | hostBytes | |||
character(len=*), | intent(in) | :: | descrip |
Check that a host buffer matches the size in bytes of a device buffer.
Debug routine: only executed for debug build.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(fclDeviceBuffer), | intent(in) | :: | memObject1 | |||
class(fclDeviceBuffer), | intent(in) | :: | memObject2 |
Check that number of actual args matches number of kernel args.
Debug routine: only executed for debug build.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclKernel), | intent(in) | :: | kernel | |||
integer, | intent(in) | :: | nArg |
Checks the types of arguments passed to kernels
Debug routine: only executed for debug build.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclKernel), | intent(in) | :: | kernel | |||
integer, | intent(in) | :: | argNo | |||
character(len=*), | intent(in) | :: | type |
Checks the address qualifier of arguments passed to kernels.
Debug routine: only executed for debug build.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclKernel), | intent(in) | :: | kernel | |||
integer, | intent(in) | :: | argNo | |||
character(len=*), | intent(in) | :: | qualifier |
Wait for an event to complete and check for successful completion. Throw runtime error if status is not CL_COMPLETE.
Debug routine: only executed for debug build.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(fclEvent), | intent(in), | target | :: | event |
Event object to check |
|
character(len=*), | intent(in), | optional | :: | descrip |
Description for debugging |
Retrieve kernel source linked as a binary resource. Use linker ld to include kernel source with: ld -r -b binary -o fclKernels.o fclKernels.cl (Object file MUST be called fclKernels.o, with no path) Then link resulting object file as normal
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=:), | intent(out), | allocatable | :: | kernelString |
Kernel source as fortran character string |
Allocate and fill character string from file
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | filename | |||
character(len=:), | intent(out), | allocatable | :: | sourceString |
Return copy of string with numerical characters removed
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | linei |
Input string |
Converted string output
Convert string to uppercase (for case-insensitive comparison)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | str |
convert non-printable characters to a space. AUTHOR: John S. Urban LICENSE: Public Domain
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | INSTR |
string that might contain nonprintable characters |
parse string into an array using specified delimiters AUTHOR: John S. Urban LICENSE: Public Domain
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | input_line | |||
character(len=:), | intent(out), | allocatable | :: | array(:) | ||
character(len=*), | intent(in), | optional | :: | delimiters | ||
character(len=*), | intent(in), | optional | :: | order | ||
character(len=*), | intent(in), | optional | :: | nulls |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=c_int32_t), | intent(in) | :: | errcode | |||
character(len=*), | intent(in) | :: | focalCall | |||
character(len=*), | intent(in) | :: | oclCall |
Type wrapper for openCL device objects
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=c_int64_t), | public | :: | cl_device_type |
Device type |
|||
character(len=:), | public, | allocatable | :: | name |
Device name |
||
integer(kind=c_int32_t), | public | :: | nComputeUnits |
Number of device compute units |
|||
integer(kind=c_int64_t), | public | :: | global_memory |
Total global memory, bytes |
|||
integer(kind=c_int32_t), | public | :: | clock_freq |
Max clock frequency, MHz |
|||
character(len=:), | public, | allocatable | :: | version |
OpenCL version |
||
character(len=:), | public, | allocatable | :: | extensions |
Supported OpenCL extensions |
||
type(fclPlatform), | public, | pointer | :: | platform |
Pointer to containing platform |
||
character(len=:), | public, | allocatable | :: | platformName |
Name of containing platform |
||
character(len=:), | public, | allocatable | :: | platformVendor |
Vendor of containing platform |
Type wrapper for openCL platform objects
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=:), | public, | allocatable | :: | profile |
OpenCL Profile string |
||
character(len=:), | public, | allocatable | :: | version |
OpenCL Version |
||
character(len=:), | public, | allocatable | :: | name |
Platform name |
||
character(len=:), | public, | allocatable | :: | vendor |
Platform vendor |
||
character(len=:), | public, | allocatable | :: | extensions |
Platform extensions |
||
integer, | public | :: | numDevice |
No. of devices |
|||
type(fclDevice), | public, | allocatable | :: | devices(:) |
Focal device objects |
Type wrapper for openCL context objects
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=c_intptr_t), | public | :: | cl_context | = | -1 |
openCL context pointer |
|
type(fclPlatform), | public | :: | platform |
Focal platform object |
Type wrapper for OpenCL event pointers
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=c_intptr_t), | public | :: | cl_event | = | -1 |
OpenCL event pointer |
final :: fclReleaseEvent | Decrement cl reference counter |
Type wrapper for openCL command queue objects
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | public | :: | blockingWrite | = | .true. |
Enable/disable blocking writes when copying from host to device |
|
logical, | public | :: | blockingRead | = | .true. |
Enable/disable block reads when copying from device to host |
|
type(fclEvent), | public | :: | lastWriteEvent |
Focal event object for the most recent write event (host-to-device) to be enqueued |
|||
type(fclEvent), | public | :: | lastReadEvent |
Focal event object for the most recent read event (device-to-host) to be enqueued |
|||
type(fclEvent), | public | :: | lastCopyEvent |
Focal event object for the most recent copy event (device-to-device) to be enqueued |
|||
type(fclEvent), | public | :: | lastKernelEvent |
Focal event object for the most recent kernel event to be enqueued |
|||
type(fclEvent), | public | :: | lastBarrierEvent |
Focal event object for the most recent barrier event to be enqueued |
|||
integer(kind=c_intptr_t), | public, | allocatable | :: | dependencyList(:) |
List of pre-requisite events for next enqueued action. All events in this list are used as dependencies for the next enqueued operation. At enqueueing, the list is cleared unless holdDependencies is .true. |
||
type(c_ptr), | public | :: | dependencyListPtr | = | C_NULL_PTR |
C pointer to dependency list. C_NULL_PTR when nDependency is zero. |
|
integer, | public | :: | nDependency | = | 0 |
Number of items in dependency list |
|
logical, | public | :: | holdDependencies | = | .false. |
Set to true to not automatically clear dependencies after enqueueing. Use for applying the same dependencies to multiple commands. Use fclClearDependencies to clear and reset. |
Collection of fclCommandQ objects with round-robin scheduling. Allows easy handling of multiple command queues for parallel kernels data transfers.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | length |
Number of command queues |
|||
type(fclCommandQ), | public, | allocatable | :: | queues(:) |
Array of command queues |
||
integer, | public | :: | idx | = | 1 |
Index of current command queue |
procedure , public , pass :: next => fclCommandQPool_Next Interface | Returns next scheduled queue in queue pool |
procedure , public , pass :: current => fclCommandQPool_Current Interface | Returns current scheduled queue in queue pool |
Type wrapper for openCL program objects
final :: fclReleaseProgram |
Wrapper type for implementing an array of pointers to kernel objects
Wrapper type for implementing an array of pointers to buffer objects
Helper type to collect objects (kernels and buffers) that are profiled to simply user code.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(fclDevice), | public | :: | device |
Device for which to dump profile data |
procedure , public , pass :: add => fclProfilerAdd_1 Subroutine |
Base container type for event profiling
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=:), | public, | allocatable | :: | profileName |
Descriptive name for output of profiling information |
||
logical, | public | :: | profilingEnabled | = | .false. |
Switch to enable saving of events for profiling |
|
type(fclEvent), | public, | pointer | :: | profileEvents(:) | => | NULL() |
Array of events for profiling |
integer, | public | :: | profileSize | = | 0 |
Allocation size of profileEvents(:) array |
|
integer, | public, | pointer | :: | nProfileEvent | => | NULL() |
Number of events saved to profileEvents(:) array |
integer, | public, | pointer | :: | profileEventType(:) | => | NULL() |
Integer for indicating type of buffer event |
procedure , public , pass :: pushProfileEvent => fclPushProfileEvent Interface |
Type wrapper for openCL kernel objects
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=:), | public, | allocatable | :: | profileName |
Descriptive name for output of profiling information |
||
logical, | public | :: | profilingEnabled | = | .false. |
Switch to enable saving of events for profiling |
|
type(fclEvent), | public, | pointer | :: | profileEvents(:) | => | NULL() |
Array of events for profiling |
integer, | public | :: | profileSize | = | 0 |
Allocation size of profileEvents(:) array |
|
integer, | public, | pointer | :: | nProfileEvent | => | NULL() |
Number of events saved to profileEvents(:) array |
integer, | public, | pointer | :: | profileEventType(:) | => | NULL() |
Integer for indicating type of buffer event |
character(len=:), | public, | allocatable | :: | name |
Kernel name |
||
integer(kind=c_int32_t), | public | :: | work_dim | = | 1 |
Number of work-range dimensions |
|
integer(kind=c_size_t), | public | :: | global_work_offset(3) | = | 0 |
Global work dimension offsets |
|
integer(kind=c_size_t), | public | :: | global_work_size(3) | = | 0 |
Global work-range dimensions |
|
integer(kind=c_size_t), | public | :: | local_work_size(3) | = | 0 |
Local work-group dimensions |
final :: fclReleaseKernel |
procedure , public , pass :: pushProfileEvent => fclPushProfileEvent Interface | |
procedure , public , pass :: setArgs => fclSetKernelArgs Interface | Set kernel arguments without launching |
procedure , public , pass :: launch => fclLaunchKernel Interface | Launch the kernel |
generic, public , :: launchAfter => launchKernelAfterEvent_1, launchKernelAfterEvent_2, launchKernelAfterEventList_1, launchKernelAfterEventList_2 | Launch a kernel with event dependencies |
Type wrapper for openCL memory objects
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=:), | public, | allocatable | :: | profileName |
Descriptive name for output of profiling information |
||
logical, | public | :: | profilingEnabled | = | .false. |
Switch to enable saving of events for profiling |
|
type(fclEvent), | public, | pointer | :: | profileEvents(:) | => | NULL() |
Array of events for profiling |
integer, | public | :: | profileSize | = | 0 |
Allocation size of profileEvents(:) array |
|
integer, | public, | pointer | :: | nProfileEvent | => | NULL() |
Number of events saved to profileEvents(:) array |
integer, | public, | pointer | :: | profileEventType(:) | => | NULL() |
Integer for indicating type of buffer event |
integer(kind=c_size_t), | public | :: | nBytes | = | -1 |
Size of buffer in bytes |
procedure , public , pass :: pushProfileEvent => fclPushProfileEvent Interface |
Type wrapper for memory objects representing int32
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=:), | public, | allocatable | :: | profileName |
Descriptive name for output of profiling information |
||
logical, | public | :: | profilingEnabled | = | .false. |
Switch to enable saving of events for profiling |
|
type(fclEvent), | public, | pointer | :: | profileEvents(:) | => | NULL() |
Array of events for profiling |
integer, | public | :: | profileSize | = | 0 |
Allocation size of profileEvents(:) array |
|
integer, | public, | pointer | :: | nProfileEvent | => | NULL() |
Number of events saved to profileEvents(:) array |
integer, | public, | pointer | :: | profileEventType(:) | => | NULL() |
Integer for indicating type of buffer event |
integer(kind=c_size_t), | public | :: | nBytes | = | -1 |
Size of buffer in bytes |
procedure , public , pass :: pushProfileEvent => fclPushProfileEvent Interface |
Type wrapper for memory objects representing float
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=:), | public, | allocatable | :: | profileName |
Descriptive name for output of profiling information |
||
logical, | public | :: | profilingEnabled | = | .false. |
Switch to enable saving of events for profiling |
|
type(fclEvent), | public, | pointer | :: | profileEvents(:) | => | NULL() |
Array of events for profiling |
integer, | public | :: | profileSize | = | 0 |
Allocation size of profileEvents(:) array |
|
integer, | public, | pointer | :: | nProfileEvent | => | NULL() |
Number of events saved to profileEvents(:) array |
integer, | public, | pointer | :: | profileEventType(:) | => | NULL() |
Integer for indicating type of buffer event |
integer(kind=c_size_t), | public | :: | nBytes | = | -1 |
Size of buffer in bytes |
procedure , public , pass :: pushProfileEvent => fclPushProfileEvent Interface |
Type wrapper for memory objects representing double
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=:), | public, | allocatable | :: | profileName |
Descriptive name for output of profiling information |
||
logical, | public | :: | profilingEnabled | = | .false. |
Switch to enable saving of events for profiling |
|
type(fclEvent), | public, | pointer | :: | profileEvents(:) | => | NULL() |
Array of events for profiling |
integer, | public | :: | profileSize | = | 0 |
Allocation size of profileEvents(:) array |
|
integer, | public, | pointer | :: | nProfileEvent | => | NULL() |
Number of events saved to profileEvents(:) array |
integer, | public, | pointer | :: | profileEventType(:) | => | NULL() |
Integer for indicating type of buffer event |
integer(kind=c_size_t), | public | :: | nBytes | = | -1 |
Size of buffer in bytes |
procedure , public , pass :: pushProfileEvent => fclPushProfileEvent Interface |
Type for specifying local kernel arguments. Instantiate with on of: fclLocalInt32, fclLocalFloat, fclLocalDouble
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=c_size_t), | public | :: | nBytes |
Size of local argument in bytes |
Type wrapper for local kernel arguments representing 32 bit integers
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=c_size_t), | public | :: | nBytes |
Size of local argument in bytes |
Type wrapper for local kernel arguments representing floats
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=c_size_t), | public | :: | nBytes |
Size of local argument in bytes |
Type wrapper for local kernel arguments representing doubles
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=c_size_t), | public | :: | nBytes |
Size of local argument in bytes |