问题描述
我有一个C ++代码,需要独立运行100,000次,每次都有不同的参数集。在小型笔记本电脑上,一次运行大约需要20分钟。我想使用云基础架构(如GCP)并行执行。在合理的时间内(1-2天)可以完成此任务的最佳方法是什么。
解决方法
我的第一种方法是简单地启动一堆VM,并使用GNU parallel处理不同的任务。您可以跟踪哪些运行失败,然后稍后重新运行。请参见--joblog
和--resume
或--resume-failed
选项。
稍微高级一点的方法将使用明确的任务队列,并记录成功和失败的任务。这种方法将使用Sidekiq,Celery或Minion之类的东西。
如果您不愿意或无法做很多繁重的工作,请查看Google Cloud Tasks。您可以将C ++代码与调用它的小型Python或NodeJS包装器打包在一起,然后根据需要设置工作池,然后将任务的不同配置提交为任务。