= 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/trunk/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. 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