2014-11-14 61 views
0

我试图利用跨多个不同计算机的多处理,其中pathos似乎是geared towards:“Pathos是异构计算的框架,它主要提供配置和启动并行计算的通信机制跨异质资源“。然而,在查看文档时,我对如何启动和运行集群感到不知所措。我期望:使用Pathos进行分布式集群的Python多处理

  1. 使用安全身份验证设置远程服务器或远程服务器组。
  2. 安全地连接远程服务器。
  3. 使用标准多处理程序包(如本相关问题中的pseudocode)中的直接API(如pool.map)在远程服务器和本地计算机中的所有CPU上映射任务。

我没有看到(1)的示例,但我不明白为(2)提供的tunnel example。该示例实际上并未连接到本地主机上的现有服务。我还想知道是否/如何要求此通信使用某种防止其他人连接到服务器的密码/密钥。我知道这使用SSH认证,但是缺少一个预先存在的密钥,只保证流量不会在通过Internet时被读取,但不会阻止其他人劫持服务器。

回答

2

我是pathos作者。基本上,对于(1)您可以使用pathos.pp通过套接字连接连接到另一台计算机。 pathos.pppathos.multiprocessing具有几乎完全相同的API,但使用pathos.pp时,您可以设置要连接的远程主机的地址和端口,在设置Pool时使用关键字servers

但是,如果要与SSH建立安全连接,最好建立一个SSH隧道连接(如在您链接的示例中),然后将localhost和本地端口号传递给servers关键字Pool。然后这将通过ssh隧道连接到远程pp-worker。请参阅: https://github.com/uqfoundation/pathos/blob/master/examples/test_ppmap2.pyhttp://www.cacr.caltech.edu/~mmckerns/pathos.html

最后,如果你正在使用pathos.pp与远程服务器,如上述,你应该已经在做(3)。然而,它可以更高效(对于一组足够平行的作业),您可以嵌套并行地图...所以首先使用​​在服务器之间构建一个并行地图​​,然后使用并行地图调用N -way作业在pathos.multiprocessing.ProcessingPool里面你用pathos.pp映射的函数。这将尽量减少远程连接的通信。

另外,如果您有ssh-agent为您工作,则不需要提供SSH密码。请参阅:http://mah.everybody.org/docs/ssh。 Pathos假设跨越远程服务器的并行地图,你将有ssh-agent工作,并且每次有连接时你都不需要输入你的密码。

编辑:在此处添加示例代码:Python Multiprocessing with Distributed Cluster