YaneuraOu

From Chessprogramming wiki
Revision as of 21:29, 4 October 2020 by GerdIsenberg (talk | contribs)
Jump to: navigation, search

Home * Engines * YaneuraOu

YaneuraOu, (やねうら王, Yaneura King)
an USI compliant open source Shogi engine as well a in 2016 CSA registered Shogi search library by Motohiro Isozaki aka Yaneurao, written in C++, licensed under the GPL 3.0. YaneuraOu with Otafuku Lab 2019 won the WCSC29 in 2019 [1] [2], YaneuraOu was mentioned in the library column of many programs participating in the WCSC29, notably runner-up Kristallweizen, third placed Tanu-King, and 14 others.

Features

YaneuraOu applies a Shogi adaptation of Stockfish's search, and can be combined with third party evaluations, such as Elmo and Apery [3]. At the WCSC29, it used a NNUE type of evaluation developed by Tanu-King team member Yu Nasu [4]. One of the characteristics of the NNUE type is that the number of parameters of the evaluation function is smaller than Bonanz's KPPT type. Since the number of training phases required for reinforcement learning is considered to be approximately proportional to the number of parameters of the evaluation function, the NNUE type should require fewer training phases than the KPPT type.

Bitboards

9x9 Shogi Bitboards are defined as array of two quad words and similar to Apery, as conditional compiled union type with 128-bit type __m128i, explicitly taking advantage of SSE2 instructions [5]:

// Bitboard 本体クラス

struct alignas(16) Bitboard
{
#if defined (USE_SSE2)
	union
	{
		// 64bit each
		u64 p[2];

		// For handling with SSE
		// bit0 represents SQ_11, bit1 represents SQ_12,…, bit81 represents SQ_99.
		// This bit position corresponds to the Square type.
		// However, bit63 is unused. This is a hack to find the rook's advantage with one pext by leaving here.
		// Invented by the magic bitboard sect, including Apery.
		__m128i m;
	};
#else // no SSE
	u64 p[2];
#endif

Forum Posts

Re: The Stockfish of shogi by Fabian Fichter, CCC, January 07, 2020

External Links

References

Up one Level