= Specifying plan classes in XML =
You can specify plan classes using an XML configuration file with the format
{{{
... specification of a plan class
... more plan class specifications
}}}
Name this file '''plan_class_spec.xml''' and put it in your project directory.
This will '''replace''' the built in plan classes!
== Examples ==
An example configuration file is [http://boinc.berkeley.edu/trac/browser/boinc-v2/sched/plan_class_spec.xml.sample here].
This file specifies the [AppPlan predefined plan classes].
== Specification format ==
The specification of a plan class has the following format.
All elements except '''''' are optional.
In version numbers, M is major, m is minor, R is release.
X :: the name of the plan class
x:: multiply projected FLOPS by this factor.
Use this to favor one class over another.
For example, if you have both SSE and non-SSE versions, use 1.1 and 1.0 respectively.
regex:: use only hosts whose operating system version matches the given regular expression
x:: a required CPU feature (such as sse3). You can include more than one.
regex:: only sends the app version to hosts with host.serialnum field that matches the given regular expression.
The following lets you use a project preference to decide whether to use the app version:
x:: the name of the tag
x:: the contents must match this regular expression
Fields for multicore apps:
x :: run only on hosts with at least X usable CPUs.
x:: use at most this many CPUs
Fields for GPU apps:
X:: the GPU type ('''nvidia''', '''amd''', or '''intel''')
x:: the fraction of total FLOPs that are done by the CPU.
This is used to calculate CPU usage and estimated FLOPS.
x:: The minimum amount of GPU RAM.
This is needed because older clients report total RAM
but not available RAM.
x:: require this much available GPU RAM
x:: scale GPU peak speed by this (default 1).
x:: how many GPUs will be used
x:: minimum display driver version.
AMD driver versions are represented as MMmmRRRR.
NVIDIA driver versions are represented as MMMmm.
x:: maximum display driver version
:: CUDA application (NVIDIA)
:: CAL application (AMD)
:: OpenCL application
x:: you can use a project-specific preferences to let users
scale the # of GPUs used.
This is the tag name.
0|1:: send this version only to hosts without OpenCL capability
Fields for AMD/ATI GPU apps:
:: Require libraries named "ati", not "amd".
:: Require libraries named "amd".
You can verify which DLLs your application is linked against using
[http://www.dependencywalker.com/ Dependency Walker] against your application.
If your executable contains DLL names prefixed with 'ati', use this option.
These flags are usually not needed for OpenCL apps.
N ::
N ::
Min and max CAL targets:
{{{
typedef enum CALtargetEnum {
CAL_TARGET_600, /**< R600 GPU ISA */
CAL_TARGET_610, /**< RV610 GPU ISA */
CAL_TARGET_630, /**< RV630 GPU ISA */
CAL_TARGET_670, /**< RV670 GPU ISA */
CAL_TARGET_7XX, /**< R700 class GPU ISA */
CAL_TARGET_770, /**< RV770 GPU ISA */
CAL_TARGET_710, /**< RV710 GPU ISA */
CAL_TARGET_730, /**< RV730 GPU ISA */
CAL_TARGET_CYPRESS, /**< CYPRESS GPU ISA */
CAL_TARGET_JUNIPER, /**< JUNIPER GPU ISA */
CAL_TARGET_REDWOOD, /**< REDWOOD GPU ISA */
CAL_TARGET_CEDAR, /**< CEDAR GPU ISA */
CAL_TARGET_RESERVED0,
CAL_TARGET_RESERVED1,
CAL_TARGET_WRESTLER, /**< WRESTLER GPU ISA */
CAL_TARGET_CAYMAN, /**< CAYMAN GPU ISA */
CAL_TARGET_KAUAI, /** added by me **/
CAL_TARGET_BARTS, /**< BARTS GPU ISA */
CAL_TARGET_TURKS, /** added by me **/
CAL_TARGET_CAICOS /** added by me **/
} CALtarget;
}}}
Fields for NVIDIA GPU apps:
MMmm:: minimum compute capability
MMmm:: maximum compute capability
Fields for CUDA apps
MMmmm:: minimum CUDA version
MMmmm:: maximum CUDA version
Fields for OpenCL apps
MMmm:: minimum OpenCL version
MMmm:: maximum OpenCL version
Fields for OpenCL apps for AMD
MMmmrr:: minimum OpenCL driver revision
MMmmrr:: maximum OpenCL driver revision
Fields for !VirtualBox apps
:: !VirtualBox application; send only to hosts with !VirtualBox installed
MMmmrr:: minimum !VirtualBox version
MMmmrr:: maximum !VirtualBox version
:: 64-bit application.
:: send only to hosts with enabled VM hardware acceleration.
Note: !VirtualBox apps can be multicore (set and ).
However, when sent to hosts without enabled VM hardware acceleration,
they'll be run single-core.
Fields for non-compute-intensive apps:
x:: average # CPUs used. Use for non-compute-intensive apps;
for others it's calculated for you.