Skip to content

Commit

Permalink
0.0.8
Browse files Browse the repository at this point in the history
  • Loading branch information
schlawg committed Jan 13, 2025
1 parent a425fb3 commit 78de913
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 45 deletions.
10 changes: 5 additions & 5 deletions build.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,22 +35,22 @@

def makefile(target, sources, flags, link_flags):
flags = " ".join([flags.strip(), targets[target].get("cxx_flags", "").strip()])
# DO NOT replace tabs with spaces
# fmt: off
# DO NOT replace tabs with spaces
# fmt: off
return f"""
CXX = em++
EXE = {target}
CXX_FLAGS = {flags} -Isrc -pthread -msse -msse2 -mssse3 -msse4.1 -msimd128 -flto -fno-exceptions \\
CXX_FLAGS = {flags} -Isrc -pthread -msimd128 -mavx -flto -fno-exceptions \\
-DUSE_POPCNT -DUSE_SSE2 -DUSE_SSSE3 -DUSE_SSE41 -DNO_PREFETCH -DNNUE_EMBEDDING_OFF
LD_FLAGS = {link_flags} \\
--pre-js=../../src/initModule.js -sEXPORT_ES6 -sEXPORT_NAME={mod_name(target)} -sFILESYSTEM=0 \\
--pre-js=../../src/initModule.js -sEXIT_RUNTIME -sEXPORT_ES6 -sEXPORT_NAME={mod_name(target)} \\
-sEXPORTED_FUNCTIONS='[_malloc,_main]' -sEXPORTED_RUNTIME_METHODS='[stringToUTF8,UTF8ToString,HEAPU8]' \\
-sINCOMING_MODULE_JS_API='[locateFile,print,printErr,wasmMemory,buffer,instantiateWasm]' \\
-sINITIAL_MEMORY=64MB -sALLOW_MEMORY_GROWTH -sSTACK_SIZE=2MB -sSTRICT -sPROXY_TO_PTHREAD \\
-sALLOW_BLOCKING_ON_MAIN_THREAD=0 -sEXIT_RUNTIME -Wno-pthreads-mem-growth
-sALLOW_BLOCKING_ON_MAIN_THREAD=0 -Wno-pthreads-mem-growth
SRCS = {sources}
OBJS = $(addprefix src/, $(SRCS:.cpp=.o)) src/glue.o
Expand Down
63 changes: 28 additions & 35 deletions src/glue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,66 +5,59 @@
#include "uci.h"
#include "nnue/nnue_architecture.h"

extern "C" {
EMSCRIPTEN_KEEPALIVE void uci(const char* utf8) { inQ.push(Command(utf8)); }

EMSCRIPTEN_KEEPALIVE void setNnueBuffer(char* buf, size_t sz, int index) {
inQ.push(Command(buf, sz, index));
}

EMSCRIPTEN_KEEPALIVE const char* getRecommendedNnue(int index) {
return get_nnue_name(index);
}
}

EMSCRIPTEN_KEEPALIVE std::string js_getline() {
auto cmd = inQ.pop();
if (cmd.type == cmd.UCI)
return cmd.uci;
else if (cmd.type == cmd.NNUE && cmd.ptr)
return load_nnue_cmd(cmd);
else
return "";
}

#if __has_include("nnue/evaluate_nnue.h") // single nnue
# include "nnue/evaluate_nnue.h"

# include "nnue/evaluate_nnue.h"
# define EvalFileDefaultNameSmall EvalFileDefaultName
# define EvalFileDefaultNameBig EvalFileDefaultName
const std::string load_nnue_cmd(Command& cmd) {
std::istream in(&cmd);
if (Stockfish::Eval::NNUE::load_eval("", in))
return "setoption name Use NNUE value true";
else std::cerr << "BAD_NNUE" << std::endl;
return "setoption name Use NNUE value false";
}

const char* get_nnue_name(int index) {
return EvalFileDefaultName;
}

#else // big/little nnue
extern Stockfish::UCIEngine* uci_global;

const std::string load_nnue_cmd(Command& cmd) {
std::istream in(&cmd);
if (cmd.index == 0) uci_global->engine.load_big_network(in);
else if (cmd.index == 1) uci_global->engine.load_small_network(in);
else std::cerr << "BAD_NNUE " << cmd.index << std::endl;
//else std::cerr << "BAD_NNUE " << cmd.index << std::endl;
return "";
}

const char* get_nnue_name(int index) {
return index == 1 ? EvalFileDefaultNameSmall : EvalFileDefaultNameBig;
}

namespace Stockfish::Tablebases {
Config rank_root_moves(const OptionsMap& o, Position& p, Search::RootMoves& rM, bool rankDTZ) {
return Config();
}
}
#endif

// stubs for tbprobe.cpp (so we don't need -sALLOW_UNIMPLEMENTED_SYSCALLS)
CommandQueue inQ;

extern "C" {
EMSCRIPTEN_KEEPALIVE void uci(const char* utf8) { inQ.push(Command(utf8)); }

EMSCRIPTEN_KEEPALIVE void setNnueBuffer(char* buf, size_t sz, int index) {
inQ.push(Command(buf, sz, index));
}

EMSCRIPTEN_KEEPALIVE const char* getRecommendedNnue(int index) {
return index == 1 ? EvalFileDefaultNameSmall : EvalFileDefaultNameBig;
}
}

EMSCRIPTEN_KEEPALIVE std::string js_getline() {
auto cmd = inQ.pop();
if (cmd.type == cmd.UCI)
return cmd.uci;
else if (cmd.type == cmd.NNUE && cmd.ptr)
return load_nnue_cmd(cmd);
else
return "";
}

namespace Stockfish::Tablebases {
int MaxCardinality = 0;
void init(const std::string& paths) {}
Expand Down
7 changes: 2 additions & 5 deletions src/glue.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ struct Command : public std::streambuf {
using std::streambuf::seekpos;
};

struct {
struct CommandQueue {
std::mutex m;
std::queue<Command> q;
std::condition_variable cv;
Expand All @@ -39,7 +39,4 @@ struct {
q.pop();
return el;
}
} inQ;

const char* get_nnue_name(int index);
const std::string load_nnue_cmd(Command& cmd);
};

0 comments on commit 78de913

Please sign in to comment.