Pre-Release McCain X4

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
MikeB
Posts: 4889
Joined: Thu Mar 09, 2006 6:34 am
Location: Pen Argyl, Pennsylvania

Pre-Release McCain X4

Post by MikeB »

Only for those that can compile their own. Looking for feedback on usability with Chessbase, Areana, XBoard and others Chess GUIs.

source: https://github.com/MichaelB7/Stockfish/releases/tag/X4

Changes since X3:
https://github.com/MichaelB7/Stockfish/ ... lB7:McCain

Specific item to test:

Now accepts 4 polyglot books

Book1 is primary and should very specific to an opening ( or player)
Book2 is wider than book 1, with the secondary lines of book 2 or expanded to more players
Book3 is wider than book 2 , I recommend Thomas Zipproth NN book
Book4 is the big book, Cerebellum or something else that covers a wide variety of lines.

Play By Elo (Engine_ELo) - check the box and pick your ELo. Rating of 1200 should be about 7 nodes per second if you a TC that provides for about 10 seconds per move ( 1 min with 9 second increment) , Goes up to about 2850 which is the vicinity of 150K nps for McCain

Engine Level - select a predefined level and make sure Play by Elo is not checked, no other box to check.

Also, the Lc0 scoring percentage is now the default, but can be picked switched back to centipawn by the user. 0 means loss, 100 means win and 50 is drawish

From Xboard:
Image
User avatar
MikeB
Posts: 4889
Joined: Thu Mar 09, 2006 6:34 am
Location: Pen Argyl, Pennsylvania

Re: Pre-Release McCain X4

Post by MikeB »

I know a lot of folks appreciate the added features, but some folks want to know how does it do against SF. Most of the time, I don't know, since changes are almost always tested again the previous version of McCain.

So fo those that want to see a 500 game match with a time of 5 min with 3 second increment , enjoy!

Results:
https://www.dropbox.com/s/dkazl66lxw6p6 ... a.txt?dl=1

Games:
https://www.dropbox.com/s/cbx3cgyjrlh04 ... s.pgn?dl=1

Early results:

https://www.dropbox.com/s/cbx3cgyjrlh04 ... s.pgn?dl=1

Updates will be at the completion of 20 games or every 789 seconds ( calculated by the script based on time control how often the planned showings are , i.e, every xx games ) I still use Bob Hyatt's testing code he used for Crafty , of course I have modified it over the years and it's fully integrated with his "watcher" script, using env variables - so that the watcher script know the time control and the planned output. The watcher script then calculates a time to display intermediate results that makes sense for the given time control and planned output.

Note all note scripts are for a unix like shell environment - if that does not interest you, you may stop here.

current submit script:

Code: Select all

#!/bin/csh
#set echo on
# Round Robin Submit
# set time limit and increment  this is probably all that needs to be
# changed in this script, and most of the time this doesn't change
# either.  positions_per_match tells the thing how many matches to run
# per job.  as this increases, load balancing suffers, but the time per
# job goes up which can be useful if running against other users that
# submit long-running jobs.  Note that the times are in 10ms units, so
# time = 1000 = 10 seconds, inc = 5 = 50ms (0.05 seconds)
#

#tidy things up
set skipper = 0
if ( $skipper > 0 ) goto skipcleanup
rm -rf run
mkdir run
rm pgn.*
rm game.* log.*
rm -rf elo*.txt
./resubmit_clean_match
#echo "In cleanup loop"
skipcleanup:

setenv threads 1
setenv base 60  ## in seconds
setenv inc_factor 1  #base times inc_factor equals increment
setenv display_results 20
setenv inc_ratio 100 # use 60 for 60 + 1 sec, use 100 for 60 +.6 sec etc
set hours_rt = 1   ## set runtime in hours
set minutes_rt = 0	## set runtime in minute
set plug = 0
set tar_num_pos = 250 ### target number of positions , currently 250
set position = 0 #you can change this to start @ different position in the file
@ startposition = $position
setenv cpus 12
@ hosts =  ($cpus / $threads) #### set hosts to 12/cpus
setenv hosts $hosts # hosts equals number of concurrent active games

