Parallelization questions, ABDADA or DTS?

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

Daniel Shawul
Posts: 4185
Joined: Tue Mar 14, 2006 11:34 am
Location: Ethiopia

Re: Parallelization questions, ABDADA or DTS?

Post by Daniel Shawul »

I think Vincent answered your question thoroughly :) I would also like to know if Intel will push Cilk to be the language of choice for those hardwares ? How is the performance of the scheduler for chess? It has been used before by CilkChess so it should not be bad. But the tree may not be very selective compared to current heavily pruned trees.

I have implemented a cluster YBW which I think is on par with cluster-Toga performance wise. But I didn't test it well because the clusterI had access to used fast ethernet connection (which means slow) and it really did not scale well even on 32 processors. But it works as long as all processors are active.

One thing I did uniquely is to use a combined SMP-cluster search, where the search takes advantage of "fat nodes" (nodes with 8-core SMP machines) by starting an SMP search. It helps with the speed up but could introduce inefficiencies with load balancing as some workers become extra powerfull. Also it makes implementation becomes complicated since you can just use MPI to start a process for every core. That is do message passing even when you know it is an SMP machine. MPI actually optimizes stuff in that case but it will not be as good as the SMP algorithm.
Daniel Shawul
Posts: 4185
Joined: Tue Mar 14, 2006 11:34 am
Location: Ethiopia

Re: Parallelization questions, ABDADA or DTS?

Post by Daniel Shawul »

Trying to figure out difference of YBW and Jamboree.It looks like it is very similar but there is a "wait for all children" at J12 that may be different. Anyone knows details of Jamboree ? http://supertech.csail.mit.edu/papers/t ... szmaul.pdf

Code: Select all


(J1) Define jamboree(n; ; ) as
(J2) If n is a leaf then return static_eval(n).
(J3) Let ~c  the children of n, and
(J4) b  jamboree(c0; ; ):
(J5) If b   then return b.
(J6) If b >  then set   b.
(J7) In Parallel: For i from 1 below j~cj do:
(J8) Let s  jamboree(~ci;   1; ):
(J9) If s > b then set b  s.
(J10) If s   then abort-and-return s.
(J11) If s >  then
(J12) Wait for the completion of all previous iterations
(J13) of the parallel loop.
(J14) Set s  jamboree(~ci; ; ). ;; Research for value
(J15) If s   then abort-and-return s.
(J16) If s >  then set   s.
(J17) If s > b then set b  s.
(J18) Note the completion of the ith iteration of the parallel loop.
(J19) enddo
(J20) return b.
Figure 4-5: Algorithm jamboree
User avatar
Dragulic
Posts: 53
Joined: Tue Mar 06, 2012 3:28 pm

Re: Parallelization questions, ABDADA or DTS?

Post by Dragulic »

diep wrote:Can you give a link
http://ieeexplore.ieee.org/Xplore/login ... %3D1383246
From there, many google searches can be inspired. Like, for gigascale integration.
diep
Posts: 1822
Joined: Thu Mar 09, 2006 11:54 pm
Location: The Netherlands

Re: Parallelization questions, ABDADA or DTS?

Post by diep »

Dragulic wrote:
diep wrote:Can you give a link
http://ieeexplore.ieee.org/Xplore/login ... %3D1383246
From there, many google searches can be inspired. Like, for gigascale integration.
I see some VLSI stuff from 2005.
We live in 2012 now, so hardware predictions from 2005 are a tad outdated :)
User avatar
Dragulic
Posts: 53
Joined: Tue Mar 06, 2012 3:28 pm

Re: Parallelization questions, ABDADA or DTS?

Post by Dragulic »

diep wrote:outdated :)
Maybe but maybe no. The cycle from theoretisation of a new level of approach to the end-user delivery of a practical production item can be 5-10 years even in this fast moving field. Example, 3D transistors were postulated there in 2004/5. Delivery is yet to occur but the next generation (22nm) from Intel is expected to use these.

I stand to belief that I will see 10^6 thread systems becoming common. But then I am young and in good health with a long life expectancy. :)
BeRo

Re: Parallelization questions, ABDADA or DTS?

Post by BeRo »

Okay so, I've implemented YWBC (including helpful master concept and shared global transposition table) in my engine now.

I'm getting now, if parallel-threaded between 3000k and 4000k nodes per second on my Intel i7 2630QM 2 GHz quadcore (8 CPU threads because with hypertheading and with 2.9 GHz TurboBoost, if only core is used) notebook, and if non-parallel between 1000k and 2000k nodes per second.

I'll test it tomorrow or so also on my AMD Phenom II 1090T 3.2 GHz hexacore (without hyperthreading, so real 6 cores then and with 3.8 GHz TurboBoost, if only one core is used) desktop computer.

It's a small but already nice performance increase for my engine, but I think, that I must still profiling my code and optimizing the main biggest bottlenecks of the code.
diep
Posts: 1822
Joined: Thu Mar 09, 2006 11:54 pm
Location: The Netherlands

Re: Parallelization questions, ABDADA or DTS?

Post by diep »

BeRo wrote:Okay so, I've implemented YWBC (including helpful master concept and shared global transposition table) in my engine now.

I'm getting now, if parallel-threaded between 3000k and 4000k nodes per second on my Intel i7 2630QM 2 GHz quadcore (8 CPU threads because with hypertheading and with 2.9 GHz TurboBoost, if only core is used) notebook, and if non-parallel between 1000k and 2000k nodes per second.

I'll test it tomorrow or so also on my AMD Phenom II 1090T 3.2 GHz hexacore (without hyperthreading, so real 6 cores then and with 3.8 GHz TurboBoost, if only one core is used) desktop computer.

It's a small but already nice performance increase for my engine, but I think, that I must still profiling my code and optimizing the main biggest bottlenecks of the code.
What speedup do you see of 8 over 1?
(both scaling as well as speedup)

maybe want to turn off turboboost to measure that...