  Deep Neural Network guided Monte-Carlo Tree Search (DNN-MCTS) is a powerful
class of AI algorithms. In DNN-MCTS, a Deep Neural Network model is trained
collaboratively with a dynamic Monte-Carlo search tree to guide the agent
towards actions that yields the highest returns. While the DNN operations are
highly parallelizable, the search tree operations involved in MCTS are
sequential and often become the system bottleneck. Existing MCTS parallel
schemes on shared-memory multi-core CPU platforms either exploit data
parallelism but sacrifice memory access latency, or take advantage of local
cache for low-latency memory accesses but constrain the tree search to a single
thread. In this work, we analyze the tradeoff of these parallel schemes and
develop performance models for both parallel schemes based on the application
and hardware parameters. We propose a novel implementation that addresses the
tradeoff by adaptively choosing the optimal parallel scheme for the MCTS
component on the CPU. Furthermore, we propose an efficient method for searching
the optimal communication batch size as the MCTS component on the CPU
interfaces with DNN operations offloaded to an accelerator (GPU). Using a
representative DNN-MCTS algorithm - Alphazero on board game benchmarks, we show
that the parallel framework is able to adaptively generate the best-performing
parallel implementation, leading to a range of $1.5\times - 3\times$ speedup
compared with the baseline methods on CPU and CPU-GPU platforms.
