wiki:AppPlanConfig

Version 3 (modified by Christian Beer, 12 years ago) (diff)

restructured documentation

Configurable app plan functions

This is an alternative way of defining app plan functions. It allows you to define these functions using an XML config file (project/cgi-bin/plan_class_spec.xml) with the following format:

General

  <name>XXXXX</name>

Name of the plan class, string without spaces, exact match

  <type>X</type>

type of the plan class, May be specified numerically (0, 1, 2) or as token (CPU, CUDA, ATI)
Currently understood: 0 = CPU and 1 = CUDA
Suggested, but not supported in current code: 2 = ATI, 3 = NVidia OpenCL, 4 = ATI OpenCL.

  <project_prefs_tag>

name of a tag from the project specific preferences that can be used to enable or disable this plan-class (scanned as double, 0.0 if not present)

  <project_prefs_min>

min value this tag can have to allow this plan-class

  <project_prefs_max>

max value this tag can have to allow this plan-class

  <gpu_utilization_tag>

name of a tag from the project specific preferences which values is a custom GPU utilization factor supplied by the user. The 'ngpus' setting of the plan class will be multiplied by this when present.

  <cpu_feature>

CPU features required for this plan class. Multiple tags allowed. All features lowercase (e.g. sse2, altivec). Both host.p_features and host.p_model are checked

  <os_version>

regexp specifying an OS version (should work for all OS that way)

  <speedup>

speedup over standard "sequential" App for this platform

  <peak_flops_factor>

correct the (theoretical) peak flops by that factor (assumed efficency)

CUDA only options

  <min_cuda_compcap>

CUDA only: minimum compute capability

  <max_cuda_compcap>

CUDA only: maximum compute capability, set to 9999 to exclude emulation device

  <min_cuda_version>

CUDA only: minimum CUDA version

  <max_cuda_version>

CUDA only: maximum CUDA version

OpenCL only options

  <min_opencl_version>

OpenCL only: minimum required device version
IMPORTANT NOTE: the NVidia display driver version is only reported by Windows core clients. Mac and Linux clients only report the CUDA version. The display driver version will allways be 0 (zero) for these clients, hence this should NEVER be used to restrict a plan class for platforms other than Windows.
NOTE 2: Reporting driver version has been added to recent Mac Clients (6.13.x)
NOTE 3: the driver_version may be specified negative. In this case its absolute value is compared to the client's driver version, but only if this is reported. If the Client doesn't report a driver version, this check is skipped.

GPU only options

  <min_driver_version>

GPU only: minimum display driver version

  <max_driver_version>

GPU only: minimum display driver version

  <min_gpu_ram_mb>

GPU only: minimum required amount of video RAM (in MB)

  <gpu_ram_used_mb>

GPU only: video RAM a task will actually use (in MB)

  <avg_ncpus>
  <max_ncpus>
  <ngpus>

GPU only: number / fraction of GPUs used, defaults 0 for CPU plan classes, 1 otherwise. If ngpus < 0, set ncudas by the fraction of the total video RAM a tasks would take

  <gpu_flops>
  <cpu_flops>

GPU only: if both gpu_flops and cpu_flops are set, compute hu.avg_ncpus = avg_ncpus * sreq.host.p_fpops / cpu_flops and projected_flops = cp.peak_flops / gpu_flops * speedup + 1.0 / hu.avg_ncpus;

Deprecated options

  <min_macos_version>

Deprecated, use <os_version> instead. Min Darwin version required for this plan class, 0 = no check, numeric: 1000 * major version + 100 * minor version + patchlevel

  <max_macos_version>

Deprecated, use <os_version> instead. Max Darwin version allowed for this plan class, 0 = no limit

Example file

Here is an example of three plan class specifications, two CPU, one CUDA.

<plan_classes>

  <plan_class>
    <name>                CUDA32          </name>
    <min_cuda_compcap>    100             </min_cuda_compcap>
    <max_cuda_compcap>    9999            </max_cuda_compcap>
    <min_cuda_version>    3020            </min_cuda_version>
    <min_driver_version>  26000           </min_driver_version>
    <max_driver_version>  99999           </max_driver_version>
    <min_gpu_ram_mb>      300             </min_gpu_ram_mb>
    <gpu_ram_used_mb>     300             </gpu_ram_used_mb>
    <speedup>             10.0            </speedup>
    <avgncpus>            0.2             </avgncpus>
  </plan_class>

  <plan_class>
    <name>                BRP3SSE         </name>
    <cpu_feature>         sse             </cpu_feature>
    <project_prefs_tag>   also_run_cpu    </project_prefs_tag>
    <project_prefs_max>   0               </project_prefs_max>
  </plan_class>

  <plan_class>
    <name>                ALTIVEC         </name>
    <cpu_feature>         altivec         </cpu_feature>
    <min_macos_version>   80000           </min_macos_version>
    <speedup>             1.4             </speedup>
  </plan_class>

</plan_classes>