= 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's
'''cgi-bin''' directory.
== Examples ==
An example configuration file is [http://boinc.berkeley.edu/trac/browser/boinc/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
:: !VirtualBox application
x :: requires at least X CPUs (may be fractional)
x:: use at most this many CPUs
x:: average # CPUs used. Use for non-compute-intensive apps;
for others it's calculated for you.
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 name matches the given regular expression
x :: a required CPU feature (such as sse3). You can include more than one.
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 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.
Fields for AMD/ATI Gpu apps:
:: Require libraries named "ati", not "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.
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 !VirtualBox apps
MMmmrr:: minimum !VirtualBox version
MMmmrr:: maximum !VirtualBox version
:: 64-bit application