Page 4 of 5

Re: Schooner Version 2.2 Release

Posted: Thu Dec 26, 2019 7:54 pm
by Alayan
I'd be happy to see how the latest Schooner does in tournaments. I remember it had poor SMP scaling one year ago, has this been improved on ? I hope someone will volunteer to be the contact with these tournaments. I can't do it as I'm already doing so for Stockfish, but from this experience I can tell it's usually not too demanding.

Re: Schooner Version 2.2 Release

Posted: Thu Dec 26, 2019 8:09 pm
by D Sceviour
Alayan wrote: Thu Dec 26, 2019 7:54 pm I'd be happy to see how the latest Schooner does in tournaments. I remember it had poor SMP scaling one year ago, has this been improved on ?
What do you mean by poor SMP scaling? Could you be more specific? The threading was crashing sometimes during multiple instances of concurrent games on CuteChess. A change was made to the polling thread to fix this. Maybe that was the problem you experienced.

Re: Schooner Version 2.2 Release

Posted: Thu Dec 26, 2019 8:25 pm
by Alayan
By poor SMP scaling, I mean that the elo gains from additional cores/threads were significantly lower for Schooner than for most engines. Not really a worry at 2C or 4C where the gains are still good, but significant on tournament hardware with dozens of cores.

Re: Schooner Version 2.2 Release

Posted: Thu Dec 26, 2019 8:36 pm
by D Sceviour
Alayan wrote: Thu Dec 26, 2019 8:25 pm By poor SMP scaling, I mean that the elo gains from additional cores/threads were significantly lower for Schooner than for most engines. Not really a worry at 2C or 4C where the gains are still good, but significant on tournament hardware with dozens of cores.
I do not have dozens of cores to test with unfortunately. Schooner uses Shared Hash Table threading, and there is a noticeable collision on the main bus transfer with increasing number of cores. Threading is theoretically available up to 128 cores, but eight is probably the maximum thread usefulness. On the other hand, Shared Hash Table threading is easy to implement and debug. Prefetch() is used in the SSE version which might help a little.

Re: Schooner Version 2.2 Release

Posted: Wed Jan 01, 2020 4:48 pm
by Alayan
Most engines nowadays use "LazySMP" based approaches, which derive from the shared hash table concept, and actually scale quite well elo-wise with many threads (best approach known for 16+, and good for 8 or less). Open source code to study is available from Stockfish, Ethereal, and many others, and if you made a more detailed post about your current approach and issues in the technical discussion subforum, I'm sure you'd find other authors willing to give advice.

Re: Schooner Version 2.2 Release

Posted: Wed Jan 01, 2020 5:36 pm
by D Sceviour
Alayan wrote: Wed Jan 01, 2020 4:48 pm Most engines nowadays use "LazySMP" based approaches, which derive from the shared hash table concept, and actually scale quite well elo-wise with many threads (best approach known for 16+, and good for 8 or less). Open source code to study is available from Stockfish, Ethereal, and many others, and if you made a more detailed post about your current approach and issues in the technical discussion subforum, I'm sure you'd find other authors willing to give advice.
Not everybody's advice seems to work well for me. For example, Bob Hyatt recommended assigning CPU affinity to each thread. I tried again using SetProcessAffinityMask() just today, but the results were disastrous. I suspect Windows thread handlers for my i9 expect something different. The DWORD indicates the possibility of a maximum 32 or 64 threads for affinity. This is the windows code segment:

Code: Select all

#if !defined(LINUX)
 #include <windows.h>
#else
 #include <sched.h>
#endif

HANDLE process;
DWORD_PTR processAffinityMask;
BOOL success;

  process = GetCurrentProcess();
  processAffinityMask = 1 << sd->ID;

  success = SetProcessAffinityMask(process, processAffinityMask);

  printf("ID %d affinity success %d\n",sd->ID,(int) success);
My first attempt at threading years ago was using Younger-Brothers-Wait as this is a natural way to believe there would be a threading improvement, but this was abandoned in favor of a superior and simpler Shared Hash Table.

I tried using Andrew Grants staggered depth for threads method (some people might call this lazy SMP) but found no strength increase. Andrew used to discuss chess a lot in TLCV chat window, but apparently now has difficulty logging on.

You can find a lot of discussion about threading posted by me in various places, for example:

http://talkchess.com/forum3/viewtopic.p ... ad#p780051

This one on aspiration was eventually a failure.

Re: Schooner Version 2.2 Release

Posted: Wed Jan 01, 2020 11:34 pm
by Jamal Bubker
Thank you very much Dennis !!

Re: Schooner Version 2.2 Release

Posted: Fri Oct 16, 2020 7:02 pm
by D Sceviour
Schooner2.2 is temporarily unavailable for download. Surprisingly, I am e-bombed with requests for access, even after all this time.

The problem is that Google Sites is changing to a new format and requires a transfer of material from the old site to the new site. During the transfer it wiped out all of my available uploads. At the moment there seems to be no way of restoring this. Google sites claims it can redirect uploads now from another account - Google Drive. But I cannot get Google Drive links to be open and viewable to the public yet. Nor can I get Google Drive to transfer links to Google Sites.

If anyone has a link for Schooner2.2.zip they should post it here.

Re: Schooner Version 2.2 Release

Posted: Fri Oct 16, 2020 7:08 pm
by Madeleine Birchfield
Do you intend on implementing NNUE in Schooner?

Re: Schooner Version 2.2 Release

Posted: Fri Oct 16, 2020 7:11 pm
by D Sceviour
Madeleine Birchfield wrote: Fri Oct 16, 2020 7:08 pm Do you intend on implementing NNUE in Schooner?
I am looking at this now. The answer will probably be no.