Not logged inRybka Chess Community Forum
Up Topic Rybka Support & Discussion / Rybka Discussion / parallel processing?
- - By Hadouken (*) [us] Date 2008-04-27 23:07
Hi, this might be a naive question, but is there any way two different home PCs can share their processing power when analyzing a position with Rybka?  Thanks...
Parent - - By revengeska (**) [us] Date 2008-04-27 23:15
Unfortunately it isn't:( To my knowledge, the problem is that Rybka MP requires shared memory, and you simply can't just share memory by linking up home PCs.
Parent - By buffos (Silver) [gr] Date 2008-04-28 10:19
Shared and not shared parallel programming are to different monsters. You may use not shared parallel implementations when you actually dont need to have access to the same data. Chess is not in this category. Grid programming is not to any help for playing chess

Creating tablebases though is.
Parent - - By Vasik Rajlich (Silver) [hu] Date 2008-04-28 14:51
No, nothing automated like this exists.

What you can do is split the work among several machines by hand. There are several ways to do this.

Parent - - By Banned for Life (Gold) Date 2008-04-28 16:44
Raising the obvious question of how much less efficient this would be if done algorithmically without human input...

Parent - - By buffos (Silver) [gr] Date 2008-04-29 12:38
This approach (splitting in many computers) can be followed in areas where the one pc doesnt need to know what the other one has done
For example in rendering (ray tracing). The famous folding problem and so on.

Playing chess is not in that area. You can of course split a branch in various computers but you will loose the hash table advantage.
Moving data back and forth is a waste of resources.
Parent - - By Sesse (****) [no] Date 2008-04-29 13:39
Sure, N machines won't give you a speedup of N, but if it's 2, 4 or even 8, it might be interesting still.

/* Steinar */
Parent - - By buffos (Silver) [gr] Date 2008-04-30 13:14
The problem is not scaling. The problem is shared memory. In parallel programming you have to different categories.
Shared memory (that is all cpus share the same memory ,so very little time is required to read data) and not shared memory.
The later case is when you have different machines. The problem is that the time required to simulate the shared memory over a network is multiple times the time needed to read from RAM. For that reason problems that are suitable for such a grid computing scheme are those that do not need to share memory.

Ray tracing in rendering applications is such a problem. You can have as many pc as you like. You can even have one ray per cpu. The results are independent and merging is a simple addition. Chess does not fall in to that category. You need a shared memory model. N machines wont speedup the process because the merging faze will be a bottleneck for the algorithm
Parent - - By Sesse (****) [no] Date 2008-04-30 13:24
Thank you, I know the difference between shared and non-shared memory systems. You can very well parallelize chess without shared memory; you take an efficiency hit from not being able to share the transposition hash, but it's not a fatal one. In fact, there have been distributed chess systems with several thousand nodes spread out all over the world...

/* Steinar */
Parent - - By M ANSARI (*****) [kw] Date 2008-04-30 14:33
Yes ... Toga had such a system.  I don't know how efficient it is even though the results in that particular tourney seemed to show that it had by far the most powerful processing power and seemed to outpace the calculation power of an 8 core Rybka (beat Rybka in a game).  I do believe that a much better solution is to have several independent computers with engines specialized for certain positions or engines with specifically designed modules ... that are also able to communicate to a central computer which dictates the paths of search ... would provide much more powerful useful search that simple brute force search.  In other words if you look at a certain position and if the position is an obscure endgame ... your endgame module would have information that would allow it to solve the problem.  Also if the certain position has an obscure tactical shot .. your tactical module will come up with the solution.  In many situations adding useful knowledge code to an engine can degrade its overall play ... but if seperate individual independent modules are used you will never end up with that problem.  This idea also is future proof since it seems that processors will have more and more cores ... which will allow you to use the same idea on one processor in the future when 80 or even more cores will be available in one CPU.
Parent - By Banned for Life (Gold) Date 2008-04-30 15:02
Your last point is the clincher. The ability to make a single core faster is providing diminishing returns so the major improvements in computing bandwidth going forward will be via increasing the number of cores working on the problem. Meanwhile, memory bandwidth is continuing a tradition of not keeping pace with processing bandwidth. These events will eventually doom the SMP architecture for mid level computation (as they already do for HPC applications).

Parent - By Vasik Rajlich (Silver) [hu] Date 2008-05-01 08:43
The human actually does two things - he splits the work, and in doing so he makes the search tree more efficient. I guess you could get 1.5x or 1.6x speedup from having two machines which communicate at a huge-latency.

Up Topic Rybka Support & Discussion / Rybka Discussion / parallel processing?

Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill