🐓
CWL の requirements 一巡り: ResourceRequirement
この記事は CWL Advent Calendar 2020 の22日目の記事です。
Common Workflow Language (CWL) では、ワークフロー実行処理系が満たさなければならない機能以外にも、Process requirements と呼ばれる optional features についても標準化が行われています[1]。
今回は CWL v1.2 で定義されている ResourceRequirement
について簡単な解説を行います。また、各サンプルは可能な限り公式の準拠度テストで用いられているファイルを引用します。
対象読者
- CWL をかじったことがあるけど
requirements
はよくわからない人- つまり中級者以上が対象です。
- 初心者は CWL Advent Calendar 2020 の初日の記事へ Go!
例
Conformance test #120: tests/dynresreq.cwl:
#!/usr/bin/env cwl-runner
class: CommandLineTool
cwlVersion: v1.2
requirements:
ResourceRequirement:
coresMin: $(inputs.special_file.size)
coresMax: $(inputs.special_file.size)
inputs:
special_file: File
outputs:
output:
type: stdout
baseCommand: echo
stdout: cores.txt
arguments: [ $(runtime.cores) ]
special_file:
class: File
path: special_file
入力ファイル special_file
の情報 (今回はファイルサイズしか利用しません)
$ ls -l tests/special_file | awk '{ print $5 }' # ファイルサイズのみ表示
2
ResourceRequirement
を用いて、ツール実行に割り当てる CPU のコア数やメモリ量、ストレージ容量などを制御することができます。上の例はかなりトリッキー(かつ実用的ではない)ですが、coresMin
および coresMax
に、入力ファイルのサイズ (inputs.special_file.size
) を指定しています。この例では入力ファイル tests/special_file
のサイズ 2 がツールで利用できるコア数として指定されます。
Discussion