set hash = 256

set eng1 = stockfish.ini
set eng2  = McCain-X4.ini

set opponents1= ( $eng1 $eng2 )
set opponents2= ( $eng2 $eng1 )

set players1 = $#opponents1
set players2 = $#opponents2

@ players_factor = $players1 * ( $players2 - 1 )
setenv players_factor $players_factor

set positions_r =  $tar_num_pos  ### when posiitons are enter , return positions , default is 200
@ tar_num_pos = $tar_num_pos * 10
@ positions_r  = $positions_r  * 10

set i = 0
while ( $i < 3 )
	@ i = $i + 1
	@ runtime =  ($minutes_rt * 60 * $tar_num_pos  + $hours_rt * 3600 * $tar_num_pos ) / ($positions_r )

	echo "Base: $base seconds"
@ time = $base * 100 ##match program uses centiseconds

	set inc = `echo "scale=4; ($inc_factor * $base) / $inc_ratio" |bc -lq`
	echo "increment $inc seconds"
	set t_inc = `echo "scale=0 ; $inc * 60 / 1" |bc -lq`
	echo "t_inc $t_inc"
	@ inc_centi = `echo "scale=0; (($inc * 100) / 1)" |bc -lq` # change $inc to centiseconds for match
	@ t_time =  $base + $t_inc
	set total_game_time = `echo "scale=0 ;  ( 2 * $base + $inc * 195 ) / 1" |bc -lq`
	setenv total_game_time $total_game_time
	echo $t_time total player time
	echo $total_game_time total game time

@ Expectedtime = ($players_factor * $tar_num_pos * $total_game_time) / $hosts / 10  #odd, that this needs to be divided by 10
set secs =  $Expectedtime
set h = `echo $secs/3600 | bc`
set m = `echo "$secs/60 - 60*$h" | bc`
set s = `echo $secs%60 | bc`
echo "Expected playing time: $h h: $m m: $s s"
sleep 3

set games_per_position = 1
	@ positions = (( ( $runtime * 40 * $hosts) / $cpus /  $t_time  / $players_factor   / $games_per_position   )  + $plug)

	if ($positions == $tar_num_pos) then
	goto nextstep
	endif


	if ($positions_r == $tar_num_pos ) then
	@ positions = $positions_r
	goto nextstep
	endif

	@ positions_r = (( ( $runtime * 40 * $hosts) / $cpus /  $t_time  / $players_factor   / $games_per_position   )  + $plug)
	@ ret_pos = $positions_r
#	echo $positions positions debug info for testing
#	echo "$positions_r pos_r line 147"
#	echo "$ret_pos ret_pos line 148"



echo "target $tar_num_pos positions $positions"
end
nextstep:
@ positions = $positions / 10
@ tar_num_pos = $tar_num_pos / 10
echo $positions positions
if ($positions != $tar_num_pos) then
	echo ""
	echo "ERROR"
	echo "$positions positions does not equal target $tar_num_pos"
	echo "Adjust time or target and retry ..."
	exit
endif
echo ""
echo "QUIT NOW or forever hold your peace..."
sleep 2


set file = DrSullivan250.epd
set time_odds = 1
set positions_per_match = 1
@ rounds  = $positions * 2


echo "using $positions positions from EPD file"
@ gamesPlanned =  ( $players1  )  * ( $players2 - 1 ) * $positions * $games_per_position
setenv gamesPlanned $gamesPlanned
echo $gamesPlanned "games planned"
@ runtime =  $gamesPlanned * $total_game_time / $hosts
setenv runtime $runtime
echo "$rounds rounds : $total_game_time total_game_time"
echo "runtime : $runtime"
sleep 2
@ counterStart = (( $gamesPlanned  / ( $positions * $games_per_position ) )  * $display_results / 2 + $hosts )
@ counterIncrement = ( $counterStart - $hosts )
echo "$counterStart"
echo "$counterIncrement"
cd run
set logid1 = 101
set logid2 = 50101
set logid3 = 10001
set logid4 = 5000101
rm -f commands
@ pairings = 0

