large-scale parallel monte carlo tree search on...

4
Large-Scale Parallel Monte Carlo Tree Search on GPU Kamil Rocki, Reiji Suda Department of Computer Science Graduate School of Information Science and Technology, The University of Tokyo 7-3-1, Hongo, Bunkyo-ku, 113-8654, Tokyo, Japan Email: kamil.rocki, [email protected] Abstract—Monte Carlo Tree Search (MCTS) is a method for making optimal decisions in artificial intelligence (AI) problems, typically move planning in combinatorial games. It combines the generality of random simulation with the precision of tree search. The motivation behind this work is caused by the emerging GPU-based systems and their high computational potential combined with relatively low power usage compared to CPUs. As a problem to be solved I chose to develop an AI GPU(Graphics Processing Unit)-based agent in the game of Reversi (Othello) which provides a sufficiently complex problem for tree searching with non-uniform structure and an average branching factor of over 8. I present an efficient parallel GPU MCTS implementation based on the introduced ’block-parallelism’ scheme which combines GPU SIMD thread groups and performs independent searches without any need of intra-GPU or inter-GPU communication. I compare it with a simple leaf parallel scheme which implies certain performance limitations. The obtained results show that using my GPU MCTS implementation on the TSUBAME 2.0 system one GPU can be compared to 100-200 CPU threads depending on factors such as the search time and other MCTS parameters in terms of obtained results. I propose and analyze simultaneous CPU/GPU execution which improves the overall result. I. I NTRODUCTION Monte Carlo Tree Search (MCTS)[1][2] is a method for making optimal decisions in artificial intelligence (AI) problems, typically move planning in combinatorial games. It combines the generality of random simulation with the precision of tree search. Research interest in MCTS has risen sharply due to its spectacular success with computer Go and potential appli- cation to a number of other difficult problems. Its application extends beyond games[6][7][8][9]. The main advantages of the MCTS algorithm are that it does not require any strategic or tactical knowledge about the given domain to make reasonable decisions and algorithm can be halted at any time to return the current best estimate. Another advantage of this approach is that the longer the algorithm runs the better the solution and the time limit can be specified allowing to control the quality of the decisions made. It provides relatively good results in games like Go or Chess where standard algorithms fail. So far, current research has shown that the algorithm can be parallelized on multiple CPUs. The motivation behind this work is caused by the emerg- ing GPU-based systems and their high computational po- tential combined with relatively low power usage compared to CPUs. As a problem to be solved I chose developing an AI GPU(Graphics Processing Unit)-based agent in the game of Reversi (Othello) which provides a sufficiently complex problem for tree searching with a non-uniform structure and an average branching factor of over 8. The importance of this research is that if the MCTS algorithm can be efficiently parallelized on GPU(s) it can also be applied to other similar problems on modern multi-CPU/GPU systems such as the TSUBAME 2.0 supercomputer. Tree searching algorithms are hard to parallelize, especially when GPU is considered. Finding an algorithm which is suitable for GPUs is crucial if tree search has to be performed on recent supercomput- ers. Conventional ones do not provide good performance, because of the limitations of the GPU’s architecture and the programming scheme, threads’ communication boundaries. One of the problems is the SIMD execution scheme within GPU for a group of threads. It means that a standard CPU parallel implementation such as root-parallelism[3] fail. So far I were able to successfully parallelize the algorithm and run it on thousands of CPU threads[4] using root-parallelism. I research on an efficient parallel GPU MCTS imple- mentation based on the introduced block-parallelism scheme which combines GPU SIMD thread groups and performs independent searches without any need of intra-GPU or inter-GPU communication. I compare it with a simple leaf parallel scheme which implies certain performance limita- tions. The obtained results show that using my GPU MCTS implementation on the TSUBAME 2.0 system one GPU’s performance can be compared to 50-100 CPU threads[4] depending on factors such as the search time and other MCTS parameters using root-parallelism. The block-parallel algorithm provides better results than the simple leaf-parallel scheme which fail to scale well beyond 1000 threads on a single GPU. The block-parallel algorithm is approximately 4 times more efficient in terms of the number of CPU threads needed to obtain results comparable with the GPU implementation. Additionally I are currently testing this algorithms running on more than 100 GPUs to test its scalability limits. 2011 IEEE International Parallel & Distributed Processing Symposium 1530-2075/11 $26.00 © 2011 IEEE DOI 10.1109/IPDPS.2011.370 2037 2011 IEEE International Parallel & Distributed Processing Symposium 1530-2075/11 $26.00 © 2011 IEEE DOI 10.1109/IPDPS.2011.370 2033 2011 IEEE International Parallel & Distributed Processing Symposium 1530-2075/11 $26.00 © 2011 IEEE DOI 10.1109/IPDPS.2011.370 2029 2011 IEEE International Parallel & Distributed Processing Symposium 1530-2075/11 $26.00 © 2011 IEEE DOI 10.1109/IPDPS.2011.370 2033 2011 IEEE International Parallel & Distributed Processing Symposium 1530-2075/11 $26.00 © 2011 IEEE DOI 10.1109/IPDPS.2011.370 2033 2011 IEEE International Parallel & Distributed Processing Symposium 1530-2075/11 $26.00 © 2011 IEEE DOI 10.1109/IPDPS.2011.370 2033 2011 IEEE International Parallel & Distributed Processing Symposium 1530-2075/11 $26.00 © 2011 IEEE DOI 10.1109/IPDPS.2011.370 2029 2011 IEEE International Parallel & Distributed Processing Symposium 1530-2075/11 $26.00 © 2011 IEEE DOI 10.1109/IPDPS.2011.370 2034 2011 IEEE International Parallel & Distributed Processing Symposium 1530-2075/11 $26.00 © 2011 IEEE DOI 10.1109/IPDPS.2011.370 2034

