EXECUTION_MODE
s are used, as a more sophisticated Device
preference mechanism is in place, see KernelManager
. Though Kernel.setExecutionMode(EXECUTION_MODE)
is still honored, the default EXECUTION_MODE is now AUTO
, which indicates that the KernelManager
will determine execution behaviours.
The execution mode ENUM enumerates the possible modes of executing a kernel. One can request a mode of execution using the values below, and query a kernel after it first executes to determine how it executed.
Aparapi supports 5 execution modes. Default is GPU.
Enum value | Execution |
---|---|
GPU | Execute using OpenCL on first available GPU device |
ACC | Execute using OpenCL on first available Accelerator device |
CPU | Execute using OpenCL on first available CPU device |
JTP | Execute using a Java Thread Pool (one thread spawned per available core) |
SEQ | Execute using a single loop. This is useful for debugging but will be less performant than the other modes |
To request that a kernel is executed in a specific mode, call Kernel.setExecutionMode(EXECUTION_MODE)
before the
kernel first executes.
int[] values = new int[1024]; // fill values array SquareKernel kernel = new SquareKernel(values); kernel.setExecutionMode(Kernel.EXECUTION_MODE.JTP); kernel.execute(values.length);
<<<<<<< HEAD:src/main/java/com/aparapi/Kernel.java
Alternatively, the property com.aparapi.executionMode
can be set to one of JTP,GPU,ACC,CPU,SEQ
when an application is launched.
java -classpath ....;aparapi.jar -Dcom.aparapi.executionMode=GPU MyApplication ======= Alternatively, the propertycom.amd.aparapi.executionMode
can be set to one ofJTP,GPU,ACC,CPU,SEQ
when an application is launched.java -classpath ....;aparapi.jar -Dcom.amd.aparapi.executionMode=GPU MyApplication >>>>>>> b118aad... added method to set execution mode without any fallback:com.amd.aparapi/src/java/com/amd/aparapi/Kernel.javaGenerally setting the execution mode is not recommended (it is best to let Aparapi decide automatically) but the option provides a way to compare a kernel's performance under multiple execution modes.
@Deprecated public static enum Kernel.EXECUTION_MODE extends Enum<Kernel.EXECUTION_MODE>
Enum Constant and Description |
---|
ACC
Deprecated.
The value representing execution on an accelerator device (Xeon Phi) via OpenCL.
|
AUTO
Deprecated.
|
CPU
Deprecated.
The value representing execution on a CPU device via OpenCL.
|
GPU
Deprecated.
The value representing execution on a GPU device via OpenCL.
|
JTP
Deprecated.
The value representing execution on a Java Thread Pool.
|
NONE
Deprecated.
A dummy value to indicate an unknown state.
|
SEQ
Deprecated.
The value representing execution sequentially in a single loop.
|
Modifier and Type | Method and Description |
---|---|
boolean |
isOpenCL()
Deprecated.
|
static Kernel.EXECUTION_MODE |
valueOf(String name)
Deprecated.
Returns the enum constant of this type with the specified name.
|
static Kernel.EXECUTION_MODE[] |
values()
Deprecated.
Returns an array containing the constants of this enum type, in
the order they are declared.
|
public static final Kernel.EXECUTION_MODE AUTO
public static final Kernel.EXECUTION_MODE NONE
public static final Kernel.EXECUTION_MODE GPU
public static final Kernel.EXECUTION_MODE CPU
Note not all OpenCL implementations support OpenCL compute on the CPU.
public static final Kernel.EXECUTION_MODE JTP
By default one Java thread is started for each available core and each core will execute globalSize/cores
work items.
This creates a total of globalSize%cores
threads to complete the work.
Choose suitable values for globalSize
to minimize the number of threads that are spawned.
public static final Kernel.EXECUTION_MODE SEQ
This is meant to be used for debugging a kernel.
public static final Kernel.EXECUTION_MODE ACC
public static Kernel.EXECUTION_MODE[] values()
for (Kernel.EXECUTION_MODE c : Kernel.EXECUTION_MODE.values()) System.out.println(c);
public static Kernel.EXECUTION_MODE valueOf(String name)
name
- the name of the enum constant to be returned.IllegalArgumentException
- if this enum type has no constant with the specified nameNullPointerException
- if the argument is nullpublic boolean isOpenCL()
Copyright © 2016 Syncleus. All rights reserved.