set counter = 0
set gamesStarted = 0
@ gamesPlanned = $gamesPlanned + ( 2 * $startposition )


loop:
@ position = $position + 1 # start at the  1st position 
#@ position = `jot -r 1 1 40457` #use for picking positions at random from a 40,000 position plus epd file

	foreach player1 (`jot $players1`)
foreach player2 (`jot $players2`)

		if ($opponents1[$player1] == $opponents2[$player2] )  goto skip  #  do not want engines to play themselves
			echo "./match "match$position.$player1" $file $position $games_per_position $positions_per_match $time $inc_centi  $opponents1[$player1] localhost $logid1 $opponents2[$player2] localhost $logid2 $time_odds" >> commands
			@ logid1 = $logid1 + $games_per_position * $positions_per_match
			@ logid2 = $logid2 + $games_per_position * $positions_per_match
			@ pairings =  $pairings + $games_per_position
			@ completed = ( $pairings - $hosts + 1  + ( 2 * $startposition )) # for match restarts
           @ gamesStarted = $pairings - $counter
		if (( $gamesStarted + 1 ) < $counterStart ) goto skip
			echo "echo " "" >> commands
			echo "echo " "" >> commands
			echo "echo "$completed of $gamesPlanned games completed..."" >> commands
			echo "echo "Time control: $base seconds + $inc seconds"" >> commands
			echo "echo "Threads = $threads"" >> commands
			echo "echo "Hash = $hash"" >> commands
			echo "./geteloRR1" >> commands
			echo "echo " ">>~/Dropbox/Shared\ Folder/elota.txt" >> commands
			echo "echo "$completed of $gamesPlanned games completed...">>~/Dropbox/Shared\ Folder/elota.txt" >> commands
			echo "echo "Time control: $base seconds + $inc seconds ">>~/Dropbox/Shared\ Folder/elota.txt" >> commands
			echo "echo "Threads: $threads ">>~/Dropbox/Shared\ Folder/elota.txt" >> commands
			echo "echo "Hash: $hash ">>~/Dropbox/Shared\ Folder/elota.txt" >> commands
			echo "./geteloRR2>>~/Dropbox/Shared\ Folder/elota.txt" >> commands
			echo "cp pgn.txt /Users/michaelbyrne/Dropbox/Shared\ Folder/all.txt" >> commands
			echo "rm -f game.*  log.*" >> commands
			@ counter = $counter + $counterIncrement
		skip:
		end
	end  # round is completed with both colors scripted
###     echo "rm game.* log.*" >>commands
if ($pairings < $gamesPlanned ) goto loop

echo "EOF" >> commands
touch run.1
foreach file (run.*)
  rm $file
end
@ record = 0
foreach run ({0,1,2,3,4,5,6,7,8,0}{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9})
  if ($run == "00000") continue
  @ record = $record + 1
  set command = `cat commands | head -$record | tail -1`
  if ($command[1] == "EOF") break
  touch run.$run
echo "$command &" >> run.$run
echo "wait" >> run.$run
  chmod +x run.$run
  if ($command[1] == "EOF") break
end
if ($run == "99999") then
  echo "ERROR, more than 99999 commands, fix script and retry"
  exit
endif
echo "$record run scripts were prepared."
echo "$gamesPlanned games were planned"
set started = `date +%m/%d/%y' : '%H:%M:%S`
set started_s = `date +%s`
echo "Match started:     $started"
@ target_compl = $started_s + $runtime - 14400
## adjust for time zone difference between EST and GMT in seconds
set t_c = `date -u -r $target_compl +%m/%d/%y' : '%H:%M:%S`
echo "Target completion: $t_c"
echo
echo "Base: $base seconds"
echo "Increment: $inc seconds"
sleep 2

