HPC批处理容器

我们面临的问题是很多人想在我们的高性能计算集群上运行不同的科学软件。 每个用户都需要一组不同的库和库版本,我们不希望pipe理员每次都要处理新库的安装。

所以我们考虑使用Docker容器来实现这个目的:每个用户都可以使用他需要的用户空间库来设置自己的容器,然后使用这个容器运行批处理作业。

但是,正如我所看到的那样,docker主要关注的是服务而不是批处理作业 :通常你有一个(例如web)服务,这个服务可以运行所有的时间和处理新的工作(这基本上总是与新的input数据),只要他们进来。

我们的情况是完全不同的:一个新用户应该能够设置应该在硬件上运行的新任务,并且应该为他的批处理工作获得一定数量的资源。

因此,我想知道是否已经有针对这种情况的解决scheme。 我看了一下https://github.com/NERSC/shifter ,似乎正朝着正确的方向发展,但发展已经停滞。

我们广泛使用docker集装箱进行临时批量作业。 在我们的情况下,这是一个密集的3D成像处理,但每个容器处理一个“批”数以千计的相关图像。 我们发现这个用例工作得很好,没有理由不使用docker。

devise解决scheme时,需要考虑以下几点:

  1. 所有提交代码的人都信任? 如果没有,你需要长时间思考安全。
  2. 确保使用-rm标志运行容器,以便容器在完成后自动移除。
  3. 运行本地dockerregistry,以便1)不依赖于外部registry,2)可以configuration批处理服务器以根据需要自动拖动图像。
  4. 跟踪一段时间内未使用的图像,并从服务器上清除它们。

ActiveEon的ProActive是最初为HPC集群devise的批处理调度程序。 它包含一个在容器中启动任务的function。 本文通过Docker容器中的R包进行演示。

关于devise问题:

  1. 可以使用RBAC将工作stream存储在目录中。 可以创build一个安全的进程来添加它们。
  2. 执行任务后,容器将自动移除。
  3. 如所须。
  4. 有可能build立一个工作stream程来定期跟踪和从不同的资源中删除未使用的图像。

最后,如果需要更多容量,另一个function是在云(公共或私有)中爆发的能力。