Upload: others

Post on 13-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Large-Scale Parallel Monte Carlo Tree Search on GPUolab.is.s.u-tokyo.ac.jp/~kamil.rocki/rocki_ipdps11.pdf · Monte Carlo Tree Search (MCTS)[1][2] is a method for making optimal decisions

Large-Scale Parallel Monte Carlo Tree Search on GPU

Kamil Rocki, Reiji SudaDepartment of Computer Science

Graduate School of Information Science and Technology, The University of Tokyo7-3-1, Hongo, Bunkyo-ku, 113-8654, Tokyo, Japan

Email: kamil.rocki, [email protected]

Abstract—Monte Carlo Tree Search (MCTS) is a methodfor making optimal decisions in artificial intelligence (AI)problems, typically move planning in combinatorial games.It combines the generality of random simulation with theprecision of tree search. The motivation behind this work iscaused by the emerging GPU-based systems and their highcomputational potential combined with relatively low powerusage compared to CPUs. As a problem to be solved I choseto develop an AI GPU(Graphics Processing Unit)-based agentin the game of Reversi (Othello) which provides a sufficientlycomplex problem for tree searching with non-uniform structureand an average branching factor of over 8. I present an efficientparallel GPU MCTS implementation based on the introduced’block-parallelism’ scheme which combines GPU SIMD threadgroups and performs independent searches without any need ofintra-GPU or inter-GPU communication. I compare it with asimple leaf parallel scheme which implies certain performancelimitations. The obtained results show that using my GPUMCTS implementation on the TSUBAME 2.0 system oneGPU can be compared to 100-200 CPU threads depending onfactors such as the search time and other MCTS parameters interms of obtained results. I propose and analyze simultaneousCPU/GPU execution which improves the overall result.

I. INTRODUCTION

Monte Carlo Tree Search (MCTS)[1][2] is a methodfor making optimal decisions in artificial intelligence (AI)problems, typically move planning in combinatorial games.It combines the generality of random simulation with theprecision of tree search.

Research interest in MCTS has risen sharply due to itsspectacular success with computer Go and potential appli-cation to a number of other difficult problems. Its applicationextends beyond games[6][7][8][9]. The main advantages ofthe MCTS algorithm are that it does not require any strategicor tactical knowledge about the given domain to makereasonable decisions and algorithm can be halted at any timeto return the current best estimate. Another advantage ofthis approach is that the longer the algorithm runs the betterthe solution and the time limit can be specified allowingto control the quality of the decisions made. It providesrelatively good results in games like Go or Chess wherestandard algorithms fail. So far, current research has shownthat the algorithm can be parallelized on multiple CPUs.

