1 # Copyright (C) The Arvados Authors. All rights reserved.
3 # SPDX-License-Identifier: Apache-2.0
5 $base: "http://arvados.org/cwl#"
7 cwl: "https://w3id.org/cwl/cwl#"
8 cwltool: "http://commonwl.org/cwltool#"
10 - $import: https://w3id.org/cwl/CommonWorkflowLanguage.yml
12 - name: cwltool:Secrets
15 extends: cwl:ProcessRequirement
19 doc: "Always 'Secrets'"
26 List one or more input parameters that are sensitive (such as passwords)
27 which will be deliberately obscured from logging.
32 - name: RunInSingleContainer
34 extends: cwl:ProcessRequirement
37 Indicates that a subworkflow should run in a single container
38 and not be scheduled as separate steps.
42 doc: "Always 'arv:RunInSingleContainer'"
54 local_output_dir: Use regular file system local to the compute node.
55 There must be sufficient local scratch space to store entire output;
56 specify this with `outdirMin` of `ResourceRequirement`. Files are
57 batch uploaded to Keep when the process completes. Most compatible, but
58 upload step can be time consuming for very large files.
60 keep_output_dir: Use writable Keep mount. Files are streamed to Keep as
61 they are written. Does not consume local scratch space, but does consume
62 RAM for output buffers (up to 192 MiB per file simultaneously open for
63 writing.) Best suited to processes which produce sequential output of
64 large files (non-sequential writes may produced fragmented file
65 manifests). Supports regular files and directories, does not support
66 special files such as symlinks, hard links, named pipes, named sockets,
70 - name: RuntimeConstraints
72 extends: cwl:ProcessRequirement
75 Set Arvados-specific runtime hints.
79 doc: "Always 'arv:RuntimeConstraints'"
86 Size of file data buffer for Keep mount in MiB. Default is 256
87 MiB. Increase this to reduce cache thrashing in situations such as
88 accessing multiple large (64+ MiB) files at the same time, or
89 performing random access on a large file.
93 Preferred backing store for output staging. If not specified, the
94 system may choose which one to use.
96 - name: PartitionRequirement
98 extends: cwl:ProcessRequirement
101 Select preferred compute partitions on which to run jobs.
105 doc: "Always 'arv:PartitionRequirement'"
114 - name: APIRequirement
116 extends: cwl:ProcessRequirement
119 Indicates that process wants to access to the Arvados API. Will be granted
120 limited network access and have ARVADOS_API_HOST and ARVADOS_API_TOKEN set
125 doc: "Always 'arv:APIRequirement'"
130 - name: IntermediateOutput
132 extends: cwl:ProcessRequirement
135 Specify desired handling of intermediate output collections.
139 doc: "Always 'arv:IntermediateOutput'"
146 If the value is greater than zero, consider intermediate output
147 collections to be temporary and should be automatically
148 trashed. Temporary collections will be trashed `outputTTL` seconds
149 after creation. A value of zero means intermediate output should be
150 retained indefinitely (this is the default behavior).
152 Note: arvados-cwl-runner currently does not take workflow dependencies
153 into account when setting the TTL on an intermediate output
154 collection. If the TTL is too short, it is possible for a collection to
155 be trashed before downstream steps that consume it are started. The
156 recommended minimum value for TTL is the expected duration of the
159 - name: WorkflowRunnerResources
161 extends: cwl:ProcessRequirement
164 Specify memory or cores resource request for the CWL runner process itself.
168 doc: "Always 'arv:WorkflowRunnerResources'"
174 doc: Minimum RAM, in mebibytes (2**20)
175 jsonldPredicate: "https://w3id.org/cwl/cwl#ResourceRequirement/ramMin"
178 doc: Minimum cores allocated to cwl-runner
179 jsonldPredicate: "https://w3id.org/cwl/cwl#ResourceRequirement/coresMin"
183 Size of collection metadata cache for the workflow runner, in
184 MiB. Default 256 MiB. Will be added on to the RAM request
185 when determining node size to request.
186 jsonldPredicate: "http://arvados.org/cwl#RuntimeConstraints/keep_cache"
190 The container image containing the correct version of
191 arvados-cwl-runner to use when invoking the workflow on
194 - name: ClusterTarget
196 extends: cwl:ProcessRequirement
199 Specify where a workflow step should run
203 doc: "Always 'arv:ClusterTarget'"
209 doc: The cluster to run the container
212 doc: The project that will own the container requests and intermediate collections
214 - name: OutputStorageClass
216 extends: cwl:ProcessRequirement
219 Specify the storage class to be used for intermediate and final output
223 doc: "Always 'arv:StorageClassHint"
227 intermediateStorageClass:
233 doc: One or more storages classes
240 doc: One or more storages classes
245 Define a property that will be set on the submitted container
246 request associated with this workflow or step.
250 doc: The property key
251 - name: propertyValue
253 doc: The property value
256 - name: ProcessProperties
258 extends: cwl:ProcessRequirement
261 Specify metadata properties that will be set on the submitted
262 container request associated with this workflow or step.
266 doc: "Always 'arv:ProcessProperties"
273 mapSubject: propertyName
274 mapPredicate: propertyValue
277 - name: cwltool:CUDARequirement
279 extends: cwl:ProcessRequirement
282 Require support for NVIDA CUDA (GPU hardware acceleration).
286 doc: 'cwltool:CUDARequirement'
293 Minimum CUDA version to run the software, in X.Y format. This
294 corresponds to a CUDA SDK release. When running directly on
295 the host (not in a container) the host must have a compatible
296 CUDA SDK (matching the exact version, or, starting with CUDA
297 11.3, matching major version). When run in a container, the
298 container image should provide the CUDA runtime, and the host
299 driver is injected into the container. In this case, because
300 CUDA drivers are backwards compatible, it is possible to
301 use an older SDK with a newer driver across major versions.
303 See https://docs.nvidia.com/deploy/cuda-compatibility/ for
305 cudaComputeCapability:
310 CUDA hardware capability required to run the software, in X.Y
313 * If this is a single value, it defines only the minimum
314 compute capability. GPUs with higher capability are also
317 * If it is an array value, then only select GPUs with compute
318 capabilities that explicitly appear in the array.
320 type: ['null', int, cwl:Expression]
323 Minimum number of GPU devices to request. If not specified,
324 same as `cudaDeviceCountMax`. If neither are specified,
327 type: ['null', int, cwl:Expression]
329 Maximum number of GPU devices to request. If not specified,
330 same as `cudaDeviceCountMin`.
332 type: ['null', long, cwl:Expression]
335 Amount of VRAM to request, in mebibytes (2**20)
338 - name: ROCmRequirement
340 extends: cwl:ProcessRequirement
343 Require support for AMD ROCm (GPU hardware acceleration).
347 doc: 'arv:ROCmRequirement'
354 Compatible ROCm driver version, in X.Y format, e.g. "6.2".
360 Compatible GPU architecture/ROCm LLVM targets, e.g. "gfx1100".
362 type: ['null', int, cwl:Expression]
365 Minimum number of GPU devices to request. If not specified,
366 same as `rocmDeviceCountMax`. If neither are specified,
369 type: ['null', int, cwl:Expression]
371 Maximum number of GPU devices to request. If not specified,
372 same as `rocmDeviceCountMin`.
374 type: [long, cwl:Expression]
377 Amount of VRAM to request, in mebibytes (2**20).
379 - name: UsePreemptible
381 extends: cwl:ProcessRequirement
384 Specify a workflow step should opt-in or opt-out of using preemptible (spot) instances.
388 doc: "Always 'arv:UsePreemptible"
392 usePreemptible: boolean
394 - name: OutputCollectionProperties
396 extends: cwl:ProcessRequirement
399 Specify metadata properties that will be set on the output
400 collection associated with this workflow or step.
404 doc: "Always 'arv:OutputCollectionProperties"
411 mapSubject: propertyName
412 mapPredicate: propertyValue
415 - name: KeepCacheType
422 ram_cache: Keep blocks will be cached in RAM only.
424 disk_cache: Keep blocks will be cached to disk and
425 memory-mapped. The disk cache leverages the kernel's virtual
426 memory system so "hot" data will generally still be kept in
429 - name: KeepCacheTypeRequirement
431 extends: cwl:ProcessRequirement
434 Choose keep cache strategy.
438 doc: "'arv:KeepCacheTypeRequirement'"
442 - name: keepCacheType
445 Whether Keep blocks loaded by arv-mount should be kept in RAM
446 only or written to disk and memory-mapped. The disk cache
447 leverages the kernel's virtual memory system so "hot" data will
448 generally still be kept in RAM.
450 - name: OutOfMemoryRetry
452 extends: cwl:ProcessRequirement
455 Detect when a failed tool run may have run out of memory, and
456 re-submit the container with more RAM.
460 doc: "'arv:OutOfMemoryRetry"
464 - name: memoryErrorRegex
467 A regular expression that will be used on the text of stdout
468 and stderr produced by the tool to determine if a failed job
469 should be retried with more RAM. By default, searches for the
470 substrings 'bad_alloc' and 'OutOfMemory'.
471 - name: memoryRetryMultiplier
474 If the container failed on its first run, re-submit the
475 container with the RAM request multiplied by this factor.
476 - name: memoryRetryMultipler
479 Deprecated misspelling of "memoryRetryMultiplier". Kept only
480 for backwards compatability, don't use this.