Parallel processing condor中的并行处理

Parallel processing condor中的并行处理,parallel-processing,distributed-computing,condor,Parallel Processing,Distributed Computing,Condor,我有一个java程序,可以处理800个图像 我决定使用Condor作为分布式计算的平台,目标是我可以将这些图像分割到可用的节点->得到处理->将结果合并回来 假设我有4个节点。我想将处理过程划分为每个节点上的200个图像,并将最终结果合并回给我 我试着正常执行它,将它作为java程序提交,并声明requirements=Machine=。。(说明所有节点)。但它似乎不起作用 如何划分处理并并行执行它?HTCondor绝对可以帮助您,但您可能需要自己做一些工作:-) 我们会想到两种可能的方法:作业

我有一个java程序,可以处理800个图像

我决定使用Condor作为分布式计算的平台,目标是我可以将这些图像分割到可用的节点->得到处理->将结果合并回来

假设我有4个节点。我想将处理过程划分为每个节点上的200个图像,并将最终结果合并回给我

我试着正常执行它,将它作为java程序提交,并声明requirements=Machine=。。(说明所有节点)。但它似乎不起作用


如何划分处理并并行执行它?

HTCondor绝对可以帮助您,但您可能需要自己做一些工作:-)

我们会想到两种可能的方法:作业数组和DAG应用程序

作业数组:从HTCondor的示例5中可以看到,可以使用
queue
命令提交多个作业。例如,作业文件底部的队列800将向HTCondor池提交800个作业

在这种情况下,人们所做的是使用文件名约定组织要处理的数据,并在作业文件中利用该约定。例如,您可以将图像重命名为
img_0.jpg,img_1.jpg。。。img_799.jpg
(可能使用符号链接,而不是重命名实际文件),然后按照以下行使用作业文件:

Executable = /path/to/my/script
Arguments = /path/to/data/dir/img_$(Process)
Queue 800
当800个作业运行时,
$(进程)
自动分配相应进程ID的值(即从0到799的整数)。这意味着您的代码将拾取要处理的正确图像


DAG:另一种方法是以简单的方式组织处理。在这种情况下,您可以使用预处理脚本(
script pre
在DAG文件中输入)来组织输入数据(可能创建适当命名的符号链接)。真正的工作就像上面的例子一样。

Condor对您的程序了解不够,无法跨节点自动分解您的问题。你会想要发送4个condor任务,每个任务处理200个图像。是的,我想这是唯一的方法,因为我的计划中没有编写程序来自动完成任务。无论如何,谢谢你的意见!