setenv engine_count $players2
#open -a Terminal  /Users/michaelbyrne/cluster.mfb/watcher
/Users/michaelbyrne/cluster.mfb/watcher &

cd ..


#
# Now we are going to cycle through each version that is to be tested.  we
# will run a complete test with that version, then we will save the summary
# information and run the next test, until all have been completed.
#
# we use the "autosub" program that submits just enough jobs to keep a
# specified number of processors busy.  As one finishes, another is submitted
# via qsub to take its place, until all matches are run.  
#
#
# note:  if you are running on just one machine (regardless of the number of
# cores, comment out the "./setup" below
# for RR , section can be cleaned up, but you have to be careful not to break
# the script
touch honeyElo.txt
echo '25.1 initial calibration for 25.0 25.1 with new opponents' >> honeyElo.txt
# cp .craftyrc .craftyrc.save
set now = `date +"%m%d%H%M"`
foreach scale ( 1 )
foreach version ( RR-$now )
#		./cleanfiles
#./setup
		echo "scale $scale" >> .craftyrc
        ./autosub
		#
		#  The test has finished, now we just save the results and we are done.
		#
#echo off
        echo " "
        @ pairings = $pairings + (2 * $startposition)
        echo "$rounds rounds and $pairings games completed..."
        echo "Time control: $base seconds + $inc seconds"
		echo "Target completion: $t_c"
        ./geteloRR1
		./getfiles
### IDs pgn file at end
        ./resubmit_mv
###
		echo "%s/$version/$version-$scale/g" > excmd
		echo "wq" >> excmd
		./rename
		echo " " >>~/Dropbox/Shared\ Folder/elota.txt
		set current_time = `date +%s`
		@ time_spent = $current_time - $started_s
		set time_spent = `date -u -r $time_spent +%T`
		echo "Time to complete: $time_spent"
		echo "Time to complete: $time_spent" >>~/Dropbox/Shared\ Folder/elota.txt
        echo "$rounds rounds and $pairings games completed..." >>~/Dropbox/Shared\ Folder/elota.txt
		echo "Time control: $base + $inc seconds " >>~/Dropbox/Shared\ Folder/elota.txt
		echo "Threads = $threads"  >>~/Dropbox/Shared\ Folder/elota.txt
        echo "Hash = $hash"  >>~/Dropbox/Shared\ Folder/elota.txt
		echo " " >>~/Dropbox/Shared\ Folder/elotb.txt
		echo "$rounds rounds and $pairings games completed..." >>~/Dropbox/Shared\ Folder/elotb.txt
		echo "Time control: $base + $inc seconds " >>~/Dropbox/Shared\ Folder/elotb.txt
		echo "Threads = $threads" >>~/Dropbox/Shared\ Folder/elotb.txt
		echo "Hash = $hash" >>~/Dropbox/Shared\ Folder/elotb.txt
        ./geteloRR4>> ~/Dropbox/Shared\ Folder/elota.txt
		touch master.pgn
	    rm game.* log.*
		echo `date` >> honeyElo.txt
		echo "time control = $base + $inc seconds " >> honeyElo.txt
		./geteloRR3 >> honeyElo.txt
		./geteloRR3 >>~/Dropbox/Shared\ Folder/honeyElo.txt
		cp .craftyrc.save .craftyrc
	end
end


rm pgn  pgn.*  games.pgn
exit
current getelo script

Code: Select all

#!/bin/bash


#foreach host (`cat hosts | awk '{print $1}'`)
#set comment = `echo $host | fgrep "#" | wc -l`
#if ($host != "local" && $comment == 0) then
#echo "copying files from $host..."
#scp {$host}:~/cluster.test/match\?.\* . >& /dev/null
dat=`date +"%D"`
#echo "Current date : time (EDST)"
nowt=`date +"%T"`
echo "Date: $dat : $nowt"
num=($(seq 1 24))
for i in "${num[@]}"
	do
		cat match*.$i >pgn.$i -type d 2>/dev/null
	done

