是否有最适合分布式游戏树遍历的文件系统?

时间:2017-08-29 16:44:01

标签: amazon-web-services google-cloud-platform mpi

我一直关注分布式游戏树遍历的this paper,并且(在其他人的帮助下)尝试制作软件树遍历器的Python / mpi4py克隆,以解决双人游戏抽象策略游戏。 / p>

首先,Wikipedia provides a breif description关于如何解决"一场比赛。

记住已经解决的结果是一种常见的优化,因此不需要进一步的树遍历。由于计算机集群不能轻易地在彼此之间共享结果,因此已经采取各种方法来解决该问题。本文中的方法(Transposition Table Driven Work Scheduling)基本上如下工作:

  1. 为每台计算机1到n提供一个ID(我刚使用标准的MPI排名)
  2. 在任何特定点,计算机都可以获得一个位置。检查位置是在查找表中还是平凡地完成。如果是,则发回结果值,否则生成孩子。
  3. 散列每个子位置,使它们具有1到n的关联值。将每个职位发送到"更正"带有哈希值的计算机。
  4. 重复直到初始位置已经解决。
  5. 正如报纸甚至提到的那样,这种方法有点矛盾,具有令人难以置信的高通信率。

    以下是问题:

    在一台计算机上似乎工作正常。然后我在学校的集群上进行了一些测试,遇到了一些严重的问题。解决像TicTacToe这样的游戏非常糟糕,经常在"调试模式" (4个节点,20个核心,15分钟时间限制)。

    我将TicTacToe解决方案数据库保存到他们称之为"用户目录" (更多可以是found here)。这与"刮擦"相反。通常用于存储数据的目录。当我这样做时,TicTacToe的数据库在几秒钟内就解决了。

    我注意到"刮擦"使用的"Lustre FS"空间似乎是“对等”#34的糟糕选择。应用:

      

    虽然Lustre文件系统可以在许多工作环境中运行,但它   不一定是所有应用程序的最佳选择。这是最好的   适合超过单个服务器容量的用途   虽然在某些用例中提供了Lustre文件系统可以执行   单个服务器比其他文件系统更好,因为它强大   锁定和数据一致性。

         

    Lustre文件系统目前不是特别适合   "对等网络"运行客户端和服务器的使用模型   由于缺乏,每个共享少量存储的同一节点   Lustre软件级别的数据复制。在这种用途中,如果有的话   客户端/服务器失败,那么存储在该节点上的数据将不会   可以访问,直到节点重新启动。

    我可能对分布式计算没有足够的把握,但似乎Lustre FS可能不会客观地适合这类问题。不幸的是,我使用的集群被锁定使用Lustre FS。另一种选择是使用Google Cloud Engine或AWS来完成任务,但我对某些问题感到困惑:

    1. 很多抽象似乎吓到我了。所有这些云平台都提供了可扩展的解决方案"这通常涉及负载平衡"这不仅是不必要的,而且对算法有害。 (必须将位置发送到正确的计算机,以便快速查找它们)。 Google Cloud Engine或AWS是否足以让这种算法有效运行?
    2. 我应该使用哪种文件系统? Google Cloud Engine推荐使用NFS或Gluster,但我不确定。这篇论文已经过时了,似乎并没有使用任何特别的东西。 AWS或Google Cloud Engine是否为此类任务提供了适当的文件系统?

1 个答案:

答案 0 :(得分:0)

没有任何代码,也没有关于如何使用文件系统的描述,很难提供一些有价值的帮助。 无论如何,如果我在行之间阅读

  • 你建立一个"数据库"解决方案
  • 这个"数据库"是在文件系统上实现的
  • 添加条目是文件创建
  • 查找是文件存在检查

我做对了吗?

如果是,那么这不是一个惊喜表现是可怕的,不规模。 你基本上要求并行文件系统最糟糕的是:从所有节点访问大量元数据,这涉及到流量控制,以保持文件系统的一致视图。

您需要多少数据来存储解决方案?

乍一看,将它们存储在旧的学校数据库(例如MySQL)中可能会更快。

另一种选择是将其存储在本地文件系统上,让远程节点向运行数据存储的任务发出查询(创建此文件,此文件是否存在),因此无需保留元数据 - 数据一致的节点。

更好的版本是让所有节点存储解决方案并回复查询。您可以散列解决方案并推断它存储在哪个节点上,这样您就知道应该要求哪些MPI任务存储解决方案或发出查询。

如果你真的必须使用文件系统,那么NFS可能是比并行文件系统更好的选择,例如lustre,glusterfs或gpfs。