New Fischerle Versions (64 and 32 Bit)

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

Moderators: hgm, Rebel, chrisw

User avatar
RolandoFurioso
Posts: 55
Joined: Sat Feb 22, 2014 7:29 pm
Location: Frankfurt

New Fischerle Versions (64 and 32 Bit)

Post by RolandoFurioso »

Hi all,
I have just released a follow-up version of my chess engine: Fischerle_0_9_50. It is available for download at http://www.stuckardt.de/index.php/schac ... herle.html

The main new features are:
- the king plays a more active role in late middlegame / early endgame;
- most instances of some important types of draw (viz., particular positions of type king vs. rook pawn or king vs. rook pawn and wrong-colored bishop) are now properly recognized;
- configuration file config.ini enables the user to alter some supplementary settings (such as the font and font sizes to be employed for displaying chess pieces in Fischerle's proprietary GUI).

Moreover, a distinction is now drawn between a 64 bit and a 32 bit version. While the code base is identical, there is just one difference: in the 32 bit version, more hash table entries are assigned since their memory footprints in 32 bit environments turned out to be slightly smaller than in 64 bit environments.

I have as well added a 32 bit version to the Fischerle_0_9_30b distribution. If you'd like to continue using this older version: it is as well available at http://www.stuckardt.de/index.php/schac ... herle.html

Have fun!
Roland
tmokonen
Posts: 1296
Joined: Sun Mar 12, 2006 6:46 pm
Location: Kelowna
Full name: Tony Mokonen

Re: New Fischerle Versions (64 and 32 Bit)

Post by tmokonen »

Thank you for the update, Roland.
User avatar
Sylwy
Posts: 4465
Joined: Fri Apr 21, 2006 4:19 pm
Location: IASI - the historical capital of MOLDOVA
Full name: SilvianR

Re: Nice !

Post by Sylwy »

THANK YOU !

Silvian :wink: R


Below is the previous Fischerle performance in my JAVA GRAND FINAL 2014:

Image
User avatar
Sylwy
Posts: 4465
Joined: Fri Apr 21, 2006 4:19 pm
Location: IASI - the historical capital of MOLDOVA
Full name: SilvianR

Re: The final response ! -:)

Post by Sylwy »

SzG wrote:Thank you, Roland.

I may be hopeless but I would like to ask how does the bat file know which java environment to use when I have both 32-bit and 64-bit java environment installed and my operating system is 64-bit.

Hi Gabor !

In short:

1.-Java bytecode (and source code) is platform independent, assuming you use platform independent libraries. 32 vs. 64 bit shouldn't matter.

2.-Data serialized on a 32bit platform must be read in on the 64bit platform with no issues at all.

Still alive ( :roll: ) the Java teacher

Silvian :wink: R


Image
User avatar
Sylwy
Posts: 4465
Joined: Fri Apr 21, 2006 4:19 pm
Location: IASI - the historical capital of MOLDOVA
Full name: SilvianR

Re: The final response ! -:)

Post by Sylwy »

SzG wrote:
Sylwy wrote:
SzG wrote:Thank you, Roland.

I may be hopeless but I would like to ask how does the bat file know which java environment to use when I have both 32-bit and 64-bit java environment installed and my operating system is 64-bit.

Hi Gabor !

In short:

1.-Java bytecode (and source code) is platform independent, assuming you use platform independent libraries. 32 vs. 64 bit shouldn't matter.

2.-Data serialized on a 32bit platform must be read in on the 64bit platform with no issues at all.

Still alive ( :roll: ) the Java teacher

Silvian :wink: R


Image
Hi Silvian,

As far as I understood Roland's statements, even that totally equivalent code produces different hash sizes, therefore maybe different strength.

However, what I don't understand at all is that both batch files begin with 'java', which I interpret as a program called 'java' is invoked and this program uses the jar file as an input. If that 'java' program is different when 32-bit and when 64-bit OS is used, maybe the strength of the engine will also be different.

On my 64-bit machine I have Program Files and Program Files(x86), under both of them there is a java directory. In your opinion which of the two will be invoked when the system starts the execution of the bat file with that 'java' instruction?

Gábor
Delete the Java 32-bit environment from your machine ! That's my advice.
On Java 64-bit you can test both the 32 & 64-bit Fischerle executables.


Java libraries aren't 32 or 64 bit, they are in Java ByteCode. So they can be executed on any JVM 64 or 32 the exact same way.


Silvian :wink: R
User avatar
RolandoFurioso
Posts: 55
Joined: Sat Feb 22, 2014 7:29 pm
Location: Frankfurt

Re: The final response ! -:)

Post by RolandoFurioso »

Hi Gabor,

