🐓
CWL の requirements 一巡り: WorkReuse
この記事は CWL Advent Calendar 2020 の14日目の記事です。
Common Workflow Language (CWL) では、ワークフロー実行処理系が満たさなければならない機能以外にも、Process requirements と呼ばれる optional features についても標準化が行われています[1]。
今回は CWL v1.2 で定義されている WorkReuse
について簡単な解説を行います。また、各サンプルは可能な限り公式の準拠度テストで用いられているファイルを引用します。
対象読者
- CWL をかじったことがあるけど
requirements
はよくわからない人- つまり中級者以上が対象です。
- 初心者は CWL Advent Calendar 2020 の初日の記事へ Go!
例
Conformance test #216: tests/timelimit3.cwl:
class: CommandLineTool
cwlVersion: v1.2
inputs: []
outputs: []
requirements:
ToolTimeLimit:
timelimit: 0
WorkReuse:
enableReuse: false
baseCommand: [sleep, "15"]
解析に使われる多くのツールは、同じ入力パラメータであれば同じ出力を行うことが期待でき、CWL もデフォルトでは同じ仮定を行います。WorkReuse
はこれを明示的に制御するための Process requirement です。上の例では、WorkReuse.enableReuse
に false
を設定することで(デフォルトは true
)、このツールが出力結果等をキャッシュできないことを表しています。
cwltool などの一部の処理系では、WorkReuse.enableReuse
が true
の場合には、同じワークフローやツール定義を実行した際に、以前の実行結果を再利用することで、ワークフローの実行速度を改善する機能が組み込まれています[2]。
Discussion