Discussion of anything and everything relating to chess playing software and machines.
Moderators: hgm, Harvey Williamson, bob
Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
-
vittyvirus
- Posts: 641
- Joined: Wed Jun 18, 2014 12:30 pm
Post
by vittyvirus » Tue Dec 30, 2014 10:58 am
Stockfish is doesn't seem to find hardware instructions on MSVC++ 32-bit. 32-bit MSVC++ doesn't have 64-bit functions like _BitScanForward64().
So, instead of:
Code: Select all
#ifdef USE_BSFQ
# if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
FORCE_INLINE Square lsb(Bitboard b) {
unsigned long idx;
_BitScanForward64(&idx, b);
return (Square) idx;
}
FORCE_INLINE Square msb(Bitboard b) {
unsigned long idx;
_BitScanReverse64(&idx, b);
return (Square) idx;
}
...
they should've done:
Code: Select all
# if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
#ifdef _WIN64
FORCE_INLINE Square lsb(Bitboard b) {
unsigned long idx;
_BitScanForward64(&idx, b);
return (Square) idx;
}
FORCE_INLINE Square msb(Bitboard b) {
unsigned long idx;
_BitScanReverse64(&idx, b);
return (Square) idx;
}
#else
FORCE_INLINE Square lsb(Bitboard b) {
unsigned long idx;
if (unsigned (b))
{
_BitScanForward(&idx, b);
return Square (idx);
} else
{
_BitScanForward(&idx, (b >> 32));
return Square(idx + 32);
}
/*unsigned long idx;
_BitScanForward64(&idx, b);
return (Square) idx;*/
}
FORCE_INLINE Square msb(Bitboard b) {
unsigned long idx, b32 = (b >> 32);
if (b32)
{
_BitScanReverse(&idx, b32);
return Square(idx + 32);
} else
{
_BitScanReverse(&idx, unsigned (b));
return Square(idx);
}
/*unsigned long idx;
_BitScanReverse64(&idx, b);
return (Square) idx;*/
}
#endif
Similar for popcnt.
Code: Select all
...
#elif defined(_MSC_VER) && defined(__INTEL_COMPILER) // Almost never true
return _mm_popcnt_u64(b);
#elif defined(_MSC_VER)
unsigned lo = b, hi = (b >> 32);
return _mm_popcnt_u32(lo) + _mm_popcnt_u32(hi);
//return (int) __popcnt64(b);
#else
...
The solution that worked for me was:
Code: Select all
...
#elif defined(_MSC_VER)
#ifdef _WIN64
return _mm_popcnt_u64(b);
#else
unsigned lo = b, hi = (b >> 32);
return _mm_popcnt_u32(lo) + _mm_popcnt_u32(hi);
#endif
#else
...
I hope the SF team considers this.
'I would only believe in a god who could dance.' - Friedrich Nietzsche
-
zamar
- Posts: 613
- Joined: Sun Jan 18, 2009 6:03 am
Post
by zamar » Tue Dec 30, 2014 2:14 pm
Joona Kiiski
-
vittyvirus
- Posts: 641
- Joined: Wed Jun 18, 2014 12:30 pm
Post
by vittyvirus » Tue Dec 30, 2014 2:37 pm
Thank you for raising that issue! It's my pleasure to make a slight contribution to such a legendary and clean coded engine, which I myself love!
'I would only believe in a god who could dance.' - Friedrich Nietzsche
-
Damir
- Posts: 1796
- Joined: Mon Feb 11, 2008 2:53 pm
Post
by Damir » Tue Dec 30, 2014 4:34 pm
Hi Syed
Maybe you can contribute even more, by helping the Stockfish team improve their engine.. Commercial engines like Komodo need to be knocked out in the next TCEC season. I am sure that SF team would greatly appreciate all the help you can give them, since they seem to be stucked in improving their engine.
-
vittyvirus
- Posts: 641
- Joined: Wed Jun 18, 2014 12:30 pm
Post
by vittyvirus » Tue Dec 30, 2014 5:33 pm
Damir wrote:Hi Syed
Maybe you can contribute even more, by helping the Stockfish team improve their engine.. Commercial engines like Komodo need to be knocked out in the next TCEC season. I am sure that SF team would greatly appreciate all the help you can give them, since they seem to be stucked in improving their engine.
I love Stockfish. So if I would ever be able to join Stockfish team, it'll be my pleasure. And yes, it hurts to see that SF lost TCEC.
But I don't know where I should start. I mean, I have heard but technically don't know any Stockfish weaknesses. If anyone has an idea, then I can surely work on it...
'I would only believe in a god who could dance.' - Friedrich Nietzsche
-
Damir
- Posts: 1796
- Joined: Mon Feb 11, 2008 2:53 pm
Post
by Damir » Tue Dec 30, 2014 5:52 pm
Komodo won the match because it got more wins in closed positions. Stockfish main weakness is it does not know how to play closed games Komodo clearly outplayed SF in closed positions. If you can improve Stockfish in how to play better closed games, it might be able to beat Komodo in next TCEC season... Just my 2 cents
-
vittyvirus
- Posts: 641
- Joined: Wed Jun 18, 2014 12:30 pm
Post
by vittyvirus » Tue Dec 30, 2014 6:03 pm
Damir wrote:Komodo won the match because it got more wins in closed positions. Stockfish main weakness is it does not know how to play closed games Komodo clearly outplayed SF in closed positions. If you can improve Stockfish in how to play better closed games, it might be able to beat Komodo in next TCEC season... Just my 2 cents
Really? I'd look into the matter. Also, Stockfish seems ro be stupid in some endgames, but much less than other engines.
In closed positions, this might be caused by over-pruning..
'I would only believe in a god who could dance.' - Friedrich Nietzsche
-
Damir
- Posts: 1796
- Joined: Mon Feb 11, 2008 2:53 pm
Post
by Damir » Tue Dec 30, 2014 7:00 pm
If you can manage to improve Stockfish play better in closed positions, you will manage to secure its victory against Komodo in the next TCEC event...
-
vittyvirus
- Posts: 641
- Joined: Wed Jun 18, 2014 12:30 pm
Post
by vittyvirus » Tue Dec 30, 2014 7:18 pm
Damir wrote:If you can manage to improve Stockfish play better in closed positions, you will manage to secure its victory against Komodo in the next TCEC event...
...and in Worpd Computer Chess Championship.
But the bottomside is, the Stockfish maintainers and team knows how difficult it is to do...
'I would only believe in a god who could dance.' - Friedrich Nietzsche
-
mcostalba
- Posts: 2679
- Joined: Sat Jun 14, 2008 7:17 pm
Post
by mcostalba » Wed Dec 31, 2014 8:37 am
Syed, what command line you use to compile?
You have that error because you force -DUSE_BSFQ somehow, while you shouldn't