which Java version will be employed depends upon the setting of some environment variables of your operating system. Generally speaking, there is a variable called $PATH or so that specifies a list of directories and thus determines the order in which they are searched for a program with name java. The first one that is found will then be employed to run Fischerle.

It is, however, possible to override the outcome of this default search procedure by simply specifying the complete path of the java version. That is: edit the .bat files and specify the complete paths of the Java versions to be used, depending upon the location of your jres, this might look as follows:

C:\Program Files\Java\jre7\bin\java -Xms1400m -Xmx1400m -XX:+UseParallelGC -jar "dist\Fischerle.jar" uci

... and likewise for the 32 bit version:

C:\Program Files (x86)\Java\jre7\bin\java -Xms1400m -Xmx1400m -XX:+UseParallelGC -jar "dist\Fischerle.jar" uci

It might be necessary to include the paths into quotes ("..." or so) since they contain blanks.

If you'd like to employ the .exe starters instead, you'd have to recompile them from the changed .bat files.

All the best
Roland
User avatar
RolandoFurioso
Posts: 55
Joined: Sat Feb 22, 2014 7:29 pm
Location: Frankfurt

Re: The final response ! -:)

Post by RolandoFurioso »

Sylwy wrote:
SzG wrote:
Sylwy wrote:
SzG wrote:Thank you, Roland.

I may be hopeless but I would like to ask how does the bat file know which java environment to use when I have both 32-bit and 64-bit java environment installed and my operating system is 64-bit.

Hi Gabor !

In short:

1.-Java bytecode (and source code) is platform independent, assuming you use platform independent libraries. 32 vs. 64 bit shouldn't matter.

2.-Data serialized on a 32bit platform must be read in on the 64bit platform with no issues at all.

Still alive ( :roll: ) the Java teacher

Silvian :wink: R


Image
Hi Silvian,

As far as I understood Roland's statements, even that totally equivalent code produces different hash sizes, therefore maybe different strength.

However, what I don't understand at all is that both batch files begin with 'java', which I interpret as a program called 'java' is invoked and this program uses the jar file as an input. If that 'java' program is different when 32-bit and when 64-bit OS is used, maybe the strength of the engine will also be different.

On my 64-bit machine I have Program Files and Program Files(x86), under both of them there is a java directory. In your opinion which of the two will be invoked when the system starts the execution of the bat file with that 'java' instruction?

Gábor
Delete the Java 32-bit environment from your machine ! That's my advice.
On Java 64-bit you can test both the 32 & 64-bit Fischerle executables.

[...]

Silvian :wink: R
Completely right!

In addition, one should keep in mind that it doesn't make sense to test both 64 and 32 bit versions in the same environment since they are completely (Java-bytecode-)identical! That is, the very same .jar file is executed, the only difference being that the 32 bit "version" starts the . jar file with an additional parameter "32bit", which leeds to slightly more hash table entries.

All other things are absolutely identical!

On 32 bit systems, however, Fischerle will run considerably slower (factor 0.55 or so) since the rotated bitboard operations make great use of 64-bit-parallel operations on x64 and other 64 bit environments.

Roland
User avatar
RolandoFurioso
Posts: 55
Joined: Sat Feb 22, 2014 7:29 pm
Location: Frankfurt

Re: The final response ! -:)

Post by RolandoFurioso »

Hi Gabor,

the results that you're reporting are perfectly in line with the expectations! You're employing one 64 bit environment and one 32 bit environment. The 64 bit JRE maps the bytecode to the 64-bit instruction set of your processor, while the 32 bit Java doesn't make use of the 64 bit instruction set. Don't ask me for full details about how the emulation of 32 bit code on an x64 processor works; the main point, however, is that the 32 bit execution of Fischerle's bytecode is significantly less performant than its 64 bit execution since, chiefly due to the bitboard representation employed, Fischerle's code strongly profits from the performance gains enabled by the 64-bit instruction set.

I'm somewhat (although pleasantly) surprised that the speedup factor that you're reporting is even larger than 2. Very nice to hear that Fischerle achieves 700kNPS on your system - in the middlegame or merely in the endgame?

All the best
Roland
User avatar
RolandoFurioso
Posts: 55
Joined: Sat Feb 22, 2014 7:29 pm
Location: Frankfurt

Re: The final response ! -:)

Post by RolandoFurioso »

Of course, Fischerle is comparatively memory-hungry, employing several large arrays of supplementary bit patterns for fast bitboard-based chess-related test and evaluation operations. (Moreover, it's a tribute to Java itself, which probably consumes more menory than other, "leaner" languages.) However, the part of the assigned memory that is occupied by the hash table entries should amount to the chosen setting (128MB, 256MB or so).

Roland