rm pgn.txt
for i in "${num[@]}"
do
cat pgn.$i >>pgn.txt
done
cp pgn.txt  games.pgn
bayeselo <<eof | egrep -i "\-|Honey|Fair|Top|McC|S_XPrO|shash|McB|And|SF|gf|Cra|nat|ceebo|cor|Sweet|Mat|EXc|Ari|Sun|Gir|Houd|Brain|cf|Ether|Sting|Glaurung|Bla|Hawk|Mik|k|fruit|toga|Igor|Ippo|Ivan|robb|crit|chen|vajo|Gull|prot|fire|rank|deep|stock|texe|senp|hakk|aras|komo|craf|Sugar|shre|Hiar" |sed -e 's/ResultSet-EloRating>ResultSet-EloRating>//g'|sed -e '1,3d;$d' |sed -e 's/ResultSet-EloRating>ResultSet-EloRating>//g'|sed -e '1,3d;$d' |sed -e 's/ResultSet>ResultSet>ResultSet-EloRating>3100//g' |sed -e 's/ResultSet-EloRating>//g'
readpgn pgn.txt
elo
offset 3100
confidence 0.95
mm 0 1
ratings
x
eof
current watcher script:

Code: Select all

#!/bin/csh
#set echo on
#sleep 600
cd /Users/michaelbyrne/cluster.mfb
clear
./getfiles
echo " "
set in_progress = `ps -ef | grep autosub | grep -v grep | wc -l`
@ in_progress = $in_progress - 1
if ($in_progress < 1) then
echo "No match in progress."

else if ($in_progress > 0) then
set started = `date +%m/%d/%y' : '%H:%M:%S`
echo "Match started:     $started"
echo "$in_progress game currently running"
endif
echo " "
set cpus = $cpus
set base = $base
set inc_ratio = $inc_ratio # use 60 for 60 + 1 sec, use 100 for 60 +.6 sec etc
set display = $display_results
set total_game_time = $total_game_time
set gamesPlanned = $gamesPlanned
set hosts =  $hosts
echo "total game time: $total_game_time"
set loopsleep = 5
set loopsleep2 = 5

@ sleep_initial = ( $total_game_time *  $display_results  * $players_factor ) / ($hosts * 3)
@ sleep_use = (($sleep_initial * 3 ) / 5  )
echo "initial sleep $sleep_initial seconds"
@ sleep_display_quarter = $sleep_use / 4
set spi = $sleep_initial
printf ""
while ($spi > 9)
  if ( $spi % 5 == 0 ) then
    goto work
  endif
  printf " ...seconds remaining: $spi   \r"
  sleep 1
  @ spi = $spi - 1
end

work:
while ($spi > 5)
  printf " ...seconds remaining: $spi   \r"
  sleep $loopsleep
  @ spi = $spi - $loopsleep
end
while ($spi > 0)
  printf " ...seconds remaining: $spi   \r"
  sleep 1
  @ spi = $spi - 1
