'localization_optional' 优化功能
适用于Cromwell 33及以上版本。
范围
'localization_optional'优化可以应用于任务中包含文件的单个输入声明,特别是File和File?值以及任何包含它们的复杂类型。
通过识别任务成功运行不需要本地化的文件,该优化可以帮助您节省时间和成本。
条件
优化信号向Cromwell表明,某个任务的编写方式满足以下条件:
- 如果Cromwell本地化了指定的文件输入,任务将正常工作
- 例如,如果文件已针对本地Docker化执行环境进行了本地化。
并且:
- 即使Cromwell未本地化相同的文件输入,该任务仍将正常工作
- 例如,文件仍保留在云对象存储中,命令是使用其URL而非本地路径构建的。
对文件本地化的影响
如果backend已设置为遵循localization_optional,Cromwell将选择不本地化相应的文件输入。
对调用缓存的影响:
无!
标记为可选本地化的文件在调用缓存时仍与其他File输入的处理方式完全相同。
语言支持
WDL 1.0 (或更高版本)
在WDL 1.0的task中,可以通过在任务的parameter_meta部分的输入条目中添加localization_optional字段来指定此优化。以下是一个示例:
task nio_task {
input {
File foo_file
File bar_file
}
parameter_meta {
foo_file: {
description: "a foo file",
localization_optional: true
}
bar_file: {
description: "a bar file"
}
}
command <<<
# This tool must work for **BOTH** local file paths **AND** object store URL values:
java -jar my_tool_1.jar ~{foo_file}
# Because the optimization is not applied to 'bar_file' in parameter_meta, this file **WILL** be localized:
java -jar my_tool_2.jar ~{bar_file}
>>>
}
后端支持
此优化目前仅适用于Pipelines API (GCE)后端的本地化。