并行蒙特卡罗树搜索算法与围棋中的人工边界应用
1. 并行蒙特卡罗树搜索算法
1.1 集群与通信
Open MPI旨在实现异构集群上的高性能计算。集群由经典个人计算机和一个具有四个处理器的SMP头节点组成,通过TCP千兆网络连接成私有网络。通信仅通过全局通信器MPI_COMM_WORLD进行。每个支持超线程的计算机可同时处理两个线程,支持并行计算机的一到四个节点,每个节点运行一个具有独立数据的任务。任务在程序执行开始时,通过主从模型创建,SMP头节点始终为主节点,所有Go文本协议的读写命令都通过主节点进行,从节点负责满足计算请求。
1.2 主进程
主进程负责下降和更新UCT树,从节点执行由主节点发送的一系列移动开始的模拟。主进程的工作流程如下:
1. 向每个从节点发送位置。
2. 为每个从节点开发一次UCT树,并发送初始移动序列。
3. 进入主循环(MasterLoop),重复接收从节点以发送序列开始的模拟结果,用此结果更新UCT树,创建新序列并发送给从节点。
4. 当没有更多时间可用或达到最大模拟次数时,主循环结束。在停止之前,接收所有仍在进行模拟的子节点的结果。
主进程的算法如下:
1 Master ()
2 MasterLoop(board[ ], color, ko, time);
3 for(s ←0; s < nbSlaves; s++)
4 send(s, END LOOP);
5 return bestUCTMove ();
6 MasterLoop(board[ ], color, k