end
printf " ...seconds remaining: 0   \r"
printf ""
loop:
   printf ""
  ./getfiles
  set in_progress = `ps -ef | grep autosub | grep -v grep | wc -l`
  @ in_progress = $in_progress - 1
  if ($in_progress < 1) then
		goto quickexit
  endif

  echo " "
  ./geteloRR1

  echo " ">>~/Dropbox/Shared\ Folder/elota.txt
  ./geteloRR2>>~/Dropbox/Shared\ Folder/elota.txt
  cp games.pgn ~/Dropbox/Shared\ Folder/
  cat pgn.txt >act.pgn
  cat pgn.txt >pgn
  echo " "
  set in_progress = `ps -ef | grep autosub | grep -v grep | wc -l`
  @ in_progress = $in_progress - 1

  if ($in_progress > $hosts * 3 / 4  ) then
	  echo "Match in progress, $in_progress games are running..."
	  set secs = $sleep_use
	  echo "sleep seconds $sleep_use"

	  while ($secs > 9)
		if ( $secs % 5 == 0 ) then
		  goto work2
		endif
	  	printf " ...seconds remaining: $secs   \r"
	  	sleep 1
	  	@ secs = $secs - 1
	  end

	  work2:
	  while ($secs > 5 )
		printf " ...seconds remaining: $secs   \r"
		sleep $loopsleep2
		@ secs = $secs - $loopsleep2
	  end
	  while ($secs > 0)
	    printf " ...seconds remaining: $secs   \r"
	    sleep 1
	    @ secs = $secs - 1
	  end
	  printf " ...seconds remaining: 0   \r"
	  echo " "
      goto loop
      endif
      echo " "

  if ($in_progress <  $hosts * 3 / 4 + 1 ) then
	  echo "Match in progress, $in_progress games running..."
      echo "Wrapping up soon!"
      goto quickexit
  endif

quickexit:
exit
so far most of these scripts are probably not useful for most people. So if you hung around this long, I wrote script to change a word or phrase globally on multiple files using grep and sed. Using sed and grep is not too difficult for most programmer types, but for others why bother. Well grep and sed are much faster and more versatile than any GUI . The script tis called findNreplace. To use it just type
findNreplace "this is blah" "this is cool" <file.txt> or <file"*".txt>
and yes, it makes backup of all the files you changing before you change them..and you can change files that are multiple levels down from the current directory and it counts how many files you plan to review for a change

So here's a little Easter Egg for those who took the time to read this entire post.
findNreplace

Code: Select all

#!/bin/csh

# by Michael Byrne 5/28/2019
# Invoke using terminal
# findNreplace  <find word phrase> <replace with> <file.txt> or <file"*".txt> using a wildcard,
# do not type the "less than" (<) or "greater than" (>)symbols; however, do type the quote marks
# around the wildcard symbal "*".  You may also identify a range within the quotes:
# findNreplace  <find word> <replace with> <file"*"."[1-2]">
# to replace a phrase with spaces, use double quotes
# findNreplace "this is blah" "this is cool" <file.txt> or <file"*".txt>

##set echo on

set find = $1
echo "find = $1"
set replace = $2
echo "replace = $2"
set file = $3
echo "file = $3"


setenv countf  $#
echo "$countf arguments provided"
set counter = 0
foreach x  (`ls  $3`)  ## files at the top,i.e., in current pwd
@ counter = $counter + 1
cp $x $x.bak  ### to make a backup, leave uncommented (recommended)
echo $x
grep -rliR . $x | xargs -I@ sed -i "" "s/$1/$2/gw $x.tmp" @
# $x.tmp will show the changed item, if zero bytes, no changes were made
end
foreach x  (`ls -1dR **/$3`) ## one level down in immediate (pwd) folders
@ counter = $counter + 1
echo $x
cp $x $x.bak  ### to make a backup, leave uncommented (recommended)
grep -rliR . $x | xargs -I@ sed -i "" "s/$1/$2/gw $x.tmp"  @
end
foreach x  (`ls  -1dR  **/*/$3`)  ## deep run , 2 directory levels down
@ counter = $counter + 1
cp $x $x.bak  ### to make a backup, leave uncommented (recommended)
echo $x
grep -rliR . $x | xargs -I@ sed -i "" "s/$1/$2/gw $x.tmp" @
end
foreach x  (`ls -1dR **/*/*/$3`) ## deeper run, three levels down from immediate (pwd) folders
@ counter = $counter + 1
echo $x
cp $x $x.bak  ### to make a backup, leave uncommented (recommended)
grep -rliR . $x | xargs -I@ sed -i "" "s/$1/$2/gw $x.tmp"  @
end
echo "found $counter files that matched criteria"
wait
## rm -fr  *.bak *.tmp **/*.bak **/*.tmp **/*/*.bak **/*/*.tmp */*/*.bak */*/*.tmp **/*/*.bak **/*/*.tmp **/**/**/*.bak **/**/**/*.tmp
## rerun with this uncommented to delete temp file *.bak and *.tmp
exit
and who said csh is dead ? ....
Image
ChiefPushesWood
Posts: 62
Joined: Thu Nov 08, 2018 6:30 pm
Full name: Chief PushesWood

