Package com.jogamp.opencl
Class CLKernel
- java.lang.Object
-
- com.jogamp.opencl.CLObject
-
- com.jogamp.opencl.CLKernel
-
- All Implemented Interfaces:
AutoCloseable
,CLResource
,AutoCloseable
,Cloneable
public class CLKernel extends CLObject implements Cloneable
High level abstraction for an OpenCL Kernel. A kernel is a function declared in a program. A kernel is identified by thekernel
qualifier applied to any function in a program. A kernel object encapsulates the specifickernel
function declared in a program and the argument values to be used when executing thiskernel
function. CLKernel is not threadsafe.- Author:
- Michael Bien, et al.
- See Also:
CLProgram.createCLKernel(java.lang.String)
,CLProgram.createCLKernels()
-
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description CLKernel
clone()
Returns a new instance of this kernel with uninitialized arguments.void
close()
Deprecated.This method is not intended to be called from client code.boolean
equals(Object obj)
long[]
getCompileWorkGroupSize(CLDevice device)
Returns the work-group size specified by the__attribute__((reqd_work_group_size(X, Y, Z)))
qualifier in kernel sources.long
getLocalMemorySize(CLDevice device)
Returns the amount of local memory in bytes being used by a kernel.CLProgram
getProgram()
long
getWorkGroupSize(CLDevice device)
Returns the work group size for this kernel on the given device.int
hashCode()
boolean
isForce32BitArgsEnabled()
boolean
isReleased()
Returns true ifCLResource.release()
has been called.int
position()
Returns the argument index used in the relative putArt(...) methods.CLKernel
putArg(double value)
CLKernel
putArg(float value)
CLKernel
putArg(int value)
CLKernel
putArg(long value)
CLKernel
putArg(short value)
CLKernel
putArg(CLMemory<?> value)
CLKernel
putArgs(CLMemory<?>... values)
CLKernel
putNullArg(int size)
void
release()
Releases all resources of this kernel from its context.CLKernel
rewind()
Resets the argument index to 0.CLKernel
setArg(int argumentIndex, double value)
CLKernel
setArg(int argumentIndex, float value)
CLKernel
setArg(int argumentIndex, int value)
CLKernel
setArg(int argumentIndex, long value)
CLKernel
setArg(int argumentIndex, short value)
CLKernel
setArg(int argumentIndex, CLMemory<?> value)
CLKernel
setArgs(CLMemory<?>... values)
CLKernel
setArgs(Object... values)
CLKernel
setForce32BitArgs(boolean force)
Forces double and long arguments to be passed as float and int to the OpenCL kernel.CLKernel
setNullArg(int argumentIndex, int size)
String
toString()
-
Methods inherited from class com.jogamp.opencl.CLObject
getContext, getID, getPlatform
-
-
-
-
Field Detail
-
name
public final String name
-
numArgs
public final int numArgs
-
-
Method Detail
-
putArg
public CLKernel putArg(short value)
-
putArg
public CLKernel putArg(int value)
-
putArg
public CLKernel putArg(long value)
-
putArg
public CLKernel putArg(float value)
-
putArg
public CLKernel putArg(double value)
-
putNullArg
public CLKernel putNullArg(int size)
-
rewind
public CLKernel rewind()
Resets the argument index to 0.
-
position
public int position()
Returns the argument index used in the relative putArt(...) methods.
-
setArg
public CLKernel setArg(int argumentIndex, short value)
-
setArg
public CLKernel setArg(int argumentIndex, int value)
-
setArg
public CLKernel setArg(int argumentIndex, long value)
-
setArg
public CLKernel setArg(int argumentIndex, float value)
-
setArg
public CLKernel setArg(int argumentIndex, double value)
-
setNullArg
public CLKernel setNullArg(int argumentIndex, int size)
-
setForce32BitArgs
public CLKernel setForce32BitArgs(boolean force)
Forces double and long arguments to be passed as float and int to the OpenCL kernel. This can be used in applications which want to mix kernels with different floating point precision.
-
getProgram
public CLProgram getProgram()
-
isForce32BitArgsEnabled
public boolean isForce32BitArgsEnabled()
- See Also:
setForce32BitArgs(boolean)
-
getLocalMemorySize
public long getLocalMemorySize(CLDevice device)
Returns the amount of local memory in bytes being used by a kernel. This includes local memory that may be needed by an implementation to execute the kernel, variables declared inside the kernel with the__local
address qualifier and local memory to be allocated for arguments to the kernel declared as pointers with the__local
address qualifier and whose size is specified with clSetKernelArg. If the local memory size, for any pointer argument to the kernel declared with the__local
address qualifier, is not specified, its size is assumed to be 0.
-
getWorkGroupSize
public long getWorkGroupSize(CLDevice device)
Returns the work group size for this kernel on the given device. This provides a mechanism for the application to query the work-group size that can be used to execute a kernel on a specific device given by device. The OpenCL implementation uses the resource requirements of the kernel (register usage etc.) to determine what this work-group size should be.
-
getCompileWorkGroupSize
public long[] getCompileWorkGroupSize(CLDevice device)
Returns the work-group size specified by the__attribute__((reqd_work_group_size(X, Y, Z)))
qualifier in kernel sources. If the work-group size is not specified using the above attribute qualifiernew long[]{(0, 0, 0)}
is returned. The returned array has always three elements.
-
release
public void release()
Releases all resources of this kernel from its context.- Specified by:
release
in interfaceCLResource
-
clone
public CLKernel clone()
Returns a new instance of this kernel with uninitialized arguments.
-
close
@Deprecated public final void close()
Deprecated.This method is not intended to be called from client code.Implementation detail, satisfyingAutoCloseable
. Might be remove as soon we have extension methods, but shall validate with Java 1.5 specs.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceAutoCloseable
- See Also:
AutoCloseable
-
isReleased
public boolean isReleased()
Description copied from interface:CLResource
Returns true ifCLResource.release()
has been called.- Specified by:
isReleased
in interfaceCLResource
-
-