cosmobobak / viridithas

A superhuman chess engine.
MIT License
81 stars 7 forks source link

arm64 compilation issue (Win11) #153

Open ArminiusTux opened 1 month ago

ArminiusTux commented 1 month ago

Dear @cosmobobak ,

I've encoutered the following compilation issue under Windows on ARM64:

$ cargo b -r --features syzygy,bindgen
   Compiling windows_aarch64_gnullvm v0.52.0
   Compiling windows_aarch64_gnullvm v0.48.5
   Compiling proc-macro2 v1.0.74
   Compiling unicode-ident v1.0.12
   Compiling glob v0.3.1
   Compiling libc v0.2.151
   Compiling prettyplease v0.2.16
   Compiling rustix v0.38.28
   Compiling regex-syntax v0.8.2
   Compiling clang-sys v1.7.0
   Compiling minimal-lexical v0.2.1
   Compiling memchr v2.7.1
   Compiling bitflags v2.4.1
   Compiling windows-targets v0.52.0
   Compiling windows-sys v0.52.0
   Compiling windows-targets v0.48.5
   Compiling windows-sys v0.48.0
   Compiling regex-automata v0.4.3
   Compiling quote v1.0.35
   Compiling nom v7.1.3
   Compiling syn v2.0.46
   Compiling bindgen v0.65.1
   Compiling autocfg v1.1.0
   Compiling either v1.9.0
   Compiling anstyle v1.0.4
   Compiling cfg-if v1.0.0
   Compiling once_cell v1.19.0
   Compiling utf8parse v0.2.1
   Compiling anstyle-query v1.0.2
   Compiling anstyle-parse v0.2.3
   Compiling anstyle-wincon v3.0.2
   Compiling libloading v0.8.1
   Compiling getrandom v0.2.11
   Compiling regex v1.10.2
   Compiling num-traits v0.2.17
   Compiling bitflags v1.3.2
   Compiling shlex v1.2.0
   Compiling peeking_take_while v0.1.2
   Compiling lazycell v1.3.0
   Compiling lazy_static v1.4.0
   Compiling colorchoice v1.0.0
   Compiling cexpr v0.6.0
   Compiling rustc-hash v1.1.0
   Compiling log v0.4.20
   Compiling anstream v0.6.5
   Compiling rand_core v0.6.4
   Compiling errno v0.3.8
   Compiling home v0.5.9
   Compiling strsim v0.10.0
   Compiling ppv-lite86 v0.2.17
   Compiling which v4.4.2
   Compiling clap_lex v0.6.0
   Compiling heck v0.4.1
   Compiling cc v1.0.83
   Compiling clap_builder v4.4.12
   Compiling rand_chacha v0.3.1
   Compiling ctrlc v3.4.2
   Compiling arrayvec v0.7.4
   Compiling rand v0.8.5
   Compiling num_cpus v1.16.0
   Compiling bulletformat v0.1.0
   Compiling chrono v0.4.31
   Compiling clap_derive v4.4.7
   Compiling clap v4.4.12
   Compiling viridithas v12.0.0 (C:\CODING\viridithas)
error: environment variable `EVALFILE` not defined at compile time
   --> src\nnue\network.rs:274:63
    |
274 |     unsafe { mem::transmute(*include_bytes!(concat!("../../", env!("EVALFILE"),))) };
    |                                                               ^^^^^^^^^^^^^^^^
    |
    = help: use `std::env::var("EVALFILE")` to read the variable at run time
    = note: this error originates in the macro `env` (in Nightly builds, run with -Z macro-backtrace for more info)

warning: unused variable: `key`
   --> src\transpositiontable.rs:306:28
    |
