Package com.aparapi.internal.kernel
Class KernelRunner
java.lang.Object
com.aparapi.internal.jni.KernelRunnerJNI
com.aparapi.internal.kernel.KernelRunner
public class KernelRunner extends KernelRunnerJNI
The class is responsible for executing
The
The
Kernel
implementations. The
KernelRunner
is the real workhorse for Aparapi. Each Kernel
instance creates a single
KernelRunner
to encapsulate state and to help coordinate interactions between the Kernel
and it's execution logic.The
KernelRunner
is created lazily as a result of calling Kernel.execute()
. A this
time the ExecutionMode
is consulted to determine the default requested mode. This will dictate how
the KernelRunner
will attempt to execute the Kernel
- Author:
- gfrost
- See Also:
Kernel.execute(int _globalSize)
-
Field Summary
Fields Modifier and Type Field Description static boolean
BINARY_CACHING_DISABLED
static int
CANCEL_STATUS_FALSE
static int
CANCEL_STATUS_TRUE
static int
PASS_ID_COMPLETED_EXECUTION
static int
PASS_ID_PREPARING_EXECUTION
-
Constructor Summary
Constructors Constructor Description KernelRunner(Kernel _kernel)
Create a KernelRunner for a specific Kernel instance. -
Method Summary
Modifier and Type Method Description boolean
allocateArrayBufferIfFirstTimeOrArrayChanged(KernelArg arg, Object newRef, int objArraySize, int totalStructSize, int totalBufferSize)
Helper method that manages the memory allocation for storing the kernel argument data, so that the data can be exchanged between the host and the OpenCL device.void
cancelMultiPass()
void
cleanUpArrays()
void
dispose()
Kernel.dispose()
delegates toKernelRunner.dispose()
which delegates todisposeJNI()
to actually close JNI data structures.Kernel
execute(String _entrypoint, Range _range, int _passes)
void
get(Object array)
Enqueue a request to return this array from the GPU.int
getCancelState()
int
getCurrentPass()
Returns the index of the current pass, or one of two special constants with negative values to indicate special progress states.List<ProfileInfo>
getProfileInfo()
boolean
isExecuting()
True while any of theexecute()
methods are in progress.boolean
isExplicit()
void
put(Object array)
Tag this array so that it is explicitly enqueued before the kernel is executed.void
setExplicit(boolean _explicit)
String
toString()
-
Field Details
-
BINARY_CACHING_DISABLED
public static boolean BINARY_CACHING_DISABLED -
PASS_ID_PREPARING_EXECUTION
public static final int PASS_ID_PREPARING_EXECUTION- See Also:
getCurrentPass()
, Constant Field Values
-
PASS_ID_COMPLETED_EXECUTION
public static final int PASS_ID_COMPLETED_EXECUTION- See Also:
getCurrentPass()
, Constant Field Values
-
CANCEL_STATUS_FALSE
public static final int CANCEL_STATUS_FALSE- See Also:
- Constant Field Values
-
CANCEL_STATUS_TRUE
public static final int CANCEL_STATUS_TRUE- See Also:
- Constant Field Values
-
-
Constructor Details
-
KernelRunner
Create a KernelRunner for a specific Kernel instance.- Parameters:
_kernel
-
-
-
Method Details
-
cleanUpArrays
public void cleanUpArrays() -
dispose
public void dispose()Kernel.dispose()
delegates toKernelRunner.dispose()
which delegates todisposeJNI()
to actually close JNI data structures.- See Also:
KernelRunnerJNI.disposeJNI(long)
-
allocateArrayBufferIfFirstTimeOrArrayChanged
public boolean allocateArrayBufferIfFirstTimeOrArrayChanged(KernelArg arg, Object newRef, int objArraySize, int totalStructSize, int totalBufferSize)Helper method that manages the memory allocation for storing the kernel argument data, so that the data can be exchanged between the host and the OpenCL device.- Parameters:
arg
- the kernel argumentnewRef
- the actual Java data instanceobjArraySize
- the number of elements in the Java arraytotalStructSize
- the size of each target array elementtotalBufferSize
- the total buffer size including memory alignment- Returns:
- true, if internal buffer had to be allocated or reallocated holding the data
- false, if buffer didn't change and is already allocated
-
execute
-
toString
-
getCancelState
public int getCancelState() -
cancelMultiPass
public void cancelMultiPass() -
getCurrentPass
public int getCurrentPass()Returns the index of the current pass, or one of two special constants with negative values to indicate special progress states. Those constants arePASS_ID_PREPARING_EXECUTION
to indicate that the Kernel has started executing but not reached the initial pass, orPASS_ID_COMPLETED_EXECUTION
to indicate that execution is complete (possibly due to early termination viacancelMultiPass()
), i.e. the Kernel is idle.PASS_ID_COMPLETED_EXECUTION
is also returned before the first execution has been invoked.This can be used, for instance, to update a visual progress bar.
- See Also:
execute(String, Range, int)
-
isExecuting
public boolean isExecuting()True while any of theexecute()
methods are in progress. -
get
Enqueue a request to return this array from the GPU. This method blocks until the array is available.
Note thatKernel.put(type [])
calls will delegate to this call.
Package public- Parameters:
array
- It is assumed that this parameter is indeed an array (of int, float, short etc).- See Also:
Kernel.get(int[] arr)
,Kernel.get(float[] arr)
,Kernel.get(double[] arr)
,Kernel.get(long[] arr)
,Kernel.get(char[] arr)
,Kernel.get(boolean[] arr)
-
getProfileInfo
-
put
Tag this array so that it is explicitly enqueued before the kernel is executed.
Note thatKernel.put(type [])
calls will delegate to this call.
Package public- Parameters:
array
- It is assumed that this parameter is indeed an array (of int, float, short etc).- See Also:
Kernel.put(int[] arr)
,Kernel.put(float[] arr)
,Kernel.put(double[] arr)
,Kernel.put(long[] arr)
,Kernel.put(char[] arr)
,Kernel.put(boolean[] arr)
-
setExplicit
public void setExplicit(boolean _explicit) -
isExplicit
public boolean isExplicit()
-