bob wrote:
If you have a threaded program for SMP search, you will ALWAYS have global data. Whether it is declared as normal C globals, or stuck in a shared memory block (which is still global).
Indeed.
I'd forgot about that because it's a recent addition (to Jazz).
If one is a reasonable coder, global variables are not necessarily a bad thing.
Of course. Just as a goto is sometimes the right thing to use, a global is sometimes the right way to declare a variable. Problems arise when things are global that shouldn't be.
I "fondly" remember when I used to declare loop counters as global variables at the top of the main source file and use them everywhere (so it was in BASIC and I was 12 or so). Funnily enough you learn very quickly why that's a bad idea.
bob wrote:
My approach is similar. An array of thread pointers to access local data, local data (Per thread) allocated in the usual way, with a little care exercised due to NUMA considerations (first CPU to touch a thread block gets that block in its local memory, so this 'first to touch" needs to be spread over all threads and processors to spread the data uniformly, then one wants to use the local data on your core, not on a remote one, etc...
I remember that being an issue with Cilkchess on a big SGI machine we used with 256 processors.
But I did not realize that it was an issue here. So you can control which processor gets the data? How do I do that? I basically keep everything for a single thread in this structure and I have an array of them. I allocate memory for the evaluation cache and pawn structure caches and other read/write tables (such as the history table) are declared statically because their size are small and fixed.
So how can I control which processes get assigned to a given thread?
Capital punishment would be more effective as a preventive measure if it were administered prior to the crime.
velmarin wrote:
My bet is that Peter Skinner did with Intel Compiler.
Jim's compilatión
so compact very similar to that of 64-bit CCT Komodo, also I have curiosity.
also compiles fine with Visual C + +.
Yes I use the Intel compiler for mine, but will likely move to Visual Studio 2013, as I am finding it produces a smaller executable without any speed loss.
As for Jim's compile... no clue. It's really small though
Peter
I was kicked out of Chapters because I moved all the Bibles to the fiction section.