The motivation behind this work is caused by the emerg-ing GPU-based systems and their high computational po-tential combined with relatively low power usage comparedto CPUs. As a problem to be solved I chose developing anAI GPU(Graphics Processing Unit)-based agent in the gameof Reversi (Othello) which provides a sufficiently complexproblem for tree searching with a non-uniform structure andan average branching factor of over 8. The importance ofthis research is that if the MCTS algorithm can be efficientlyparallelized on GPU(s) it can also be applied to other similarproblems on modern multi-CPU/GPU systems such as theTSUBAME 2.0 supercomputer. Tree searching algorithmsare hard to parallelize, especially when GPU is considered.Finding an algorithm which is suitable for GPUs is crucialif tree search has to be performed on recent supercomput-ers. Conventional ones do not provide good performance,because of the limitations of the GPU’s architecture and theprogramming scheme, threads’ communication boundaries.One of the problems is the SIMD execution scheme withinGPU for a group of threads. It means that a standard CPUparallel implementation such as root-parallelism[3] fail. Sofar I were able to successfully parallelize the algorithm andrun it on thousands of CPU threads[4] using root-parallelism.

I research on an efficient parallel GPU MCTS imple-mentation based on the introduced block-parallelism schemewhich combines GPU SIMD thread groups and performsindependent searches without any need of intra-GPU orinter-GPU communication. I compare it with a simple leafparallel scheme which implies certain performance limita-tions. The obtained results show that using my GPU MCTSimplementation on the TSUBAME 2.0 system one GPU’sperformance can be compared to 50-100 CPU threads[4]depending on factors such as the search time and otherMCTS parameters using root-parallelism. The block-parallelalgorithm provides better results than the simple leaf-parallelscheme which fail to scale well beyond 1000 threads on asingle GPU. The block-parallel algorithm is approximately4 times more efficient in terms of the number of CPUthreads needed to obtain results comparable with the GPUimplementation. Additionally I are currently testing thisalgorithms running on more than 100 GPUs to test itsscalability limits.

2011 IEEE International Parallel & Distributed Processing Symposium

1530-2075/11 $26.00 © 2011 IEEE

DOI 10.1109/IPDPS.2011.370

2037

2011 IEEE International Parallel & Distributed Processing Symposium

1530-2075/11 $26.00 © 2011 IEEE

DOI 10.1109/IPDPS.2011.370

2033

2011 IEEE International Parallel & Distributed Processing Symposium

1530-2075/11 $26.00 © 2011 IEEE

DOI 10.1109/IPDPS.2011.370

2029

2011 IEEE International Parallel & Distributed Processing Symposium

1530-2075/11 $26.00 © 2011 IEEE

DOI 10.1109/IPDPS.2011.370

2033

2011 IEEE International Parallel & Distributed Processing Symposium

1530-2075/11 $26.00 © 2011 IEEE

DOI 10.1109/IPDPS.2011.370

2033

2011 IEEE International Parallel & Distributed Processing Symposium

1530-2075/11 $26.00 © 2011 IEEE

DOI 10.1109/IPDPS.2011.370

2033

2011 IEEE International Parallel & Distributed Processing Symposium

1530-2075/11 $26.00 © 2011 IEEE

DOI 10.1109/IPDPS.2011.370

2029

2011 IEEE International Parallel & Distributed Processing Symposium

1530-2075/11 $26.00 © 2011 IEEE

DOI 10.1109/IPDPS.2011.370

2034

2011 IEEE International Parallel & Distributed Processing Symposium

1530-2075/11 $26.00 © 2011 IEEE

DOI 10.1109/IPDPS.2011.370

2034

Page 2: Large-Scale Parallel Monte Carlo Tree Search on GPUolab.is.s.u-tokyo.ac.jp/~kamil.rocki/rocki_ipdps11.pdf · Monte Carlo Tree Search (MCTS)[1][2] is a method for making optimal decisions

One of the reasons why this problem has not been solvedbefore is that this architecture is quite new and new appli-cations are being developed, so far there is no related work.The scale of parallelism is extreme here (i.e. using 1000sGPUs of 10000 threads). The published work is related tohundreds or thousands of CPU cores at most. The existingparallel schemes[3] rely on algorithm requiring either eachthread to execute the whole code (which does not work wellsince GPU is a SIMD device) or synchronization/communi-cation which is also not applicable.

II. MONTE CARLO TREE SEARCH

A simulation is defined as a series of random moveswhich are performed until the end of a game is reached(until neither of the players can move). The result of thissimulation can be successful, when there was a win in theend or unsuccessful otherwise. So, let every node i in the treestore the number of simulations T (visits) and the numberof successful simulations Si. The general MCTS algorithmcomprises 4 steps (Figure 1) which are repeated.

A. MCTS iteration steps

1) Selection: - a node from the game tree is chosenbased on the specified criteria. The value of each nodeis calculated and the best one is selected. In this paper,the formula used to calculate the node value is the UpperConfidence Bound (UCB).

UCBi =Si

ti+ C ∗

√logT

ti

Where:Ti - total number of simulations for the parent of node iC - a parameter to be adjusted

Supposed that some simulations have been performedfor a node, first the average node value is taken andthen the second term which includes the total numberof simulations for that node and its parent. The firstone provides the best possible node in the analyzed tree(exploitation), while the second one is responsible for thetree exploration. That means that a node which has beenrarely visited is more likely to be chosen, because the valueof the second terms is greater.

2) Expansion: - one or more successors of the selectednode are added to the tree depending on the strategy. Thispoint is not strict, in our implementation I add one node periteration, so this number can be different.

3) Simulation: - for the added node(s) perform simula-tion(s) and update the node(s) values (successes, total) - herein the CPU implementation, one simulation per iterationis performed. In the GPU implementations, the numberof simulations depends on the number of threads, blocks

SimulationExpansion BackpropagationSelection

Repeat until time is left

Figure 1. A single MCTS algorithm iteration’s steps

and the method (leaf of block parallelism). I.e. the numberof simulations can be equal to 1024 per iteration for 4block 256 thread configuration using the leaf parallelizationmethod.

4) Backpropagation: - update the parents’ values up tothe root nodes. The numbers are added, so that the root nodehas the total number of simulations and successes for all ofthe nodes and each node contains the sum of values of allof its successors. For the root/block parallel methods, theroot node has to be updated by summing up results from allother trees processed in parallel.

III. GPU IMPLEMENTATION

In the GPU implementation, 2 approaches are consideredand discussed. The first one (Figure 2a) is the simpleleaf parallelization, where one GPU is dedicated to oneMCTS tree and each GPU thread performs an independentsimulation from the same node. Such a parallelization shouldprovide much better accuracy when the great number ofGPU threads is considered. The second approach (Figure2c), is the proposed in this paper block parallelizationmethod. It combines both aforementioned schemes. Rootparallelism (Figure 2b) is an efficient method of paralleliza-tion MCTS on CPUs. It is more efficient than simple leafparallelization[3][4], because building more trees diminishesthe effect of being stuck in a local extremum/increases thechances of finding the true global maximum. Thereforehaving n processors it is more efficient to build n treesrather than performing n parallel simulations in the samenode. Given that a problem can have many local maximas,starting from one point and performing a search might notbe very accurate in the basic MCTS case. The second one,leaf parallelism should diminish this effect by having moresamples from a given point. The third one is root parallelism.Here a single tree has the same properties as each tree inthe sequential approach except for the fact that there aremany trees and the chance of finding the global maximumincreases with the number of trees. The last, our proposedalgorithm, combines those two, so each search should bemore accurate and less local at the same time.

5) Leaf-parallel scheme: This is the simplest paralleliza-tion method in terms of implementation. Here GPU receivesa root node from the CPU controlling process and performs nsimulations, where n depends on the dimensions of the grid(block size and number of blocks). Afterwards the resultsare written to an array in the GPU’s memory (0 = loss, 1 =victory) and CPU reads the results back.

203820342030203420342034203020352035

Page 3: Large-Scale Parallel Monte Carlo Tree Search on GPUolab.is.s.u-tokyo.ac.jp/~kamil.rocki/rocki_ipdps11.pdf · Monte Carlo Tree Search (MCTS)[1][2] is a method for making optimal decisions

n simulations

a. Leaf parallelism

n trees

b. Root parallelism c. Block parallelism

n = blocks(trees) x threads (simulations at once)

Figure 2. An illustration of considered schemes

Multiprocessor Multiprocessor

Multiprocessor Multiprocessor

Multiprocessor Multiprocessor

Multiprocessor Multiprocessor

GPU Hardware

Multiprocessor

Multiprocessor Multiprocessor

Multiprocessor Multiprocessor

Multiprocessor Multiprocessor

GPU Program

Block 0 Multiprocessor

Multiprocessor Multiprocessor

Multiprocessor Multiprocessor

Multiprocessor Multiprocessor

Block 2

Block 4

Block 6

Block 1

Block 3

Block 5

Block 7

SIMD warp SIMD warp

SIMD warpSIMD warp

32 threads (�xed, for current hardware)

Thread 0 Thread 1

Thread 4 Thread 5

Thread 2 Thread 3

Thread 6 Thread 7

Thread 8 Thread 9

Thread 12 Thread 13

Thread 10 Thread 11

Thread 14 Thread 15

Thread 16 Thread 17