Re: Pre-Release McCain X4

Post by ChiefPushesWood »

Moved my help request to technical...
A bit off topic for Mikes stuff here.
ChiefPushesWood
Posts: 62
Joined: Thu Nov 08, 2018 6:30 pm
Full name: Chief PushesWood

Re: Pre-Release McCain X4

Post by ChiefPushesWood »

Hey Mike,
I figured out how to compile the engine... Here is a screenshot in Chessbase... Everything is working just fine including the drop downs, etc. Obviously you can see one of the words is truncated (Analysis Contempt) but I don't really care about that.

Thank you for working on this.

Let me know if there is anything else I can test for you specifically.

Chief

Image
User avatar
MikeB
Posts: 4889
Joined: Thu Mar 09, 2006 6:34 am
Location: Pen Argyl, Pennsylvania

Re: Pre-Release McCain X4

Post by MikeB »

ChiefPushesWood wrote: Thu Jun 13, 2019 12:12 am [snip]
I figured out how to compile the engine...
[snip]
+1 awesome ..congrats - for us non-programmers, that is a milestone! ( that's how I started over 20 years ago...)
Image
User avatar
MikeB
Posts: 4889
Joined: Thu Mar 09, 2006 6:34 am
Location: Pen Argyl, Pennsylvania

Re: Pre-Release McCain X4

Post by MikeB »

I was able to get some Windows and macOS binaries for those I who like to kick the ties and provide input.

https://github.com/MichaelB7/Stockfish/releases/tag/X4
Image
JohnS
Posts: 215
Joined: Sun Feb 24, 2008 2:08 am

Re: Pre-Release McCain X4

Post by JohnS »

MikeB wrote: Thu Jun 13, 2019 2:05 am I was able to get some Windows and macOS binaries for those I who like to kick the ties and provide input.

https://github.com/MichaelB7/Stockfish/releases/tag/X4
Mike

I tried the Lucas compile. The options look ok in CB15 but the hash shows 2764 even though I set it to 512 outside CB.
This is the uci file I use.

Code: Select all

[ENGINE]
Name=McCain X4
Author=M. Byrne, Stockfish authors and others
Filename=c:\mccain\McCain-X4_x64_bmi2.exe
[OPTIONS]
UCI_Chess960=true
W_Contempt=0
B_Contempt=0
Best Move 3=false
Dynamic_Contempt=false
Threads=1 
Hash=512
SyzygyPath=SyzygyPath=c:\tablebases\syzygy
Setting the hash to 512 in engine properties while running McCain in CB seems to work. BTW the hash is not even shown in the screenshot from CPW.
Is this a bug?

Thanks for all your great work.
User avatar
MikeB
Posts: 4889
Joined: Thu Mar 09, 2006 6:34 am
Location: Pen Argyl, Pennsylvania

Re: Pre-Release McCain X4

Post by MikeB »

MikeB wrote: Wed Jun 12, 2019 6:58 am I know a lot of folks appreciate the added features, but some folks want to know how does it do against SF. Most of the time, I don't know, since changes are almost always tested again the previous version of McCain.

So fo those that want to see a 500 game match with a time of 5 min with 3 second increment , enjoy!

Results:
https://www.dropbox.com/s/dkazl66lxw6p6 ... a.txt?dl=1

Games:
https://www.dropbox.com/s/cbx3cgyjrlh04 ... s.pgn?dl=1

Early results:

https://www.dropbox.com/s/cbx3cgyjrlh04 ... s.pgn?dl=1

Updates will be at the completion of 20 games or every 789 seconds ( calculated by the script based on time control how often the planned showings are , i.e, every xx games ) I still use Bob Hyatt's testing code he used for Crafty , of course I have modified it over the years and it's fully integrated with his "watcher" script, using env variables - so that the watcher script know the time control and the planned output. The watcher script then calculates a time to display intermediate results that makes sense for the given time control and planned output.

[big snip]
final result and this is not a fluke:

Code: Select all

500 rounds and 500 games completed...
Time control: 300 seconds + 3.0000 seconds
Target completion: 06/12/19 : 13:37:04
Date: 06/12/19 : 13:08:54
500 game(s) loaded
Rank Name                      Rating   Δ     +    -     #     Σ    Σ%     W    L    D   W%    =%   OppR 
---------------------------------------------------------------------------------------------------------
   1 Stockfish 090619 64 POPC   3102   0.0   15   15   500  253.5  50.7   68   61  371  13.6  74.2  3098 
   2 McCain X4                  3098   4.4   15   15   500  246.5  49.3   61   68  371  12.2  74.2  3102 
---------------------------------------------------------------------------------------------------------
RR-061219-1308.pgn
It's a fluke when McCain or Honey finishes higher that current-dev-SF...

this probably close to real as well, maybe a 10 Elo improvement over X3 - thanks to the SF team:

Code: Select all

500 rounds and 500 games completed...
Time control: 60 seconds + .6000 seconds
Target completion: 06/12/19 : 15:54:18
Date: 06/12/19 : 15:22:31
500 game(s) loaded
Rank Name       Rating   Δ     +    -     #     Σ    Σ%     W    L    D   W%    =%   OppR 
---------------------------------------------------------------------------------------------------------
   1 McCain X4   3105   0.0   17   17   500  257.5  51.5   86   71  343  17.2  68.6  3095 
   2 McCain X3   3095  10.9   17   17   500  242.5  48.5   71   86  343  14.2  68.6  3105 
---------------------------------------------------------------------------------------------------------
RR-061219-1522.pgn
Image
ChiefPushesWood
Posts: 62
Joined: Thu Nov 08, 2018 6:30 pm
Full name: Chief PushesWood

Re: Pre-Release McCain X4

Post by ChiefPushesWood »

JohnS wrote: Thu Jun 13, 2019 3:48 am
MikeB wrote: Thu Jun 13, 2019 2:05 am I was able to get some Windows and macOS binaries for those I who like to kick the ties and provide input.

https://github.com/MichaelB7/Stockfish/releases/tag/X4
Mike

I tried the Lucas compile. The options look ok in CB15 but the hash shows 2764 even though I set it to 512 outside CB.
This is the uci file I use.

Code: Select all

[ENGINE]
Name=McCain X4
Author=M. Byrne, Stockfish authors and others
Filename=c:\mccain\McCain-X4_x64_bmi2.exe
[OPTIONS]
UCI_Chess960=true
W_Contempt=0
B_Contempt=0
Best Move 3=false
Dynamic_Contempt=false
Threads=1 
Hash=512
SyzygyPath=SyzygyPath=c:\tablebases\syzygy
Setting the hash to 512 in engine properties while running McCain in CB seems to work. BTW the hash is not even shown in the screenshot from CPW.
Is this a bug?

Thanks for all your great work.
Hash in CB is handled outside of the UCI parameters.
Image

Chief
JohnS
Posts: 215
Joined: Sun Feb 24, 2008 2:08 am

Re: Pre-Release McCain X4

Post by JohnS »

ChiefPushesWood wrote: Thu Jun 13, 2019 4:52 am
Hash in CB is handled outside of the UCI parameters.
Image

Chief
Thanks Chief. I wonder if this is a "feature" or a bug in CB.