I believe I have been very consistent. The term "cpu" or "processor" is well-known and well-understood. When you boot an operating system that's the first thing you are told about during the boot-up process, how many physical processors/cpus were found... Either term seems like a natural idea. Tell the engine how many processors/cpus to use for the parallel search. not how many threads. Older posix threads always started one more than you specified anyway. And many programs use a separate thread for I/O to read moves. Do you count those or not? I've seen users run more threads/processes than they have physical processors/cpus. Killing parallel search performance. I think it is simply cleaner to say "I want to use 2 cpus to play chess, whether the machine has 2 or 8 cores. Then you let the program start enough threads to use those processors. Ferret used to start many more processes (threads) than physical processors, but most were kept "idle" until a split was done, then one would block at the split point and another would join in to keep the same number of _active_ threads. I think that is too complicated for a user and it is easier/clearer to specify the number of processors to use, and let the program deal with threads/processes however it wants...hgm wrote:You don't seem very consistent in your argument. Who do you want to please? The users that think a chip is something that goes into a socket, will not be the people reading books on computer architecture. They are the people that read the ads for "Intel inside" computers that talk about "cores".bob wrote:Typically, to most users, a "chip" is a thing that goes into one socket, We now have a single chip that has two internal pieces of silicon and 4 central processing units. When the original pentium pro came out, we had a single chip, with two pieces of silicon (one for CPU one for L2 cache) and just one processor.
However, I challenge _anyone_ to find any computer architecture book that uses the term "core" to mean "processor" or "cpu". The term CPU is the generally accepted technical term which is often shortened to "processor".
I don't see why it would be so important what books on computer architectur say. In principle, architecture is an orthogonal dimension to technology. The same architectural design can be distributed over many chips, or integrated in a single chip, depending on the capacity of the technology used, and the complexity of the design. "Socket" and "package" are not concepts from computer architecture, but very useful concepts in the technological implementation. Of course computer architecture has no need to distinguish CPUs sharing a package ("cores") from CPUs that are a package, or even a complete printed-circuit board. Not knowing the concept of "package", it is blind to the difference. But that doesn't mean the difference does not exist...
As far as the "difference" in packages, why does it matter to the end user or the chess engine? My program runs on Crays, which use _many_ circuit boards for a single CPU, to single chip / single-cpu, to single-chip / multiple cpu. It doesn't care, and neither do I at this level of abstraction. I just want to tell it how much of my computing resources I am willing to dedicate to playing chess, which is, I believe, pretty simple to understand.