Thread 20 Thread 21

Thread 18 Thread 19

Thread 22 Thread 23

Number of blocks con�gurable

Number of threads con�gurable

Number of MPs �xed

Root parallelism

Leaf parallelism

Block parallelism

}}

Figure 3. Correspondence of the algorithm to hardware

Based on that, the obtained result is the same as in thebasic CPU version except for the fact that the number ofsimulations is greater and the accuracy is better.

6) Block-parallel scheme: To maximize the GPU’s simu-lating performance some modifications had to be introduced.In this approach the threads are grouped and a fixed numberof them is dedicated to one tree. This method is introduceddue to the hierarchical GPU architecture, where threadsform small SIMD groups called warps and then these warpsform blocks(Figure 3). It is crucial to find the best possiblejob division scheme for achieving high GPU performance.The trees are still controlled by the CPU threads, GPUsimulates only. That means that at each simulation step inthe algorithm, all the GPU threads start and end simulatingat the same time and that there is a particular sequential partof this algorithm which decreases the number of simulationsper second a bit when the number of blocks is higher. Thisis caused by the necessity of managing each tree by theCPU. On the other hand the more the trees, the better theperformance. In our experiments the smallest number ofthreads used is 32 which corresponds to the warp size.

A. Hybrid CPU-GPU processing

I observed that the trees formed by our algorithm usingGPUs are not as deep as the trees when CPUs and rootparallelism are used. It is caused by the time spent on eachGPU’s kernel execution. CPU performs quick single simu-lations, whereas GPU needs more time, but runs thousandsof threads at once. It would mean that the results are lessaccurate, since the CPU tree grows faster in the direction ofthe optimal solution. As a solution I experimented on usinghybrid CPU-GPU algorithm(Figure 4). In this approach, theGPU kernel is called asynchronously and the control is givenback to CPU. Then CPU operates on the same tree (in case

GPU kernel

execution time

time

kernel execution call

gpu ready event

cpu control

CPU can work here!

processed by GPU

expanded by CPU in the meantime

Figure 4. Hybrid CPU-GPU processing scheme

1 2 4 8 16 32 64 128 256 512 1024 2048 4096 7168 143360

0.51

1.52

2.53

3.54

4.55

5.56

6.57

7.58

8.59 x 105

GPU Threads

Simu

lation

s/sec

ond

Leaf parallelism (block size = 64)Block parallelism (block size = 32)Block parallelism (block size = 128)

Figure 5. Block parallelism vs Leaf parallelism, speed

of leaf parallelism) or trees (block parallelism) to increasetheir depth. It means that while GPU processes some data,CPU repeats the MCTS iterative process and checks for theGPU kernel completion.

Here the results are presented. Our test platform is TSUB-AME 2.0 supercomputer equipped with a NVIDIA TESLAC2050 GPUs and Intel Xeon X5670 CPUs. I compare thespeed(Figure 5) and results(Figure 6) of leaf parallelism andblock parallelism using different block sizes. The block sizeand their number corresponds to the hardware’s properties.In those graphs a GPU Player is playing against one CPUcore running sequential MCTS. The main aspect of theanalysis is that despite running fewer simulations in a givenamount of time using block parallelism, the results are muchbetter compared to leaf parallelism, where the maximalwinning ratio stops at around 0.75 for 1024 threads (16blocks of 64 threads). The results are better when the blocksize is smaller (32), but only when the number of threadsis small (up to 4096, 128 blocks/trees), then the lager blockcase(128) performs better. It can be observed in Figure 5that as I decrease the number of threads per block and atthe same time increase the number of trees, the number ofsimulations per second decreases. This is due to the CPU’ssequential part.

In Figure 7 and 8 I also show a different type of result,where the X-axis represents current game step and the Y-axisis the average point difference between 2 players.

In Figure 7 I observe that one GPU outperforms 256 CPUsin terms both intermediate and final scores. Also I see thatthe characteristics of the results using CPUs and GPU areslightly different, where GPU is stronger at the beginning.I believe that it might be caused by the larger search spaceand therefore I conclude that later the parallel effect of theGPU is weaker, as the number of distinct samples decreases.Another reason for this is mentioned depth of the tree whichis lower in the GPU case. I present this in Figure 7.

Also I show that using our hybrid CPU/GPU approach

203920352031203520352035203120362036

Page 4: Large-Scale Parallel Monte Carlo Tree Search on GPUolab.is.s.u-tokyo.ac.jp/~kamil.rocki/rocki_ipdps11.pdf · Monte Carlo Tree Search (MCTS)[1][2] is a method for making optimal decisions