306 |     pub fn prefetch(&self, key: u64) {
    |                            ^^^ help: if this is intentional, prefix it with an underscore: `_key`
    |
    = note: `#[warn(unused_variables)]` on by default

warning: `viridithas` (bin "viridithas") generated 1 warning
error: could not compile `viridithas` (bin "viridithas") due to 1 previous error; 1 warning emitted

The error occurs regardless of what NNUE is used and no EXE is being generated.

Last but not least, could you tag the corresponding neural book to your future releases. I would guess that version 12 uses signalis-epoch15.nnue, correct?

cosmobobak commented 1 month ago

You appear to be compiling an old version of Viridithas. You'll have to compare dates on the viridithas releases and viridithas-networks releases if you want to match nets to releases. Old versions of viridithas find the network path via the EVALFILE environment variable, so set EVALFILE=signalis-epoch15.nuue if you want to compile with that.

ArminiusTux commented 3 weeks ago

Indeed version 12 was only accepting the signalis.nnue, so I renamed it and was able to compile it via:

EVALFILE="viridithas.nnue" RUSTFLAGS="-C target-cpu=native" cargo build --release --features syzygy,bindgen
   Compiling windows_aarch64_gnullvm v0.52.0
   Compiling windows_aarch64_gnullvm v0.48.5
   Compiling proc-macro2 v1.0.74
   Compiling unicode-ident v1.0.12
   Compiling glob v0.3.1
   Compiling libc v0.2.151
   Compiling rustix v0.38.28
   Compiling prettyplease v0.2.16
   Compiling bitflags v2.4.1
   Compiling windows-targets v0.48.5
   Compiling windows-targets v0.52.0
   Compiling windows-sys v0.48.0
   Compiling windows-sys v0.52.0
   Compiling minimal-lexical v0.2.1
   Compiling memchr v2.7.1
   Compiling regex-syntax v0.8.2
   Compiling clang-sys v1.7.0
   Compiling utf8parse v0.2.1
   Compiling anstyle v1.0.4
   Compiling quote v1.0.35
   Compiling nom v7.1.3
   Compiling cfg-if v1.0.0
   Compiling once_cell v1.19.0
   Compiling syn v2.0.46
   Compiling either v1.9.0
   Compiling bindgen v0.65.1
   Compiling autocfg v1.1.0
   Compiling getrandom v0.2.11
   Compiling anstyle-parse v0.2.3
   Compiling num-traits v0.2.17
   Compiling anstyle-wincon v3.0.2
   Compiling anstyle-query v1.0.2
   Compiling bitflags v1.3.2
   Compiling libloading v0.8.1
   Compiling lazy_static v1.4.0
   Compiling shlex v1.2.0
   Compiling colorchoice v1.0.0
   Compiling rustc-hash v1.1.0
   Compiling peeking_take_while v0.1.2
   Compiling lazycell v1.3.0
   Compiling log v0.4.20
   Compiling anstream v0.6.5
   Compiling rand_core v0.6.4
   Compiling strsim v0.10.0
   Compiling heck v0.4.1
   Compiling regex-automata v0.4.3
   Compiling ppv-lite86 v0.2.17
   Compiling cexpr v0.6.0
   Compiling cc v1.0.83
   Compiling clap_lex v0.6.0
   Compiling errno v0.3.8
   Compiling home v0.5.9
   Compiling which v4.4.2
   Compiling clap_builder v4.4.12
   Compiling rand_chacha v0.3.1
   Compiling rand v0.8.5
   Compiling ctrlc v3.4.2
   Compiling regex v1.10.2
   Compiling chrono v0.4.31
   Compiling bulletformat v0.1.0
   Compiling num_cpus v1.16.0
   Compiling arrayvec v0.7.4
   Compiling clap_derive v4.4.7
   Compiling clap v4.4.12
   Compiling viridithas v12.0.0 (C:\CODING\viridithas)
warning: unused variable: `key`
   --> src\transpositiontable.rs:306:28
    |
306 |     pub fn prefetch(&self, key: u64) {
    |                            ^^^ help: if this is intentional, prefix it with an underscore: `_key`
    |
    = note: `#[warn(unused_variables)]` on by default

warning: struct `KingDangerInfo` is never constructed
   --> src\board\evaluation.rs:127:8
    |
127 | struct KingDangerInfo {
    |        ^^^^^^^^^^^^^^
    |
    = note: `#[warn(dead_code)]` on by default

warning: `viridithas` (bin "viridithas") generated 2 warnings
    Finished `release` profile [optimized] target(s) in 1m 00s

The result however is unstable (also tested the latest commit and even without syzygy). After 12 seconds the viridithas.exe drops to 0 cpu load and then times out - no moves occur.