From f994b1026e97de497a30f35c0dd7dffc0250b836 Mon Sep 17 00:00:00 2001 From: Danny Hammer Date: Tue, 8 Oct 2024 15:32:09 -0600 Subject: [PATCH 001/127] chore: set up configs for Toad --- Config/config.json | 41 ++++---------- Engines/Akimbo.json | 90 ------------------------------- Engines/Alexandria.json | 85 ----------------------------- Engines/Altair.json | 89 ------------------------------ Engines/Berserk.json | 105 ------------------------------------ Engines/Bit-Genie.json | 71 ------------------------ Engines/Caissa.json | 83 ---------------------------- Engines/Carp.json | 99 ---------------------------------- Engines/Clover.json | 71 ------------------------ Engines/Demolito.json | 71 ------------------------ Engines/Drofa.json | 71 ------------------------ Engines/Equisetum.json | 71 ------------------------ Engines/Halogen.json | 71 ------------------------ Engines/Koivisto.json | 71 ------------------------ Engines/Laser.json | 71 ------------------------ Engines/Midnight.json | 89 ------------------------------ Engines/Pytteliten.json | 89 ------------------------------ Engines/RubiChess.json | 71 ------------------------ Engines/Seer.json | 71 ------------------------ Engines/Stash.json | 71 ------------------------ Engines/Svart.json | 89 ------------------------------ Engines/Toad.json | 117 ++++++++++++++++++++++++++++++++++++++++ Engines/Wahoo.json | 89 ------------------------------ Engines/Weiss.json | 95 -------------------------------- Engines/Willow.json | 59 -------------------- Engines/Winter.json | 71 ------------------------ Engines/Zahak.json | 71 ------------------------ 27 files changed, 127 insertions(+), 2015 deletions(-) delete mode 100644 Engines/Akimbo.json delete mode 100644 Engines/Alexandria.json delete mode 100644 Engines/Altair.json delete mode 100644 Engines/Berserk.json delete mode 100644 Engines/Bit-Genie.json delete mode 100644 Engines/Caissa.json delete mode 100644 Engines/Carp.json delete mode 100644 Engines/Clover.json delete mode 100644 Engines/Demolito.json delete mode 100644 Engines/Drofa.json delete mode 100644 Engines/Equisetum.json delete mode 100644 Engines/Halogen.json delete mode 100644 Engines/Koivisto.json delete mode 100644 Engines/Laser.json delete mode 100644 Engines/Midnight.json delete mode 100644 Engines/Pytteliten.json delete mode 100644 Engines/RubiChess.json delete mode 100644 Engines/Seer.json delete mode 100644 Engines/Stash.json delete mode 100644 Engines/Svart.json create mode 100644 Engines/Toad.json delete mode 100644 Engines/Wahoo.json delete mode 100644 Engines/Weiss.json delete mode 100644 Engines/Willow.json delete mode 100644 Engines/Winter.json delete mode 100644 Engines/Zahak.json diff --git a/Config/config.json b/Config/config.json index 19599e61..f265f539 100644 --- a/Config/config.json +++ b/Config/config.json @@ -1,14 +1,14 @@ { - "client_version" : 32, - "client_repo_url" : "https://github.com/AndyGrant/OpenBench", - "client_repo_ref" : "master", + "client_version": 32, + "client_repo_url": "https://github.com/dannyhammer/openbench", + "client_repo_ref": "master", - "use_cross_approval" : false, - "require_login_to_view" : false, - "require_manual_registration" : false, - "balance_engine_throughputs" : false, + "use_cross_approval": false, + "require_login_to_view": false, + "require_manual_registration": false, + "balance_engine_throughputs": false, - "books" : [ + "books": [ "2moves_v1.epd", "3moves_FRC.epd", "4moves_noob.epd", @@ -22,26 +22,5 @@ "UHO_4060_vT.epd" ], - "engines" : [ - "4ku", - "Berserk", - "Bit-Genie", - "BlackMarlin", - "Demolito", - "Drofa", - "Equisetum", - "Ethereal", - "FabChess", - "Halogen", - "Igel", - "Koivisto", - "Laser", - "RubiChess", - "Seer", - "Stash", - "Stockfish", - "Weiss", - "Winter", - "Zahak" - ] -} \ No newline at end of file + "engines": ["BlackMarlin", "Ethereal", "Stockfish", "Toad"] +} diff --git a/Engines/Akimbo.json b/Engines/Akimbo.json deleted file mode 100644 index 0841f7c0..00000000 --- a/Engines/Akimbo.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "private" : false, - "nps" : 1075000, - "source" : "https://github.com/jw1912/akimbo", - - "build" : { - "path" : "", - "compilers" : ["cargo>=1.70.0"], - "cpuflags" : [], - "systems" : ["Linux", "Windows", "Darwin"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "main", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "test_bounds" : "[0.00, 3.00]" - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "STC regression" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "test_bounds" : "[-5.00, 0.00]" - }, - - "LTC regression" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8, - "test_bounds" : "[-5.00, 0.00]" - }, - - "STC progtest" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "book_name" : "8moves_v3.epd", - "test_max_games" : 4000 - }, - - "LTC progtest" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "60.0+0.6", - "workload_size" : 8, - "book_name" : "8moves_v3.epd", - "test_max_games" : 2000 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Alexandria.json b/Engines/Alexandria.json deleted file mode 100644 index 7f37bee4..00000000 --- a/Engines/Alexandria.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "private" : false, - "nps" : 1025000, - "source" : "https://github.com/PGG106/Alexandria", - - "build" : { - "path" : "", - "compilers" : ["g++"], - "cpuflags" : [], - "systems" : ["Linux", "Windows", "Darwin"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 3.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "STC regression" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "test_bounds" : "[-3.00, 1.00]" - }, - - "LTC regression" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8, - "test_bounds" : "[-3.00, 1.00]" - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "4.0+0.04", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "16.0+0.16", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Altair.json b/Engines/Altair.json deleted file mode 100644 index 6a91583c..00000000 --- a/Engines/Altair.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "private" : false, - "nps" : 990000, - "source" : "https://github.com/Alex2262/AltairChessEngine", - - "build" : { - "path" : "", - "compilers" : ["clang++"], - "cpuflags" : [], - "systems" : ["Linux", "Windows", "Darwin"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "STC Simple" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "test_bounds" : "[-5.00, 0.00]" - }, - - "LTC Simple" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8, - "test_bounds" : "[-5.00, 0.00]" - }, - - "STC Prog" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "book_name" : "8moves_v3.epd", - "test_max_games" : 3000 - }, - - "LTC Prog" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8, - "book_name" : "8moves_v3.epd", - "test_max_games" : 1000 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Berserk.json b/Engines/Berserk.json deleted file mode 100644 index 7c7b0ca9..00000000 --- a/Engines/Berserk.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "private" : false, - "nps" : 750000, - "source" : "https://github.com/jhonnold/berserk", - - "build" : { - "path" : "src", - "compilers" : ["clang", "gcc"], - "cpuflags" : ["AVX2", "FMA", "POPCNT"], - "systems" : ["Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "main", - "book_name" : "UHO_4060_vB.epd", - "test_bounds" : "[0.00, 2.00]", - "test_confidence" : "[0.1, 0.05]", - "win_adj" : "movecount=4 score=300", - "draw_adj" : "movenumber=32 movecount=6 score=6" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "10.0+0.1", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "60.0+0.6", - "workload_size" : 8, - "test_bounds" : "[0.00, 2.50]" - }, - - "STC Simplify" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "10.0+0.1", - "workload_size" : 32, - "test_bounds" : "[-2.00, 0.00]" - }, - - "LTC Simplify" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "60.0+0.6", - "workload_size" : 8, - "test_bounds" : "[-2.00, 0.00]" - }, - - "STC Fixed" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "10.0+0.1", - "workload_size" : 32, - "test_max_games" : 20000 - }, - - "LTC Fixed" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "60.0+0.6", - "workload_size" : 8, - "test_max_games" : 20000 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "30.0+0.30", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "UHO_4060_vB.epd", - "win_adj" : "movecount=4 score=300", - "draw_adj" : "movenumber=32 movecount=6 score=6" - }, - - "STC" : { - "dev_options" : "Threads=1 Hash=8", - "dev_time_control" : "10.0+0.10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Bit-Genie.json b/Engines/Bit-Genie.json deleted file mode 100644 index c28384dd..00000000 --- a/Engines/Bit-Genie.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 1992000, - "source" : "https://github.com/Aryan1508/Bit-Genie", - - "build" : { - "path" : "src", - "compilers" : ["g++"], - "cpuflags" : ["POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "20.0+0.2", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Caissa.json b/Engines/Caissa.json deleted file mode 100644 index 461504c9..00000000 --- a/Engines/Caissa.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "private" : false, - "nps" : 1340000, - "source" : "https://github.com/Witek902/Caissa", - - "build" : { - "path" : "src", - "compilers" : ["g++"], - "cpuflags" : ["AVX2", "FMA", "POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "UHO_Lichess_4852_v1.epd", - "test_bounds" : "[0.00, 2.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=32 movecount=8 score=5" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "10.0+0.1", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "60.0+0.6", - "workload_size" : 8 - }, - - "LTC Fixed" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "60.0+0.6", - "workload_size" : 8, - "test_max_games" : 20000 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "30.0+0.30", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "UHO_4060_v2.epd", - "win_adj" : "movecount=4 score=500", - "draw_adj" : "movenumber=32 movecount=6 score=6" - }, - - "STC" : { - "dev_options" : "Threads=1 Hash=8", - "dev_time_control" : "10.0+0.10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Carp.json b/Engines/Carp.json deleted file mode 100644 index 7ad3cb3c..00000000 --- a/Engines/Carp.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "private" : false, - "nps" : 975000, - "source" : "https://github.com/dede1751/carp", - - "build" : { - "path" : "", - "compilers" : ["cargo>=1.70.0"], - "cpuflags" : [], - "systems" : ["Linux", "Windows", "Darwin"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "dev", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "STC Reg" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "test_bounds" : "[-4.00, 1.00]" - }, - - "LTC Reg" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8, - "test_bounds" : "[-4.00, 1.00]" - }, - - "STC Prog" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "test_max_games" : 3000 - }, - - "LTC Prog" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "60.0+0.6", - "workload_size" : 8, - "test_max_games" : 1000 - }, - - "SMP STC" : { - "both_options" : "Threads=4 Hash=16", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "SMP LTC" : { - "both_options" : "Threads=4 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Clover.json b/Engines/Clover.json deleted file mode 100644 index 401155bd..00000000 --- a/Engines/Clover.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 850000, - "source" : "https://github.com/lucametehau/CloverEngine", - - "build" : { - "path" : "src", - "compilers" : ["g++"], - "cpuflags" : [], - "systems" : ["Linux", "Windows", "Darwin"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 3.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "4.0+0.04", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "16.0+0.16", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Demolito.json b/Engines/Demolito.json deleted file mode 100644 index 89662915..00000000 --- a/Engines/Demolito.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 1382000, - "source" : "https://github.com/lucasart/Demolito", - - "build" : { - "path" : "src", - "compilers" : ["clang", "gcc"], - "cpuflags" : ["POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "32.0+0.32", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=32", - "both_time_control" : "4.0+0.04", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=128", - "both_time_control" : "16.0+0.16", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Drofa.json b/Engines/Drofa.json deleted file mode 100644 index 91501868..00000000 --- a/Engines/Drofa.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 1165000, - "source" : "https://github.com/justNo4b/Drofa", - - "build" : { - "path" : "", - "compilers" : ["g++"], - "cpuflags" : ["POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "4moves_noob.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "20.0+0.2", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "4moves_noob.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Equisetum.json b/Engines/Equisetum.json deleted file mode 100644 index a1b2db22..00000000 --- a/Engines/Equisetum.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 1100000, - "source" : "https://github.com/justNo4b/Equisetum", - - "build" : { - "path" : "", - "compilers" : ["g++"], - "cpuflags" : ["POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "main", - "book_name" : "Pohl.pgn", - "test_bounds" : "[0.00, 4.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "20.0+0.2", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.pgn", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Halogen.json b/Engines/Halogen.json deleted file mode 100644 index 3800e003..00000000 --- a/Engines/Halogen.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 1893000, - "source" : "https://github.com/KierenP/Halogen", - - "build" : { - "path" : "src", - "compilers" : ["g++>=9.0.0", "clang++>=10.0.0"], - "cpuflags" : ["AVX2", "FMA", "POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "UHO_4060_v2.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=8 OutputLevel=Minimal", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64 OutputLevel=Minimal", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64 OutputLevel=Minimal", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256 OutputLevel=Minimal", - "both_time_control" : "20.0+0.2", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "UHO_4060_v2.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Koivisto.json b/Engines/Koivisto.json deleted file mode 100644 index c5137a24..00000000 --- a/Engines/Koivisto.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 1327000, - "source" : "https://github.com/Luecx/Koivisto", - - "build" : { - "path" : "src_files", - "compilers" : ["g++"], - "cpuflags" : ["AVX2", "FMA", "POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 2.50]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "20.0+0.2", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Laser.json b/Engines/Laser.json deleted file mode 100644 index be393376..00000000 --- a/Engines/Laser.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 933000, - "source" : "https://github.com/jeffreyan11/uci-chess-engine", - - "build" : { - "path" : "src", - "compilers" : ["g++"], - "cpuflags" : ["POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "20.0+0.2", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Midnight.json b/Engines/Midnight.json deleted file mode 100644 index 0bf3ffbb..00000000 --- a/Engines/Midnight.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "private" : false, - "nps" : 912000, - "source" : "https://github.com/archishou/MidnightChessEngine", - - "build" : { - "path" : "", - "compilers" : ["clang++", "g++"], - "cpuflags" : [], - "systems" : ["Linux", "Windows", "Darwin"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "STC Simple" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "test_bounds" : "[-5.00, 0.00]" - }, - - "LTC Simple" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8, - "test_bounds" : "[-5.00, 0.00]" - }, - - "STC Prog" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "book_name" : "8moves_v3.epd", - "test_max_games" : 3000 - }, - - "LTC Prog" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8, - "book_name" : "8moves_v3.epd", - "test_max_games" : 1000 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Pytteliten.json b/Engines/Pytteliten.json deleted file mode 100644 index 2eef9f96..00000000 --- a/Engines/Pytteliten.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "private" : false, - "nps" : 5288029, - "source" : "https://github.com/crippa1337/Pytteliten", - - "build" : { - "path" : "", - "compilers" : ["clang++", "g++"], - "cpuflags" : [], - "systems" : ["Linux", "Windows", "Darwin"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "4moves_noob.epd", - "test_bounds" : "[0.00, 10.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "STC regression" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "test_bounds" : "[-10.00, 0.00]" - }, - - "LTC regression" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8, - "test_bounds" : "[-10.00, 0.00]" - }, - - "STC progtest" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "10.0+0.1", - "workload_size" : 32, - "book_name" : "8moves_v3.epd", - "test_max_games" : 4000 - }, - - "LTC progtest" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "60.0+0.6", - "workload_size" : 8, - "book_name" : "8moves_v3.epd", - "test_max_games" : 2000 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "4moves_noob.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/RubiChess.json b/Engines/RubiChess.json deleted file mode 100644 index 0245fe7c..00000000 --- a/Engines/RubiChess.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 760000, - "source" : "https://github.com/Matthies/RubiChess", - - "build" : { - "path" : "src", - "compilers" : ["g++"], - "cpuflags" : ["POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "10.0+0.1", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "60.0+0.6", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "20.0+0.2", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Seer.json b/Engines/Seer.json deleted file mode 100644 index 803cbf62..00000000 --- a/Engines/Seer.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 785000, - "source" : "https://github.com/connormcmonigle/seer-nnue", - - "build" : { - "path" : "build", - "compilers" : ["g++>=9.0.0"], - "cpuflags" : ["AVX2", "FMA", "POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "main", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "20.0+0.2", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Stash.json b/Engines/Stash.json deleted file mode 100644 index 37b713e2..00000000 --- a/Engines/Stash.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 1615000, - "source" : "https://github.com/mhouppin/stash-bot", - - "build" : { - "path" : "src", - "compilers" : ["gcc", "clang"], - "cpuflags" : ["POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "4moves_noob.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "20.0+0.2", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "4moves_noob.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Svart.json b/Engines/Svart.json deleted file mode 100644 index 7e2d947e..00000000 --- a/Engines/Svart.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "private" : false, - "nps" : 1350000, - "source" : "https://github.com/crippa1337/svart", - - "build" : { - "path" : "", - "compilers" : ["cargo>=1.70.0"], - "cpuflags" : [], - "systems" : ["Linux", "Windows", "Darwin"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "STC regression" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "test_bounds" : "[-5.00, 0.00]" - }, - - "LTC regression" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8, - "test_bounds" : "[-5.00, 0.00]" - }, - - "STC progtest" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "10.0+0.1", - "workload_size" : 32, - "book_name" : "8moves_v3.epd", - "test_max_games" : 4000 - }, - - "LTC progtest" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "60.0+0.6", - "workload_size" : 8, - "book_name" : "8moves_v3.epd", - "test_max_games" : 2000 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Toad.json b/Engines/Toad.json new file mode 100644 index 00000000..0fc707b9 --- /dev/null +++ b/Engines/Toad.json @@ -0,0 +1,117 @@ +{ + "private": false, + "nps": 12709307, + "source": "https://github.com/dannyhammer/toad", + + "build": { + "path": "", + "compilers": ["cargo>=1.80.1"], + "cpuflags": [], + "systems": ["Linux", "Windows", "Darwin"] + }, + + "test_presets": { + "default": { + "base_branch": "main", + "dev_branch": "dev", + "book_name": "Pohl.epd", + "test_bounds": "[0.00, 3.00]", + "test_confidence": "[0.05, 0.05]", + "win_adj": "movecount=3 score=400", + "draw_adj": "movenumber=40 movecount=8 score=10" + }, + + "STC": { + "both_options": "Threads=1 Hash=16", + "both_time_control": "8.0+0.08", + "workload_size": 32 + }, + + "LTC": { + "both_options": "Threads=1 Hash=128", + "both_time_control": "40.0+0.4", + "workload_size": 8 + }, + + "STC regression": { + "both_options": "Threads=1 Hash=16", + "both_time_control": "8.0+0.08", + "workload_size": 32, + "test_bounds": "[-5.00, 0.00]" + }, + + "LTC regression": { + "both_options": "Threads=1 Hash=128", + "both_time_control": "40.0+0.4", + "workload_size": 8, + "test_bounds": "[-5.00, 0.00]" + }, + + "STC progtest": { + "both_options": "Threads=1 Hash=16", + "both_time_control": "8.0+0.08", + "workload_size": 32, + "test_max_games": 3000 + }, + + "LTC progtest": { + "both_options": "Threads=1 Hash=128", + "both_time_control": "60.0+0.6", + "workload_size": 8, + "test_max_games": 1000 + }, + + "SMP STC": { + "both_options": "Threads=4 Hash=16", + "both_time_control": "8.0+0.08", + "workload_size": 32 + }, + + "SMP LTC": { + "both_options": "Threads=4 Hash=128", + "both_time_control": "40.0+0.4", + "workload_size": 8 + } + }, + + "tune_presets": { + "default": { + "book_name": "UHO_4060_v2.epd", + "win_adj": "movecount=3 score=400", + "draw_adj": "movenumber=40 movecount=8 score=10" + }, + + "STC": { + "dev_options": "Threads=1 Hash=8", + "dev_time_control": "10.0+0.10" + }, + + "MTC": { + "dev_options": "Threads=1 Hash=32", + "dev_time_control": "30.0+0.30" + }, + + "LTC": { + "dev_options": "Threads=1 Hash=64", + "dev_time_control": "60.0+0.60" + }, + + "VLTC": { + "dev_options": "Threads=1 Hash=128", + "dev_time_control": "180.0+1.80" + } + }, + + "datagen_presets": { + "default": { + "win_adj": "None", + "draw_adj": "None", + "workload_size": 128 + }, + + "40k Nodes": { + "both_options": "Threads=1 Hash=16", + "both_time_control": "N=40000" + } + } +} diff --git a/Engines/Wahoo.json b/Engines/Wahoo.json deleted file mode 100644 index 9777215a..00000000 --- a/Engines/Wahoo.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "private" : false, - "nps" : 2680000, - "source" : "https://github.com/spamdrew128/Wahoo", - - "build" : { - "path" : "", - "compilers" : ["cargo>=1.60.0"], - "cpuflags" : [], - "systems" : ["Linux", "Windows", "Darwin"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "dev", - "book_name" : "noob_4moves.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "None", - "draw_adj" : "None" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "STC Simple" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "test_bounds" : "[-5.00, 0.00]" - }, - - "LTC Simple" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8, - "test_bounds" : "[-5.00, 0.00]" - }, - - "STC Prog" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "book_name" : "8moves_v3.epd", - "test_max_games" : 3000 - }, - - "LTC Prog" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8, - "book_name" : "8moves_v3.epd", - "test_max_games" : 1000 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "noob_4moves.epd", - "win_adj" : "None", - "draw_adj" : "None" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Weiss.json b/Engines/Weiss.json deleted file mode 100644 index 923b9d5b..00000000 --- a/Engines/Weiss.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "private" : false, - "nps" : 1090000, - "source" : "https://github.com/TerjeKir/weiss", - - "build" : { - "path" : "src", - "compilers" : ["gcc"], - "cpuflags" : ["POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "UHO_4060_v2.epd", - "test_bounds" : "[0.00, 3.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=32 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "STC Simplify" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32, - "test_bounds" : "[-3.00, 0.00]" - }, - - "LTC Simplify" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "40.0+0.4", - "workload_size" : 8, - "test_bounds" : "[-3.00, 0.00]" - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=128", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=512", - "both_time_control" : "20.0+0.2", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "UHO_4060_v2.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=32 movecount=8 score=10" - }, - - "STC" : { - "dev_options" : "Threads=1 Hash=32", - "dev_time_control" : "8.0+0.08" - }, - - "LTC" : { - "dev_options" : "Threads=1 Hash=128", - "dev_time_control" : "40.0+0.4" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Willow.json b/Engines/Willow.json deleted file mode 100644 index 3c4e6d31..00000000 --- a/Engines/Willow.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "private" : false, - "nps" : 850000, - "source" : "https://github.com/Adam-Kulju/Willow", - - "build" : { - "path" : "", - "compilers" : ["clang++", "g++"], - "cpuflags" : [], - "systems" : ["Linux", "Windows", "Darwin"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "main", - "book_name" : "4moves_noob.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=32", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=128", - "both_time_control" : "60.0+0.6", - "workload_size" : 8 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "4moves_noob.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Winter.json b/Engines/Winter.json deleted file mode 100644 index cd6aced4..00000000 --- a/Engines/Winter.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 360000, - "source" : "https://github.com/rosenthj/Winter", - - "build" : { - "path" : "", - "compilers" : ["clang++", "g++"], - "cpuflags" : ["POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "20.0+0.2", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} diff --git a/Engines/Zahak.json b/Engines/Zahak.json deleted file mode 100644 index 8fc0b73b..00000000 --- a/Engines/Zahak.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "private" : false, - "nps" : 949000, - "source" : "https://github.com/amanjpro/zahak", - - "build" : { - "path" : "", - "compilers" : ["go"], - "cpuflags" : ["AVX", "POPCNT"], - "systems" : ["Windows", "Linux"] - }, - - "test_presets" : { - - "default" : { - "base_branch" : "master", - "book_name" : "Pohl.epd", - "test_bounds" : "[0.00, 5.00]", - "test_confidence" : "[0.05, 0.05]", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - }, - - "STC" : { - "both_options" : "Threads=1 Hash=8", - "both_time_control" : "8.0+0.08", - "workload_size" : 32 - }, - - "LTC" : { - "both_options" : "Threads=1 Hash=64", - "both_time_control" : "40.0+0.4", - "workload_size" : 8 - }, - - "SMP STC" : { - "both_options" : "Threads=8 Hash=64", - "both_time_control" : "5.0+0.05", - "workload_size" : 64 - }, - - "SMP LTC" : { - "both_options" : "Threads=8 Hash=256", - "both_time_control" : "20.0+0.2", - "workload_size" : 16 - } - }, - - "tune_presets" : { - - "default" : { - "book_name" : "Pohl.epd", - "win_adj" : "movecount=3 score=400", - "draw_adj" : "movenumber=40 movecount=8 score=10" - } - }, - - "datagen_presets" : { - - "default" : { - "win_adj" : "None", - "draw_adj" : "None", - "workload_size" : 128 - }, - - "40k Nodes" : { - "both_options" : "Threads=1 Hash=16", - "both_time_control" : "N=40000" - } - } -} From 8b037cd4972d122cf6208e5b21dcf938350e456c Mon Sep 17 00:00:00 2001 From: Danny Hammer Date: Wed, 9 Oct 2024 16:53:10 -0600 Subject: [PATCH 002/127] Add scipy 1.9.0 to server's requirements.txt (#245) See PR for greater explanation Set the minimal scipy version that contains scipy.optimize. Perhaps in time, we will adjust to >=1.9.0 instead of ==1.9.0. --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e6778782..98953867 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ Django==4.2.1 django-htmlmin==0.11.0 requests -scipy \ No newline at end of file +scipy==1.9.0 From 658586e256e471759ec9d6222d986dfe8b440597 Mon Sep 17 00:00:00 2001 From: Danny Hammer Date: Tue, 8 Oct 2024 15:32:09 -0600 Subject: [PATCH 003/127] chore: set up configs for Toad --- Engines/Toad.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Engines/Toad.json b/Engines/Toad.json index 0fc707b9..49d2cf1d 100644 --- a/Engines/Toad.json +++ b/Engines/Toad.json @@ -1,6 +1,6 @@ { "private": false, - "nps": 12709307, + "nps": 1605879, "source": "https://github.com/dannyhammer/toad", "build": { @@ -15,10 +15,10 @@ "base_branch": "main", "dev_branch": "dev", "book_name": "Pohl.epd", - "test_bounds": "[0.00, 3.00]", + "test_bounds": "[0.00, 10.00]", "test_confidence": "[0.05, 0.05]", - "win_adj": "movecount=3 score=400", - "draw_adj": "movenumber=40 movecount=8 score=10" + "win_adj": "None", + "draw_adj": "None" }, "STC": { From a28e60ccc229e9e6bc41cee3fd62f123decff68c Mon Sep 17 00:00:00 2001 From: Danny Hammer Date: Mon, 21 Oct 2024 19:30:19 -0600 Subject: [PATCH 004/127] feat: adds support for Discord Webhooks (#1) * feat: added webhook for test completion * chore: updated gitignore to ignore webhook --- .gitignore | 2 ++ OpenBench/utils.py | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index d79145a3..19e638d7 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,5 @@ Media/* Media/PGNs/* Media/Networks/* Media/Events/* + +webhook \ No newline at end of file diff --git a/OpenBench/utils.py b/OpenBench/utils.py index 7a9eed44..997a204c 100644 --- a/OpenBench/utils.py +++ b/OpenBench/utils.py @@ -20,10 +20,8 @@ import datetime import hashlib -import json import math import os -import random import re import requests @@ -41,6 +39,7 @@ from OpenBench.config import OPENBENCH_CONFIG from OpenBench.models import * from OpenBench.stats import TrinomialSPRT, PentanomialSPRT +from OpenBench.templatetags.mytags import longStatBlock import OpenBench.views @@ -396,6 +395,34 @@ def network_edit(request, engine, network): return OpenBench.views.redirect(request, '/networks/%s' % (network.engine), status='Applied changes') +def notify_webhook(request, test_id): + webhook = open('webhook').read().strip() # Removing trailing whitespace/newline, if present + test = Test.objects.get(id=test_id) + + # Compute stats + lower, elo, upper = OpenBench.stats.Elo(test.results()) + error = max(upper - elo, elo - lower) + elo = OpenBench.templatetags.mytags.twoDigitPrecision(elo) + error = OpenBench.templatetags.mytags.twoDigitPrecision(error) + outcome = 'passed' if test.passed else 'failed' + + # Green if passing, red if failing. + color = 0xFEFF58 + if test.passed: + color = 0x37F769 + elif test.wins < test.losses: + color = 0xFA4E4E + + return requests.post(webhook, json={ + 'username': test.dev_engine, + 'embeds': [{ + 'author': { 'name': test.author }, + 'title': f'Test `{test.dev.name}` vs `{test.base.name}` {outcome}', + 'url': request.build_absolute_uri(f'/test/{test_id}'), + 'color': color, + 'description': f'```\n{longStatBlock(test)}\n```', + }] + }) def update_test(request, machine): @@ -502,5 +529,9 @@ def update_test(request, machine): Machine.objects.filter(id=machine_id).update( updated=timezone.now() ) + + # Send update to webhook, if it exists + if test.finished and os.path.exists('webhook'): + notify_webhook(request, test_id) return [{}, { 'stop' : True }][test.finished] From 01c2ddac4c05abae3664703f887808a4b88e9ab1 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 12 Nov 2024 17:31:06 -0500 Subject: [PATCH 005/127] Clarify use of relative paths in benching Mixing abs/rel paths is error prune due to multiple shell configs. Maintain current expected relative paths only. But add the note to comments and help text on bench scripts --- Client/bench.py | 4 ++-- Scripts/bench_engine.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Client/bench.py b/Client/bench.py index 3ec840a5..c8063f94 100644 --- a/Client/bench.py +++ b/Client/bench.py @@ -20,8 +20,8 @@ # The sole purpose of this module is to invoke run_benchmark(). # -# - binary : Path to, and including, the Binary File -# - network : Path to Network File, or None +# - binary : Relative path to, and including, the Binary File +# - network : Relative path to a private engine's Network File, or None # - private : True or False; Private NNUE engines require special care # - threads : Number of concurrent benches to run # - sets : Number of times to repeat this experiment diff --git a/Scripts/bench_engine.py b/Scripts/bench_engine.py index e27c3557..03da208a 100755 --- a/Scripts/bench_engine.py +++ b/Scripts/bench_engine.py @@ -33,10 +33,10 @@ if __name__ == '__main__': p = argparse.ArgumentParser() - p.add_argument('-E', '--engine' , help='Binary Name', required=True) - p.add_argument('-N', '--network' , help='Networks for Private Engines', required=False) - p.add_argument('-T', '--threads' , help='Concurrent Benchmarks', required=True, type=int) - p.add_argument('-S', '--sets' , help='Benchmark Sample Count', required=True, type=int) + p.add_argument('-E', '--engine' , help='Relative path to Binary', required=True) + p.add_argument('-N', '--network' , help='Relative path to Network for Private Engines', required=False) + p.add_argument('-T', '--threads' , help='Concurrent Benchmarks', required=True, type=int) + p.add_argument('-S', '--sets' , help='Benchmark Sample Count', required=True, type=int) args = p.parse_args() private = args.network != None From 66b8c246c07e61b9527db9aee101e12001060d48 Mon Sep 17 00:00:00 2001 From: Gahtan Nahdi <155860115+gahtan-syarif@users.noreply.github.com> Date: Wed, 13 Nov 2024 08:22:26 +0700 Subject: [PATCH 006/127] Remove scipy version requirement (#251) Proper include structure removes the need, we hope. Co-authored-by: Andrew Grant --- OpenBench/stats.py | 3 ++- requirements.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/OpenBench/stats.py b/OpenBench/stats.py index 20e66382..b8f15429 100644 --- a/OpenBench/stats.py +++ b/OpenBench/stats.py @@ -28,6 +28,7 @@ import math import scipy +from scipy import optimize def TrinomialSPRT(results, elo0, elo1): @@ -114,7 +115,7 @@ def secular(pdf): def f(x): return sum([pi * ai / (1 + x * ai) for ai, pi in pdf]) - x, res = scipy.optimize.brentq( + x, res = optimize.brentq( f, l + epsilon, u - epsilon, full_output=True, disp=False ) assert res.converged diff --git a/requirements.txt b/requirements.txt index 98953867..fb5555ce 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ Django==4.2.1 django-htmlmin==0.11.0 requests -scipy==1.9.0 +scipy From 20dbb670fca9ea7e034850fef86d21dd3acff638 Mon Sep 17 00:00:00 2001 From: Gahtan Nahdi <155860115+gahtan-syarif@users.noreply.github.com> Date: Wed, 13 Nov 2024 08:23:08 +0700 Subject: [PATCH 007/127] More accurate error bars for small sample sizes (#246) t.ppf() is more accurate when the population standard deviation is not known, as it uses the t-distribution instead of the normal distribution Co-authored-by: Andrew Grant --- OpenBench/stats.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/OpenBench/stats.py b/OpenBench/stats.py index b8f15429..504c3d12 100644 --- a/OpenBench/stats.py +++ b/OpenBench/stats.py @@ -74,15 +74,16 @@ def PentanomialSPRT(results, elo0, elo1): def Elo(results): # Cannot compute elo without any games - if not (N := sum(results)): + if not (N := sum(results)) or N == 1: return (0.00, 0.00, 0.00) div = len(results) - 1 # Converts index to the points outcome mu = sum((f / div) * results[f] for f in range(len(results))) / N var = sum(((f / div) - mu)**2 * results[f] for f in range(len(results))) / N + df = N - 1 # Degrees of freedom - mu_min = mu + scipy.stats.norm.ppf(0.025) * math.sqrt(var) / math.sqrt(N) - mu_max = mu + scipy.stats.norm.ppf(0.975) * math.sqrt(var) / math.sqrt(N) + mu_min = mu + scipy.stats.t.ppf(0.025, df) * math.sqrt(var) / math.sqrt(N) + mu_max = mu + scipy.stats.t.ppf(0.975, df) * math.sqrt(var) / math.sqrt(N) return logistic_elo(mu_min), logistic_elo(mu), logistic_elo(mu_max) From 32e23a6baca39d5c4d6286ec29bb0e052e185f75 Mon Sep 17 00:00:00 2001 From: cj5716 <125858804+cj5716@users.noreply.github.com> Date: Wed, 13 Nov 2024 09:24:05 +0800 Subject: [PATCH 008/127] Assorted small simplifications (#247) --- Client/bench.py | 2 +- Client/genfens.py | 4 ++-- OpenBench/stats.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Client/bench.py b/Client/bench.py index c8063f94..a5e9e9e4 100644 --- a/Client/bench.py +++ b/Client/bench.py @@ -128,4 +128,4 @@ def run_benchmark(binary, network, private, threads, sets, expected=None): if expected and expected != benches[0]: raise OpenBenchBadBenchException('[%s] Wrong Bench: %d' % (engine, benches[0])) - return int(sum(speeds) / len(speeds)), benches[0] + return sum(speeds) // len(speeds), benches[0] diff --git a/Client/genfens.py b/Client/genfens.py index 8e9706e6..f5dae04b 100644 --- a/Client/genfens.py +++ b/Client/genfens.py @@ -101,8 +101,8 @@ def genfens_single_threaded(command, queue): def genfens_progress_bar(curr, total): - prev_progress = int(50 * (curr - 1) / total) - curr_progress = int(50 * (curr - 0) / total) + prev_progress = 50 * (curr - 1) // total + curr_progress = 50 * (curr - 0) // total if curr_progress != prev_progress: bar_text = '=' * curr_progress + ' ' * (50 - curr_progress) diff --git a/OpenBench/stats.py b/OpenBench/stats.py index 504c3d12..4ac3dc68 100644 --- a/OpenBench/stats.py +++ b/OpenBench/stats.py @@ -124,8 +124,8 @@ def f(x): def stats(pdf): epsilon = 1e-6 - for i in range(0, len(pdf)): - assert -epsilon <= pdf[i][1] <= 1 + epsilon + for i in pdf: + assert -epsilon <= i[1] <= 1 + epsilon n = sum([prob for value, prob in pdf]) assert abs(n - 1) < epsilon s = sum([prob * value for value, prob in pdf]) From a27e71748666c0844120aa241d686821bce51d3f Mon Sep 17 00:00:00 2001 From: Gahtan Nahdi <155860115+gahtan-syarif@users.noreply.github.com> Date: Wed, 13 Nov 2024 09:50:47 +0700 Subject: [PATCH 009/127] Explicitly import stats subpackage (#253) older versions would require explicit include https://github.com/scipy/scipy/issues/13618 --- OpenBench/stats.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenBench/stats.py b/OpenBench/stats.py index 4ac3dc68..659a9686 100644 --- a/OpenBench/stats.py +++ b/OpenBench/stats.py @@ -27,7 +27,7 @@ # 3. lower, elo, upper = Elo((L, D, W) or (LL, LD, DD/WL, DW, WW)) import math -import scipy +import scipy.stats from scipy import optimize def TrinomialSPRT(results, elo0, elo1): From 2cca03eb9804da7b9e480ffad20a351c3a7e35e2 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 12 Nov 2024 22:48:57 -0500 Subject: [PATCH 010/127] Collapse Test/Tune/Datagen views heavily --- OpenBench/urls.py | 17 ++------- OpenBench/views.py | 70 +++++------------------------------ Templates/OpenBench/base.html | 6 +-- 3 files changed, 15 insertions(+), 78 deletions(-) diff --git a/OpenBench/urls.py b/OpenBench/urls.py index 281cc7c3..62f801c8 100644 --- a/OpenBench/urls.py +++ b/OpenBench/urls.py @@ -48,20 +48,9 @@ django.urls.path(r'machines/', OpenBench.views.machines), django.urls.path(r'machines//', OpenBench.views.machines), - # Links for viewing and managing tests - django.urls.path(r'test//', OpenBench.views.test), - django.urls.path(r'test//', OpenBench.views.test), - django.urls.path(r'newTest/', OpenBench.views.create_test), - - # Links for viewing and managing tunes - django.urls.path(r'tune//', OpenBench.views.tune), - django.urls.path(r'tune//', OpenBench.views.tune), - django.urls.path(r'newTune/', OpenBench.views.create_tune), - - # Links for viewing and managing datagen - django.urls.path(r'datagen//', OpenBench.views.datagen), - django.urls.path(r'datagen//', OpenBench.views.datagen), - django.urls.path(r'newDatagen/', OpenBench.views.create_datagen), + # Links to create, view or manage Workloads (Tests, Tunes, Datagen) + django.urls.re_path(r'^(?Ptune|test|datagen)/new/$', OpenBench.views.new_workload), + django.urls.re_path(r'^(?Ptune|test|datagen)/(?P\d+)(?:/(?P\w+))?/$', OpenBench.views.workload), # Links for viewing and managing Networks django.urls.path(r'networks/', OpenBench.views.networks), diff --git a/OpenBench/views.py b/OpenBench/views.py index 838feb72..5ffd13da 100644 --- a/OpenBench/views.py +++ b/OpenBench/views.py @@ -462,74 +462,22 @@ def machines(request, machineid=None): # TEST MANAGEMENT VIEWS # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -def test(request, id, action=None): +def workload(request, workload_type, pk, action=None): - # Request is to modify or interact with the Test if action != None: - return modify_workload(request, id, action) + return modify_workload(request, pk, action) - # Verify that the Test id exists - if not (test := Test.objects.filter(id=id).first()): - return redirect(request, '/index/', error='No such Test exists') + if not (workload := Test.objects.filter(id=pk).first()): + return redirect(request, '/index/', error='No such Workload exists') - # Verify that it is indeed a Test and not a Tune - if test.test_mode == 'TUNE': - return redirect(request, '/tune/%d' % (id)) + return view_workload(request, workload, workload_type.upper()) - # Verify that it is indeed a Test and not Datagen - if test.test_mode == 'DATAGEN': - return redirect(request, '/datagen/%d' % (id)) +def new_workload(request, workload_type): - return view_workload(request, test, 'TEST') + if workload_type.upper() not in [ 'TEST', 'TUNE', 'DATAGEN' ]: + return redirect(request, '/index/', error='Unknown Workload type') -def tune(request, id, action=None): - - # Request is to modify or interact with the Tune - if action != None: - return modify_workload(request, id, action) - - # Verify that the Tune id exists - if not (tune := Test.objects.filter(id=id).first()): - return redirect(request, '/index/', error='No such Tune exists') - - # Verify that it is indeed a Tune and not a Test - if tune.test_mode == 'SPRT' or tune.test_mode == 'GAMES': - return redirect(request, '/test/%d' % (id)) - - # Verify that it is indeed a Tune and not Datagen - if tune.test_mode == 'DATAGEN': - return redirect(request, '/datagen/%d' % (id)) - - return view_workload(request, tune, 'TUNE') - -def datagen(request, id, action=None): - - # Request is to modify or interact with the Datagen - if action != None: - return modify_workload(request, id, action) - - # Verify that the Datagen id exists - if not (datagen := Test.objects.filter(id=id).first()): - return redirect(request, '/index/', error='No such Datagen exists') - - # Verify that it is indeed a Datagen and not a Tune - if datagen.test_mode == 'TUNE': - return redirect(request, '/tune/%d' % (id)) - - # Verify that it is indeed a Datagen and not a Test - if datagen.test_mode == 'SPRT' or datagen.test_mode == 'GAMES': - return redirect(request, '/test/%d' % (id)) - - return view_workload(request, datagen, 'DATAGEN') - -def create_test(request): - return create_workload(request, 'TEST') - -def create_tune(request): - return create_workload(request, 'TUNE') - -def create_datagen(request): - return create_workload(request, 'DATAGEN') + return create_workload(request, workload_type.upper()) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # NETWORK MANAGEMENT VIEWS # diff --git a/Templates/OpenBench/base.html b/Templates/OpenBench/base.html index 34cbac90..6ced93f3 100644 --- a/Templates/OpenBench/base.html +++ b/Templates/OpenBench/base.html @@ -92,9 +92,9 @@ From 4a4cc64b650e6a4ba83e90c4a296e209cef50b72 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 12 Nov 2024 23:12:53 -0500 Subject: [PATCH 011/127] Remove duplicated urls for default-able endpoints --- OpenBench/urls.py | 19 +++++++------------ OpenBench/views.py | 16 ++++++++-------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/OpenBench/urls.py b/OpenBench/urls.py index 62f801c8..b597f161 100644 --- a/OpenBench/urls.py +++ b/OpenBench/urls.py @@ -30,23 +30,18 @@ django.urls.path(r'profileConfig/', OpenBench.views.profile_config), # Links for viewing test tables - django.urls.path(r'index/', OpenBench.views.index), - django.urls.path(r'index//', OpenBench.views.index), - django.urls.path(r'user//', OpenBench.views.user), - django.urls.path(r'user///', OpenBench.views.user), - django.urls.path(r'greens/', OpenBench.views.greens), - django.urls.path(r'greens//', OpenBench.views.greens), + django.urls.re_path(r'^index(?:/(?P\d+))?/$', OpenBench.views.index), + django.urls.re_path(r'^user(?:/(?P\d+))?/$', OpenBench.views.user), + django.urls.re_path(r'^greens(?:/(?P\d+))?/$', OpenBench.views.greens), + django.urls.path(r'search/', OpenBench.views.search), # Links for viewing general information tables django.urls.path(r'users/', OpenBench.views.users), django.urls.path(r'event//', OpenBench.views.event), - django.urls.path(r'events/', OpenBench.views.events_actions), - django.urls.path(r'events//', OpenBench.views.events_actions), - django.urls.path(r'errors/', OpenBench.views.events_errors), - django.urls.path(r'errors//', OpenBench.views.events_errors), - django.urls.path(r'machines/', OpenBench.views.machines), - django.urls.path(r'machines//', OpenBench.views.machines), + django.urls.re_path(r'^events(?:/(?P\d+))?/$', OpenBench.views.events_actions), + django.urls.re_path(r'^errors(?:/(?P\d+))?/$', OpenBench.views.events_errors), + django.urls.re_path(r'^machines(?:/(?P\d+))?/$', OpenBench.views.machines), # Links to create, view or manage Workloads (Tests, Tunes, Datagen) django.urls.re_path(r'^(?Ptune|test|datagen)/new/$', OpenBench.views.new_workload), diff --git a/OpenBench/views.py b/OpenBench/views.py index 5ffd13da..d3481878 100644 --- a/OpenBench/views.py +++ b/OpenBench/views.py @@ -268,7 +268,7 @@ def index(request, page=1): completed = OpenBench.utils.get_completed_tests() awaiting = OpenBench.utils.get_awaiting_tests() - start, end, paging = OpenBench.utils.getPaging(completed, page, 'index') + start, end, paging = OpenBench.utils.getPaging(completed, int(page), 'index') data = { 'pending' : pending, @@ -288,7 +288,7 @@ def user(request, username, page=1): completed = OpenBench.utils.get_completed_tests().filter(author=username) awaiting = OpenBench.utils.get_awaiting_tests().filter(author=username) - start, end, paging = OpenBench.utils.getPaging(completed, page, 'user/%s' % (username)) + start, end, paging = OpenBench.utils.getPaging(completed, int(page), 'user/%s' % (username)) data = { 'pending' : pending, @@ -304,7 +304,7 @@ def user(request, username, page=1): def greens(request, page=1): completed = OpenBench.utils.get_completed_tests().filter(passed=True) - start, end, paging = OpenBench.utils.getPaging(completed, page, 'greens') + start, end, paging = OpenBench.utils.getPaging(completed, int(page), 'greens') data = { 'completed' : completed[start:end], 'paging' : paging } return render(request, 'index.html', data) @@ -431,7 +431,7 @@ def event(request, id): def events_actions(request, page=1): events = LogEvent.objects.all().filter(machine_id=0).order_by('-id') - start, end, paging = OpenBench.utils.getPaging(events, page, 'events') + start, end, paging = OpenBench.utils.getPaging(events, int(page), 'events') data = { 'events' : events[start:end], 'paging' : paging }; return render(request, 'events.html', data) @@ -439,19 +439,19 @@ def events_actions(request, page=1): def events_errors(request, page=1): events = LogEvent.objects.all().exclude(machine_id=0).order_by('-id') - start, end, paging = OpenBench.utils.getPaging(events, page, 'errors') + start, end, paging = OpenBench.utils.getPaging(events, int(page), 'errors') data = { 'events' : events[start:end], 'paging' : paging }; return render(request, 'errors.html', data) -def machines(request, machineid=None): +def machines(request, pk=None): - if machineid == None: + if pk == None: data = { 'machines' : OpenBench.utils.getRecentMachines() } return render(request, 'machines.html', data) try: - data = { 'machine' : OpenBench.models.Machine.objects.get(id=machineid) } + data = { 'machine' : OpenBench.models.Machine.objects.get(id=int(pk)) } return render(request, 'machine.html', data) except: From cfeb3c460dd0ffd0537f0d1f9f0f49725daff05c Mon Sep 17 00:00:00 2001 From: Danny Hammer Date: Mon, 18 Nov 2024 17:23:18 -0700 Subject: [PATCH 012/127] feat: support for xboard --- Client/worker.py | 3 +- Config/config.json | 2 +- Engines/Yukari.json | 118 +++++++++++++++++++++++ OpenBench/config.py | 11 +++ OpenBench/models.py | 3 + OpenBench/static/create_workload.js | 22 +++++ OpenBench/workloads/create_workload.py | 5 + OpenBench/workloads/get_workload.py | 2 + OpenBench/workloads/verify_workload.py | 6 ++ Templates/OpenBench/create_workload.html | 9 +- Templates/OpenBench/workload.html | 2 + 11 files changed, 180 insertions(+), 3 deletions(-) create mode 100644 Engines/Yukari.json diff --git a/Client/worker.py b/Client/worker.py index 34bc6e2b..ee00f9d9 100644 --- a/Client/worker.py +++ b/Client/worker.py @@ -452,6 +452,7 @@ def engine_settings(config, command, branch, scale_factor, cutechess_idx): network = config.workload['test'][branch]['network'] private = config.workload['test'][branch]['private'] engine = config.workload['test'][branch]['engine'] + protocol= config.workload['test'][branch]['protocol'] syzygy = config.workload['test']['syzygy_wdl'] # Human-readable name, and scale the time control @@ -478,7 +479,7 @@ def engine_settings(config, command, branch, scale_factor, cutechess_idx): # Join options together in the Cutechess format options = ' option.'.join([''] + re.findall(r'"[^"]*"|\S+', options)) - return '-engine dir=Engines/ cmd=./%s proto=uci %s%s name=%s-%s' % (command, control, options, engine, branch) + return '-engine dir=Engines/ cmd=./%s proto=%s %s%s name=%s-%s' % (command, protocol, control, options, engine, branch) @staticmethod def pgnout_settings(config, timestamp, cutechess_idx): diff --git a/Config/config.json b/Config/config.json index f265f539..0c64d358 100644 --- a/Config/config.json +++ b/Config/config.json @@ -22,5 +22,5 @@ "UHO_4060_vT.epd" ], - "engines": ["BlackMarlin", "Ethereal", "Stockfish", "Toad"] + "engines": ["BlackMarlin", "Ethereal", "Stockfish", "Toad", "Yukari"] } diff --git a/Engines/Yukari.json b/Engines/Yukari.json new file mode 100644 index 00000000..12893ee0 --- /dev/null +++ b/Engines/Yukari.json @@ -0,0 +1,118 @@ +{ + "private": false, + "nps": 2455379, + "source": "https://github.com/dannyhammer/yukari", + "protocols": ["xboard"], + + "build": { + "path": "", + "compilers": ["cargo>=1.82.0"], + "cpuflags": [], + "systems": ["Linux", "Windows", "Darwin"] + }, + + "test_presets": { + "default": { + "base_branch": "trunk", + "dev_branch": "dev", + "book_name": "Pohl.epd", + "test_bounds": "[0.00, 10.00]", + "test_confidence": "[0.05, 0.05]", + "win_adj": "None", + "draw_adj": "None" + }, + + "STC": { + "both_options": "Threads=1 Hash=16", + "both_time_control": "8.0+0.08", + "workload_size": 32 + }, + + "LTC": { + "both_options": "Threads=1 Hash=128", + "both_time_control": "40.0+0.4", + "workload_size": 8 + }, + + "STC regression": { + "both_options": "Threads=1 Hash=16", + "both_time_control": "8.0+0.08", + "workload_size": 32, + "test_bounds": "[-5.00, 0.00]" + }, + + "LTC regression": { + "both_options": "Threads=1 Hash=128", + "both_time_control": "40.0+0.4", + "workload_size": 8, + "test_bounds": "[-5.00, 0.00]" + }, + + "STC progtest": { + "both_options": "Threads=1 Hash=16", + "both_time_control": "8.0+0.08", + "workload_size": 32, + "test_max_games": 3000 + }, + + "LTC progtest": { + "both_options": "Threads=1 Hash=128", + "both_time_control": "60.0+0.6", + "workload_size": 8, + "test_max_games": 1000 + }, + + "SMP STC": { + "both_options": "Threads=4 Hash=16", + "both_time_control": "8.0+0.08", + "workload_size": 32 + }, + + "SMP LTC": { + "both_options": "Threads=4 Hash=128", + "both_time_control": "40.0+0.4", + "workload_size": 8 + } + }, + + "tune_presets": { + "default": { + "book_name": "UHO_4060_v2.epd", + "win_adj": "movecount=3 score=400", + "draw_adj": "movenumber=40 movecount=8 score=10" + }, + + "STC": { + "dev_options": "Threads=1 Hash=8", + "dev_time_control": "10.0+0.10" + }, + + "MTC": { + "dev_options": "Threads=1 Hash=32", + "dev_time_control": "30.0+0.30" + }, + + "LTC": { + "dev_options": "Threads=1 Hash=64", + "dev_time_control": "60.0+0.60" + }, + + "VLTC": { + "dev_options": "Threads=1 Hash=128", + "dev_time_control": "180.0+1.80" + } + }, + + "datagen_presets": { + "default": { + "win_adj": "None", + "draw_adj": "None", + "workload_size": 128 + }, + + "40k Nodes": { + "both_options": "Threads=1 Hash=16", + "both_time_control": "N=40000" + } + } +} diff --git a/OpenBench/config.py b/OpenBench/config.py index 69f86933..546ecfbd 100644 --- a/OpenBench/config.py +++ b/OpenBench/config.py @@ -62,6 +62,10 @@ def load_engine_config(engine_name): with open(os.path.join(PROJECT_PATH, 'Engines', '%s.json' % (engine_name))) as fin: conf = json.load(fin) + # Legacy- default to UCI protocol if none provided. + if 'protocols' not in conf: + conf['protocols'] = ['uci'] + verify_engine_basics(conf) verify_engine_build(engine_name, conf) @@ -107,6 +111,7 @@ def verify_engine_basics(conf): assert type(conf.get('nps')) == int and conf['nps'] > 0 assert type(conf.get('source')) == str assert type(conf.get('build')) == dict + assert type(conf.get('protocols')) == list def verify_engine_build(engine_name, conf): @@ -140,12 +145,14 @@ def verify_engine_test_preset(test_preset): 'dev_network', 'dev_options', 'dev_time_control', + 'dev_protocol', 'base_branch', 'base_bench', 'base_network', 'base_options', 'base_time_control', + 'base_protocol', 'test_bounds', 'test_confidence', @@ -176,6 +183,7 @@ def verify_engine_tune_preset(tune_preset): 'dev_network', 'dev_options', 'dev_time_control', + 'dev_protocol', 'spsa_reporting_type', 'spsa_distribution_type', @@ -215,12 +223,15 @@ def verify_engine_datagen_preset(datagen_preset): 'dev_network', 'dev_options', 'dev_time_control', + 'dev_protocol', 'base_branch', 'base_bench', 'base_network', 'base_options', 'base_time_control', + 'base_protocol', + 'book_name', 'upload_pgns', diff --git a/OpenBench/models.py b/OpenBench/models.py index 2480d87a..d0219c7e 100644 --- a/OpenBench/models.py +++ b/OpenBench/models.py @@ -29,6 +29,7 @@ class Engine(Model): source = CharField(max_length=1024) sha = CharField(max_length=64) bench = IntegerField(default=0) + protocols= JSONField(default=list) def __str__(self): return '{0} ({1})'.format(self.name, self.bench) @@ -105,6 +106,7 @@ class Test(Model): dev_network = CharField(max_length=256, blank=True) dev_netname = CharField(max_length=256, blank=True) dev_time_control = CharField(max_length=32) + dev_protocol = CharField(max_length=32, default='uci') # Base Engine, and all of its settings base = ForeignKey('Engine', PROTECT, related_name='base') @@ -114,6 +116,7 @@ class Test(Model): base_network = CharField(max_length=256, blank=True) base_netname = CharField(max_length=256, blank=True) base_time_control = CharField(max_length=32) + base_protocol = CharField(max_length=32, default='uci') # Changable Test Parameters workload_size = IntegerField(default=32) diff --git a/OpenBench/static/create_workload.js b/OpenBench/static/create_workload.js index c2916825..e36cd32c 100644 --- a/OpenBench/static/create_workload.js +++ b/OpenBench/static/create_workload.js @@ -36,6 +36,27 @@ function create_network_options(field_id, engine) { } } +function create_protocol_options(field_id, engine) { + + var has_default = false; + var protocol_options = document.getElementById(field_id); + + // Delete all existing Protocols + while (protocol_options.length) + protocol_options.remove(0); + + // Add each Protocol that matches the given engine + for (const protocol of config.engines[engine].protocols) { + + var opt = document.createElement('option'); + opt.text = protocol; + opt.selected = false; + protocol_options.add(opt) + + has_default = has_default || protocol.default; + } +} + function create_preset_buttons(engine, workload_type) { // Clear out all of the existing buttons @@ -123,6 +144,7 @@ function set_engine(engine, target) { document.getElementById(target + '_repo' ).value = repos[engine] || config.engines[engine].source create_network_options(target + '_network', engine); + create_protocol_options(target + '_protocol', engine); } function set_option(option_name, option_value) { diff --git a/OpenBench/workloads/create_workload.py b/OpenBench/workloads/create_workload.py index 7b194980..324f62e2 100644 --- a/OpenBench/workloads/create_workload.py +++ b/OpenBench/workloads/create_workload.py @@ -122,6 +122,7 @@ def create_new_test(request): test.dev_options = request.POST['dev_options'] test.dev_network = request.POST['dev_network'] test.dev_time_control = OpenBench.utils.TimeControl.parse(request.POST['dev_time_control']) + test.dev_protocol = request.POST['dev_protocol'] test.base = get_engine(*base_ingo) test.base_repo = request.POST['base_repo'] @@ -129,6 +130,7 @@ def create_new_test(request): test.base_options = request.POST['base_options'] test.base_network = request.POST['base_network'] test.base_time_control = OpenBench.utils.TimeControl.parse(request.POST['base_time_control']) + test.base_protocol = request.POST['base_protocol'] test.workload_size = int(request.POST['workload_size']) test.priority = int(request.POST['priority']) @@ -187,6 +189,7 @@ def create_new_tune(request): test.dev_options = test.base_options = request.POST['dev_options'] test.dev_network = test.base_network = request.POST['dev_network'] test.dev_time_control = test.base_time_control = OpenBench.utils.TimeControl.parse(request.POST['dev_time_control']) + test.dev_protocol = test.base_network = request.POST['dev_protocol'] test.workload_size = int(request.POST['spsa_pairs_per']) test.priority = int(request.POST['priority']) @@ -235,6 +238,7 @@ def create_new_datagen(request): test.dev_options = request.POST['dev_options'] test.dev_network = request.POST['dev_network'] test.dev_time_control = OpenBench.utils.TimeControl.parse(request.POST['dev_time_control']) + test.dev_protocol = request.POST['dev_protocol'] test.base = get_engine(*base_ingo) test.base_repo = request.POST['base_repo'] @@ -242,6 +246,7 @@ def create_new_datagen(request): test.base_options = request.POST['base_options'] test.base_network = request.POST['base_network'] test.base_time_control = OpenBench.utils.TimeControl.parse(request.POST['base_time_control']) + test.base_protocol = request.POST['base_protocol'] test.max_games = int(request.POST['datagen_max_games']) test.genfens_args = request.POST['datagen_custom_genfens'] diff --git a/OpenBench/workloads/get_workload.py b/OpenBench/workloads/get_workload.py index 8d3a49e5..ad61c585 100644 --- a/OpenBench/workloads/get_workload.py +++ b/OpenBench/workloads/get_workload.py @@ -218,6 +218,7 @@ def workload_to_dictionary(test, result, machine): 'nps' : OPENBENCH_CONFIG['engines'][test.dev_engine]['nps'], 'build' : OPENBENCH_CONFIG['engines'][test.dev_engine]['build'], 'private' : OPENBENCH_CONFIG['engines'][test.dev_engine]['private'], + 'protocol' : test.dev_protocol, } workload['test']['base'] = { @@ -234,6 +235,7 @@ def workload_to_dictionary(test, result, machine): 'nps' : OPENBENCH_CONFIG['engines'][test.base_engine]['nps'], 'build' : OPENBENCH_CONFIG['engines'][test.base_engine]['build'], 'private' : OPENBENCH_CONFIG['engines'][test.base_engine]['private'], + 'protocol' : test.base_protocol, } workload['distribution'] = game_distribution(test, machine) diff --git a/OpenBench/workloads/verify_workload.py b/OpenBench/workloads/verify_workload.py index 16b8944a..4c7b2787 100644 --- a/OpenBench/workloads/verify_workload.py +++ b/OpenBench/workloads/verify_workload.py @@ -80,6 +80,7 @@ def verify_test_creation(errors, request): (verify_options , 'dev_options', 'Threads', 'Dev Options'), (verify_options , 'dev_options', 'Hash', 'Dev Options'), (verify_time_control , 'dev_time_control', 'Dev Time Control'), + (verify_protocol , 'dev_protocol', 'Dev Protocol'), # Verify everything about the Base Engine (verify_configuration , 'base_engine', 'Base Engine', 'engines'), @@ -88,6 +89,7 @@ def verify_test_creation(errors, request): (verify_options , 'base_options', 'Threads', 'Base Options'), (verify_options , 'base_options', 'Hash', 'Base Options'), (verify_time_control , 'base_time_control', 'Base Time Control'), + (verify_protocol , 'base_protocol', 'Base Protocol'), # Verify everything about the Test Settings (verify_configuration , 'book_name', 'Book', 'books'), @@ -232,6 +234,10 @@ def verify_time_control(errors, request, field, field_name): try: OpenBench.utils.TimeControl.parse(request.POST[field]) except: errors.append('{0} is not parsable'.format(field_name)) +def verify_protocol(errors, request, field, field_name): + try: assert request.POST[field].lower() == 'uci' or request.POST[field].lower() == 'xboard' + except: errors.append('{0} is not a valid protocol'.format(field_name)) + def verify_win_adj(errors, request, field): try: if (content := request.POST[field]) == 'None': return diff --git a/Templates/OpenBench/create_workload.html b/Templates/OpenBench/create_workload.html index bc439e1b..bdc15209 100644 --- a/Templates/OpenBench/create_workload.html +++ b/Templates/OpenBench/create_workload.html @@ -8,7 +8,8 @@ {{ networks|json_script:"json-networks" }} {{ profile.repos|json_script:"json-repos" }} - + + + +