= 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 :: !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 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 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 MMmmrr:: minimum !VirtualBox version MMmmrr:: maximum !VirtualBox version :: 64-bit application