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:LoadListingRequirement
14 extends: cwl:ProcessRequirement
19 doc: "Always 'LoadListingRequirement'"
28 symbols: [no_listing, shallow_listing, deep_listing]
30 - name: cwltool:Secrets
33 extends: cwl:ProcessRequirement
37 doc: "Always 'Secrets'"
44 List one or more input parameters that are sensitive (such as passwords)
45 which will be deliberately obscured from logging.
50 - name: cwltool:TimeLimit
53 extends: cwl:ProcessRequirement
55 Set an upper limit on the execution time of a CommandLineTool or
56 ExpressionTool. A tool execution which exceeds the time limit may
57 be preemptively terminated and considered failed. May also be
58 used by batch systems to make scheduling decisions.
62 doc: "Always 'TimeLimit'"
69 The time limit, in seconds. A time limit of zero means no
70 time limit. Negative time limits are an error.
72 - name: RunInSingleContainer
74 extends: cwl:ProcessRequirement
77 Indicates that a subworkflow should run in a single container
78 and not be scheduled as separate steps.
82 doc: "Always 'arv:RunInSingleContainer'"
94 local_output_dir: Use regular file system local to the compute node.
95 There must be sufficient local scratch space to store entire output;
96 specify this with `outdirMin` of `ResourceRequirement`. Files are
97 batch uploaded to Keep when the process completes. Most compatible, but
98 upload step can be time consuming for very large files.
100 keep_output_dir: Use writable Keep mount. Files are streamed to Keep as
101 they are written. Does not consume local scratch space, but does consume
102 RAM for output buffers (up to 192 MiB per file simultaneously open for
103 writing.) Best suited to processes which produce sequential output of
104 large files (non-sequential writes may produced fragmented file
105 manifests). Supports regular files and directories, does not support
106 special files such as symlinks, hard links, named pipes, named sockets,
110 - name: RuntimeConstraints
112 extends: cwl:ProcessRequirement
115 Set Arvados-specific runtime hints.
119 doc: "Always 'arv:RuntimeConstraints'"
126 Size of file data buffer for Keep mount in MiB. Default is 256
127 MiB. Increase this to reduce cache thrashing in situations such as
128 accessing multiple large (64+ MiB) files at the same time, or
129 performing random access on a large file.
130 - name: outputDirType
133 Preferred backing store for output staging. If not specified, the
134 system may choose which one to use.
136 - name: PartitionRequirement
138 extends: cwl:ProcessRequirement
141 Select preferred compute partitions on which to run jobs.
145 doc: "Always 'arv:PartitionRequirement'"
154 - name: APIRequirement
156 extends: cwl:ProcessRequirement
159 Indicates that process wants to access to the Arvados API. Will be granted
160 limited network access and have ARVADOS_API_HOST and ARVADOS_API_TOKEN set
165 doc: "Always 'arv:APIRequirement'"
170 - name: IntermediateOutput
172 extends: cwl:ProcessRequirement
175 Specify desired handling of intermediate output collections.
179 doc: "Always 'arv:IntermediateOutput'"
186 If the value is greater than zero, consider intermediate output
187 collections to be temporary and should be automatically
188 trashed. Temporary collections will be trashed `outputTTL` seconds
189 after creation. A value of zero means intermediate output should be
190 retained indefinitely (this is the default behavior).
192 Note: arvados-cwl-runner currently does not take workflow dependencies
193 into account when setting the TTL on an intermediate output
194 collection. If the TTL is too short, it is possible for a collection to
195 be trashed before downstream steps that consume it are started. The
196 recommended minimum value for TTL is the expected duration of the
199 - name: ReuseRequirement
201 extends: cwl:ProcessRequirement
204 Enable/disable work reuse for current process. Default true (work reuse enabled).
208 doc: "Always 'arv:ReuseRequirement'"
215 - name: WorkflowRunnerResources
217 extends: cwl:ProcessRequirement
220 Specify memory or cores resource request for the CWL runner process itself.
224 doc: "Always 'arv:WorkflowRunnerResources'"
230 doc: Minimum RAM, in mebibytes (2**20)
231 jsonldPredicate: "https://w3id.org/cwl/cwl#ResourceRequirement/ramMin"
234 doc: Minimum cores allocated to cwl-runner
235 jsonldPredicate: "https://w3id.org/cwl/cwl#ResourceRequirement/coresMin"
239 Size of collection metadata cache for the workflow runner, in
240 MiB. Default 256 MiB. Will be added on to the RAM request
241 when determining node size to request.
242 jsonldPredicate: "http://arvados.org/cwl#RuntimeConstraints/keep_cache"
246 The container image containing the correct version of
247 arvados-cwl-runner to use when invoking the workflow on
250 - name: ClusterTarget
252 extends: cwl:ProcessRequirement
255 Specify where a workflow step should run
259 doc: "Always 'arv:ClusterTarget'"
265 doc: The cluster to run the container
268 doc: The project that will own the container requests and intermediate collections
271 - name: OutputStorageClass
273 extends: cwl:ProcessRequirement
276 Specify the storage class to be used for intermediate and final output
280 doc: "Always 'arv:StorageClassHint"
284 intermediateStorageClass:
290 doc: One or more storages classes
297 doc: One or more storages classes
302 Define an arvados metadata property that will be set on a
303 container request or output collection.
307 doc: The property key
308 - name: propertyValue
310 doc: The property value
313 - name: ProcessProperties
315 extends: cwl:ProcessRequirement
318 Specify metadata properties that will be set on the submitted
319 container request associated with this workflow or step.
323 doc: "Always 'arv:ProcessProperties"
330 mapSubject: propertyName
331 mapPredicate: propertyValue
334 - name: cwltool:CUDARequirement
336 extends: cwl:ProcessRequirement
339 Require support for NVIDA CUDA (GPU hardware acceleration).
343 doc: 'cwltool:CUDARequirement'
350 Minimum CUDA version to run the software, in X.Y format. This
351 corresponds to a CUDA SDK release. When running directly on
352 the host (not in a container) the host must have a compatible
353 CUDA SDK (matching the exact version, or, starting with CUDA
354 11.3, matching major version). When run in a container, the
355 container image should provide the CUDA runtime, and the host
356 driver is injected into the container. In this case, because
357 CUDA drivers are backwards compatible, it is possible to
358 use an older SDK with a newer driver across major versions.
360 See https://docs.nvidia.com/deploy/cuda-compatibility/ for
362 cudaComputeCapability:
367 CUDA hardware capability required to run the software, in X.Y
370 * If this is a single value, it defines only the minimum
371 compute capability. GPUs with higher capability are also
374 * If it is an array value, then only select GPUs with compute
375 capabilities that explicitly appear in the array.
377 type: ['null', int, cwl:Expression]
380 Minimum number of GPU devices to request. If not specified,
381 same as `cudaDeviceCountMax`. If neither are specified,
384 type: ['null', int, cwl:Expression]
386 Maximum number of GPU devices to request. If not specified,
387 same as `cudaDeviceCountMin`.
389 - name: UsePreemptible
391 extends: cwl:ProcessRequirement
394 Specify a workflow step should opt-in or opt-out of using preemptible (spot) instances.
398 doc: "Always 'arv:UsePreemptible"
402 usePreemptible: boolean
404 - name: OutputCollectionProperties
406 extends: cwl:ProcessRequirement
409 Specify metadata properties that will be set on the output
410 collection associated with this workflow or step.
414 doc: "Always 'arv:OutputCollectionProperties"
421 mapSubject: propertyName
422 mapPredicate: propertyValue
425 - name: KeepCacheType
432 ram_cache: Keep blocks will be cached in RAM only.
434 disk_cache: Keep blocks will be cached to disk and
435 memory-mapped. The disk cache leverages the kernel's virtual
436 memory system so "hot" data will generally still be kept in
439 - name: KeepCacheTypeRequirement
441 extends: cwl:ProcessRequirement
444 Choose keep cache strategy.
448 doc: "'arv:KeepCacheTypeRequirement'"
452 - name: keepCacheType
455 Whether Keep blocks loaded by arv-mount should be kept in RAM
456 only or written to disk and memory-mapped. The disk cache
457 leverages the kernel's virtual memory system so "hot" data will
458 generally still be kept in RAM.
460 - name: OutOfMemoryRetry
462 extends: cwl:ProcessRequirement
465 Detect when a failed tool run may have run out of memory, and
466 re-submit the container with more RAM.
470 doc: "'arv:OutOfMemoryRetry"
474 - name: memoryErrorRegex
477 A regular expression that will be used on the text of stdout
478 and stderr produced by the tool to determine if a failed job
479 should be retried with more RAM. By default, searches for the
480 substrings 'bad_alloc' and 'OutOfMemory'.
481 - name: memoryRetryMultipler
484 If the container failed on its first run, re-submit the
485 container with the RAM request multiplied by this factor.