On Job-Level Computing

博士 === 國立交通大學 === 資訊科學與工程研究所 === 107 === The job-level (JL) computing model is a generic distributed computing scheme that decomposes a larger problem into smaller jobs, then leverages existing game-playing programs to compute these jobs in parallel. It has been successful in the past in position an...

Full description

Bibliographic Details
Main Authors: Wei, Ting-Han, 魏廷翰
Other Authors: Wu, I-Chen
Format: Others
Language:en_US
Published: 2019
Online Access:http://ndltd.ncl.edu.tw/handle/7x3zww
Description
Summary:博士 === 國立交通大學 === 資訊科學與工程研究所 === 107 === The job-level (JL) computing model is a generic distributed computing scheme that decomposes a larger problem into smaller jobs, then leverages existing game-playing programs to compute these jobs in parallel. It has been successful in the past in position analysis and opening book construction. This dissertation builds upon prior successes by first redesigning the JL computing system into modularized components, separated based on developer roles. This new software framework enables the search algorithm developer, game type developer, and application developer to work independently. By doing so, new JL applications can be implemented with very little effort, while simultaneously improving code reuse and maintainability. Two best-first JL search algorithms are discussed in detail, the job-level Proof-number search (JL-PNS) algorithm and the job-level upper confidence bound tree (JL-UCT) algorithm. Five new features are also added to the JL system. First, to implement a transposition table for JL search trees, the search tree is stored in a new unified format. Second, for problem size scalability, JL search trees can be stored in remote databases instead of in local memory. Third, a caching mechanism is designed to speed up the overall computation. The caching mechanism, when enabled, can be up to 18 times faster than when it is not used. Fourth, to leverage more volunteer workers and take advantage of additional computing resources, a method to combine JL systems with BOINC is proposed. Lastly, we demonstrate that the JL system can be used as a game-playing agent. By playing on the website Little Golem, the JL player won 12 of 18 Connect6 tournaments from 2009-2018, for a total of 205 in 228 games (90% win rate). A win/loss database is also proposed so that the JL player can take advantage of previously analyzed winning/losing positions. A case study of a JL application is the automatic construction of Connect6 opening books using JL-UCT. JL-UCT has the benefit of being designed to choose the best move to play. Using the JL-UCT generated opening book, our Connect6 program NCTU6 can achieve 61% win rate against the same version of itself without an opening book. Comparing between opening books from JL-UCT and JL-PNS, the former can achieve win rates of about 56%. Finally, the two-tier job-level (2T-JL) system is proposed. 2T-JL contains two separate trees: the kernel tier search tree is a simulation of a JL search, and is guaranteed to be strictly ordered between different trials of the same experiment, whereas the probe tier behaves exactly the same as a normal JL search. The probe tier performs jobs and provides the job results for the kernel tier, so that it may maintain the strict ordering. The purpose of 2T-JL is to alleviate the instability caused by the speedup anomaly phenomenon, where no guarantees can be made that the speedup will improve as more computing units are added to the distributed computing system. The 2T-JL system can achieve reasonable speedups, and the overhead for providing an additional service on top of the normal JL system decreases as the problem size increases, so it is suitable for large and complex problems.