1 2 4 8 16 32 64 128 256 512 1024 2048 4096 7168 143360.2

0.250.3

0.350.4

0.450.5

0.550.6

0.650.7

0.750.8

0.850.9

0.951

GPU Threads

Win

ratio

Leaf parallelism (block size = 64)

Block parallelism (block size = 32)

Block parallelism (block size = 128)

Figure 6. Block parallelism vs Leaf parallelism, final result

1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61−1

2

5

8

11

14

17

20

23

26

29

32

35

38

41

44

47

50

Game step

Point

diffe

renc

e ( o

ur sc

ore

− op

pone

nt’s

scor

e)

2 cpus4 cpus8 cpus16 cpus32 cpus64 cpus128 cpus256 cpus1 GPU − block parallelism (block size = 128)

Figure 7. GPU vs root-parallel CPUs

both the tree depth and the result are improved as expectedespecially in the last phase of the game.

IV. CONCLUSION

I introduced an algorithm called block-parallelism whichallows to efficiently run Monte Carlo Tree Search onGPUs achieving results comparable with a hundred of CPUcores(Figure 7). Block-parallelism is not flawless and notcompletely parallel as at most one CPU controls one GPU,certain part of the algorithm has to be processed sequen-tially which decreases the performance. I show that block-parallelism performs better that leaf-parallelism on GPUand probably is the optimal solution unless the hardwarelimitations are not changed. I also show that using CPU andGPU at the same time I get better results. The are challengesahead, such as unknown scalability and universality of thealgorithm. In Figure 9 I present preliminary results of multiGPU configurations’ scaling using MPI.

V. FUTURE WORK

• Application of the algorithm to other domain. A moregeneral task can and should be solved by the algorithm

• Scalability analysis. This is a major challenge andrequires analyzing certain number of parameters andtheir affect on the overall performance. Currently Iimplemented the MPI-GPU version of the algorithm,but the results are inconclusive, there are several reasonwhy the scalability can be limited including Reversiitself.

ACKNOWLEDGEMENTS

This work is partially supported by Core Research of Evo-lutional Science and Technology (CREST) project ”ULP-HPC: Ultra Low-Power, High-Performance Computing via

10 20 30 40 50 600

2

4

6

8

10

12

14

Game step

Poin

ts

10 20 30 40 50 600

10

20

30

40

Game step

Dep

th

GPU + CPU

GPU

Figure 8. Hybrid CPU/GPU vs GPU-only processing

2 3 4 5

106

107

Sim

ulat

ions

/sec

ond

1 2 4 8 16 3226.5

27

27.5

28

28.5

29

29.5

No of GPUs (112 block x 64 Threads)

Aver

age

Poin

t Diff

eren

ce

Figure 9. Multi GPU Results - based on MPI communication scheme

Modeling and Optimization of Next Generation HPC Tech-nologies” of Japan Science and Technology Agency (JST)and Grant-in-Aid for Scientific Research of MEXT Japan.

REFERENCES

[1] Monte Carlo Tree Search (MCTS) research hub,http://www.mcts-hub.net/index.html

[2] Kocsis L., Szepesvari C.: Bandit based Monte-Carlo Planning,15th European. Conference on Machine Learning Proceed-ings, 2006

[3] Guillaume M.J-B. Chaslot, Mark H.M. Winands, and H. Jaapvan den Herik: Parallel Monte-Carlo Tree Search, Computersand Games: 6th International Conference, 2008

[4] Rocki K., Suda R.: Massively Parallel Monte Carlo TreeSearch, Proceedings of the 9th International Meeting HighPerformance Computing for Computational Science, 2010

[5] Coulom R.: Efficient Selectivity and Backup Operators inMonte-Carlo Tree Search, 5th International Conference onComputer and Games, 2006

[6] Romaric Gaudel, Michle Sebag - Feature Selection as a one-player game (2010)

[7] Guillaume Chaslot , Steven Jong , Jahn-takeshi Saito , JosUiterwijk - Monte-Carlo Tree Search in Production Manage-ment Problems (2006)

[8] O. Teytaud et. al, High-dimensional planning with Monte-Carlo Tree Search (2008)

[9] Maarten P.D. Schadd, Mark H.M. Winands, H. Jaap van denHerik, Guillaume M.J-B. Chaslot, and Jos W.H.M (2008)

204020362032203620362036203220372037