我一直在寻找关于分布式游戏树遍历的this paper,并且(在别人的帮助下)试图制作软件树遍历器的Python/mpi4py克隆,以便解决2个玩家抽象策略游戏。是否有最适合分布式游戏树遍历的文件系统?
首先,Wikipedia provides a breif description关于如何“解决”一个游戏。
这是一个常见的优化,记住已经解决的结果,因此不需要进一步的树遍历。由于一群计算机不能平均分享彼此的结果,因此采取了各种方法来解决这个问题。在纸张上的方法(转换表驱动的工作调度)的工作原理基本上如下:
- 给出一个ID给每个计算机1到n(I只是使用的标准MPI等级)
- 在任何特定点的计算机可能会收到一个职位。检查该位置是否在查找表中或平凡完成。如果是,则发送结果值,否则,生成子项。
- 哈希每个孩子的位置,使他们有1到n的关联值。使用散列的ID将每个位置发送到“正确的”计算机。
- 重复,直到初始位置解决。
正如文件甚至提到,这种方法有点矛盾地工作,具有令人难以置信的高通信速率。
这里有问题:
在它似乎很好地工作在一台计算机。然后我在我的学校集群上进行了一些测试,并遇到了一些严重的问题。解决像TicTacToe这样的游戏通常会在“调试模式”(4个节点,20个核心和15分钟的时间限制)中超时。
我将TicTacToe解决方案数据库保存到他们所称的“用户目录”(更多可以是found here)。这与通常用于存储数据的“scratch”目录形成对比。当我这样做时,TicTacToe的数据库在几秒钟内解决了。
我注意到,“从零开始”的空间使用"Lustre FS"这似乎是对“对等网络”的应用一个糟糕的选择:
尽管Lustre文件系统可以在许多工作环境中正常运行,它 不一定是所有应用程序的最佳选择。最好是 适用于超出单个服务器可提供的容量的使用,尽管在某些使用情况下,Lustre文件系统可通过单一服务器比其他文件系统更好地执行 ,这是由于其强大的锁定和数据一致性而导致的 强大的 。
光泽文件系统当前不特别适合于 “对等网络”,其中客户端和服务器上 运行相同的节点的使用模式中,每个共享的存储量小,由于缺乏 在Lustre软件级别进行数据复制。在这种使用中,如果一个客户端/服务器发生故障,那么存储在该节点上的数据将不会是 ,直到该节点重新启动。
我可能对分布式计算没有足够的把握,但似乎Lustre FS可能不会客观地适合这类问题。不幸的是,我使用的群集锁定在使用Lustre FS。另一种选择是像谷歌云引擎或AWS做的任务,但我很困惑的一些问题:
- 很多抽象似乎吓倒我。所有这些云平台都提供“可扩展解决方案”,通常涉及“负载均衡”,这不仅是不必要的,而且对算法不利。 (这是必要的位置被发送到正确的电脑,以便他们可以快速查找)。 Google云引擎或AWS是否提供足够的基本骨架来使此算法有效地工作?
- 我应该使用什么文件系统? Google云端引擎推荐使用NFS或Gluster,但我不确定。这篇论文相当过时,似乎没有使用任何特别的东西。 AWS或Google Cloud Engine是否为这类任务提供适当的文件系统?