Discussion of anything and everything relating to chess playing software and machines.
Moderators: hgm, Dann Corbit, Harvey Williamson
Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
-
Pi4Chess
- Posts: 220
- Joined: Mon Nov 16, 2020 11:13 am
- Full name: Manuel Rivera
Post
by Pi4Chess » Sun Dec 20, 2020 12:09 pm
Archimedes wrote: ↑Sun Dec 20, 2020 12:01 pm
Could you also try the following version from Ethereal (it's a non static version).
Ethereal 12.77:
https://app.box.com/s/p9zmt9jerqqs0yqtljzfiu8k90013j41
By the way, i've tested the runtime performance of the non static and static builds from Koivisto. I did not see any differences between them. So we can not say, non static builds have less performance in general. I would say, if the static builds works for you, they are not so bad at all.
I will test tonight.
When i say it is not optimum it's because they are not pgo builds and i don't know if your builds are making use of Neon, popcnt, prefetch of Rpi4.
-
Ras
- Posts: 1686
- Joined: Tue Aug 30, 2016 6:19 pm
- Full name: Rasmus Althoff
-
Contact:
Post
by Ras » Sun Dec 20, 2020 12:30 pm
Pi4Chess wrote: ↑Sun Dec 20, 2020 11:43 am
Why ?
Because it's not easy, not reliable, and not desirable:
https://akkadia.org/drepper/no_static_linking.html
Specifically for Android, position independent executables (PIE) are required, and I remember problems with static linkage because PIEs are technically dynamic libraries, just as executables.
If you can help about compiling from other platform than Rpi4 usind target aarch64-linux-gnu you are very welcome

That's indeed difficult because binary compatibility under Linux is flat out bad. That's the main reason why Linux distros have always had a package manager, and why container formats such as Flatpak have emerged as dirty workaround.
For targeting 32bit Raspbian, I'm using a ready-made Windows (!) GCC toolchain and run that under Wine.
-
Pi4Chess
- Posts: 220
- Joined: Mon Nov 16, 2020 11:13 am
- Full name: Manuel Rivera
Post
by Pi4Chess » Sun Dec 20, 2020 12:48 pm
Ras wrote: ↑Sun Dec 20, 2020 12:30 pm
For targeting 32bit Raspbian, I'm using a ready-made Windows (!) GCC toolchain and run that under Wine.
So what we need is an expert in those things that create a nice toolchain for aarch64-linux-gnu for raspi4 under gcc or clang, under Windows or Linux and we are done !

-
Archimedes
- Posts: 38
- Joined: Tue Mar 05, 2019 2:43 pm
- Full name: Archimedes
Post
by Archimedes » Sun Dec 20, 2020 1:08 pm
Pi4Chess wrote: ↑Sun Dec 20, 2020 12:09 pm
I will test tonight.
When i say it is not optimum it's because they are not pgo builds and i don't know if your builds are making use of Neon, popcnt, prefetch of Rpi4.
Yes of course, e. g. all arm64-v8a devices are able to use neon instructions. Android NDK is aware of that. And if there are source dependent compiler definitions for supporting such instructions, like -DUSE_NEON, -DHAS_PREFETCH and so on, i used them for optimal runtime performance. In very rare cases, not all compiler definitions can be used, because the clang compiler produces a lot of errors and i'm not willing to rewrite a lot of code only for successful compiling for Android. And with the clang compiler, you have to change very often the source code for successful compiling, but always in a minimal invasive way.
-
Archimedes
- Posts: 38
- Joined: Tue Mar 05, 2019 2:43 pm
- Full name: Archimedes
Post
by Archimedes » Sun Dec 20, 2020 1:58 pm
I've also added the last Cheng version.
As long the static builds are appreciated, i will update them, when i compile a new version for Android. But i will compile only those chess engines as static builds which you are missing. Seems to be a not so bad interim solution.
-
Pi4Chess
- Posts: 220
- Joined: Mon Nov 16, 2020 11:13 am
- Full name: Manuel Rivera
Post
by Pi4Chess » Sun Dec 20, 2020 2:10 pm
Archimedes wrote: ↑Sun Dec 20, 2020 1:58 pm
I've also added the last Cheng version.
As long the static builds are appreciated, i will update them, when i compile a new version for Android. But i will compile only those chess engines as static builds which you are missing. Seems to be a not so bad interim solution.
Thank you for your implication and help. I will test all new static builds you put in and the 2 Ethereal builds but later tonight.
-
Archimedes
- Posts: 38
- Joined: Tue Mar 05, 2019 2:43 pm
- Full name: Archimedes
Post
by Archimedes » Sun Dec 20, 2020 7:09 pm
You wrote about lagging threads with Rodent engines. I found out, that the thread feature in the Rodent engines doesn't work on Android. My first compiles only works for 32 bit and introducing more than 1 thread do nothing for better runtime performance. 64 bit versions crashes after the first moves.
Then i encountered, with disabling the thread feature, with the compiler definition -DNO_THREADS, 64 bit versions now also working, without any crashes.
-
Pi4Chess
- Posts: 220
- Joined: Mon Nov 16, 2020 11:13 am
- Full name: Manuel Rivera
Post
by Pi4Chess » Sun Dec 20, 2020 8:17 pm
Archimedes wrote: ↑Sun Dec 20, 2020 7:09 pm
You wrote about lagging threads with Rodent engines. I found out, that the thread feature in the Rodent engines doesn't work on Android. My first compiles only works for 32 bit and introducing more than 1 thread do nothing for better runtime performance. 64 bit versions crashes after the first moves.
Then i encountered, with disabling the thread feature, with the compiler definition -DNO_THREADS, 64 bit versions now also working, without any crashes.
Yes it is with Rodent IV ! Thanks for the tip ! I will see how i compiled and will change the threads flag then.
A little feedback about your static android compilations : after bit set Cheng, Tucano and Xiphos are working fine ! They all 3 are at 2000-2200 kns so pretty smooth.
On the other hand the 2 non-static Ethereal builds are not working at all on rpi4.
-
jshriver
- Posts: 1184
- Joined: Wed Mar 08, 2006 8:41 pm
- Location: Morgantown, WV, USA
-
Contact:
Post
by jshriver » Sun Dec 20, 2020 10:15 pm
Amazon says my Pi will be here tomorrow, 2 days early woot
Can't wait to get testing.