Changes between Version 46 and Version 47 of AppPlanSpec


Ignore:
Timestamp:
Jul 26, 2018, 12:31:28 PM (6 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AppPlanSpec

    v46 v47  
    2525All elements except '''<name>''' are optional.
    2626In version numbers, M is major, m is minor, R is release.
     27
     28=== General ===
    2729
    2830 <name>X</name> :: the name of the plan class; must obey the [AppPlan#Planclassnames rules for names].
     
    6567 <max_batch>x</max_batch>:: maximum allowed batch #
    6668
    67 === Fields for multicore apps ===
    68 
    69 The following distinguishes between "logical" and "physical" CPUs.
     69=== Hyperthreading ===
     70
     71We distinguish between "logical" and "physical" CPUs.
    7072Processors with hyperthreading have two logical CPUs per physical CPUs.
    71 Pre-7.14 versions of the BOINC client measure and report only the number N of logical CPUs.
    72 For these clients, we conservatively assume that the number of physical CPUs is max(1, N/2).
    73 
     73The numbers of usable logical and physical CPUs on a host are denoted NLC and NPC.
    7474"Usable" refers to computing preferences,
    7575which allow volunteers to limit the % of CPUs (logical and physical) that can be used.
    76 NUL and NUP denote the number of usable logical and physical CPUs on the host.
    77 
    78 Floating-point intensive apps should express their parallelism in terms of physical CPUs,
     76
     77Pre-7.14 versions of the BOINC client measure and report only NLC.
     78For these clients, we conservatively assume that NPC is max(1, N/2).
     79
     80 <physical_threads>[0|1]</physical_threads> :: If set, each application thread uses a physical CPU;
     81   the default is logical CPU.
     82
     83Floating-point intensive apps should use this,
    7984since pairs of logical CPUs generally share an FPU.
    80 VM-based apps should do so as well, since VMWare may refuse to create a VM with more than NUP threads.
    81 
    82  <min_ncpus>N</min_ncpus> :: run only on hosts with NUL >= N.
    83  <min_ncpus_phys>N</min_ncpus_phys> :: run only on hosts with NUP >= N.
    84  <max_threads>N [M]</max_threads>:: Use min(N, NUL-M) logical CPUs (if not specified, M is zero).
    85  <max_threads_phys>N [M]</max_threads_phys>:: Use min(N, NUP-M) physical CPUs (if not specified, M is zero).
     85Multi-thread VM-based apps should do so as well, since VMWare may refuse to create a VM with more threads than NPC.
     86
     87=== Multithread apps ===
     88
     89By default, apps are assumed to use 1 thread.
     90Plan classes for apps that use multiple threads (possibly a variable number, depending on the host)
     91use the following elements.
     92
     93If '''<physical_threads>''' is set, NCPUS refers to NPC, otherwise to NLC.
     94
     95 <min_ncpus>N</min_ncpus> :: run only on hosts with NCPUS >= N.
     96 <max_threads>N [M]</max_threads>:: Use min(N, NCPUS-M) threads (if not specified, M is zero).
    8697 <nthreads_cmdline>0|1</nthreads_cmdline>:: if set, pass command-line args '''--nthreads N'''
    87   to the app, where N is the number of logical CPUs to use.
     98  to the app, where N is the number of threads to use.
    8899 <mem_usage_base_mb>X</mem_usage_base_mb>::
    89100 <mem_usage_per_cpu_mb>Y</mem_usage_per_cpu_mb>:: if specified, estimated memory usage (in Megabytes) is X + NY,
    90101   where N is the number of CPUs used.
    91102   Pass this to the app with a '''--memory_size_mb X''' command-line arg.
     103
     104Implementation note: the number of CPUs sent to the client,
     105and visible to the user, is in terms of logical CPUs.
     106if '''<physical_threads>''' is set, and the host is hyperthreaded,
     107this will be twice the number of threads.
    92108   
    93 === Fields for GPU apps ===
     109=== GPU apps ===
    94110
    95111Required:
     
    120136 <max_gpu_peak_speed>X</max_gpu_peak_speed>:: use only GPUs with peak speed <= X
    121137
    122 === Fields for AMD/ATI GPU apps ===
     138=== AMD/ATI GPU apps ===
    123139
    124140 <need_ati_libs/>:: Require libraries named "ati", not "amd".
     
    157173}}}
    158174
    159 === Fields for NVIDIA GPU apps ===
     175=== NVIDIA GPU apps ===
    160176
    161177 <min_nvidia_compcap>MMmm</min_nvidia_compcap>:: minimum compute capability
    162178 <max_nvidia_compcap>MMmm</max_nvidia_compcap>:: maximum compute capability
    163179
    164 === Fields for CUDA apps ===
     180=== CUDA apps ===
    165181
    166182 <min_cuda_version>MMmmm</min_cuda_version>:: minimum CUDA version
    167183 <max_cuda_version>MMmmm</max_cuda_version>:: maximum CUDA version
    168184
    169 === Fields for OpenCL apps (CPU or GPU) ===
     185=== OpenCL apps (CPU or GPU) ===
    170186
    171187 <opencl/>:: include this for OpenCL applications
     
    174190 <double_precision_fp/>:: reject plan class if the device doesn't support double precision floating point math
    175191
    176 === Fields for OpenCL apps for AMD ===
     192=== OpenCL apps for AMD ===
    177193 <min_opencl_driver_revision>MMmmrr</min_opencl_driver_revision>:: minimum OpenCL driver revision
    178194 <max_opencl_driver_revision>MMmmrr</max_opencl_driver_revision>:: maximum OpenCL driver revision
    179195
    180 === Fields for !VirtualBox apps ===
     196=== !VirtualBox apps ===
    181197
    182198 <virtualbox/> :: !VirtualBox application; send only to hosts with !VirtualBox installed
     
    191207they'll be run single-core.
    192208
    193 === Fields for Android apps ===
     209=== Android apps ===
    194210 <min_android_version>MMmmrr>:: minimum Android version (e.g. 4.1.2 = 40102)
    195211 <max_android_version>MMmmrr>:: maximum Android version
    196212
    197 === Fields for non-compute-intensive apps ===
     213=== Non-compute-intensive apps ===
    198214 <avg_ncpus>x</avg_ncpus>:: average # CPUs used.  Use for non-compute-intensive apps;
    199215   for others it's calculated for you.