PDA

Просмотр полной версии : Сборки SF от Marat'ka


Maratka
10.06.2017, 21:12
В этой теме планирую выкладывать свои сборки, как правило - текущая версия с Abrok + свежие (на данный момент еще не прошитые) патчи.

Maratka
10.06.2017, 21:41
https://yadi.sk/d/39Da3n2J3JzxqT

Базируется на исходнике с Abrok от 6 июня
Добавлены пачти:

http://tests.stockfishchess.org/tests/view/5931aeb30ebc59035df34f4b
http://tests.stockfishchess.org/tests/view/593a8fec0ebc59035df35215

Последний в настоящее время тестируется на Abrok, есть шансы, что пройдет.
http://tests.stockfishchess.org/tests/view/593c2a4e0ebc59035df35289
Предварительный контроль на 10 секунд прошел с преимуществом в 3 Elo

sergey1963
10.06.2017, 22:18
в этой теме моей ноги не будет!!!

Viktor
12.06.2017, 13:43
https://yadi.sk/d/39Da3n2J3JzxqT

Базируется на исходнике с Abrok от 6 июня
Добавлены пачти:

http://tests.stockfishchess.org/tests/view/5931aeb30ebc59035df34f4b
http://tests.stockfishchess.org/tests/view/593a8fec0ebc59035df35215

Последний в настоящее время тестируется на Abrok, есть шансы, что пройдет.
http://tests.stockfishchess.org/tests/view/593c2a4e0ebc59035df35289
Предварительный контроль на 10 секунд прошел с преимуществом в 3 Elo

Эта версия в моем тестировании "бьёт" все остальные!

Parkaev_Andrey
12.06.2017, 15:03
Версии SSE и AVX
А чем они отличаются?

ChessMan
12.06.2017, 15:05
А чем они отличаются?

Процессорные инструкции

SSE - https://ru.wikipedia.org/wiki/SSE

AVX - https://ru.wikipedia.org/wiki/AVX

Maratka
12.06.2017, 16:35
Эта версия в моем тестировании "бьёт" все остальные!
А подробнее можно?

Viktor
12.06.2017, 23:08
А подробнее можно?

Как закончу тест - выложу.

Viktor
12.06.2017, 23:25
Прошу прощения, я перепутал версию. Впереди версия Вовакора - Stockfish 170606 VK ASM.

Maratka
14.06.2017, 11:46
https://yadi.sk/d/HIS3CjmY3K7DAb

Базируется на исходнике с Аброк от 6 июня.
Добавлены патчи:
http://tests.stockfishchess.org/tests/view/59405c650ebc59035df353c8
и
http://tests.stockfishchess.org/tests/view/5931aeb30ebc59035df34f4b

Maratka
15.06.2017, 15:12
https://yadi.sk/d/CS0GH7SV3K9sYJ

В дополнение к предыдущим патчам добавил:
http://tests.stockfishchess.org/tests/view/594261c10ebc59035df35447

Если выстрелит - есть смысл пользоваться, иначе - лучше вчерашние сборки.

Maratka
16.06.2017, 12:29
Последний патч прошел на грани фейла, но таки прошел.
Так что оставляю - вреда от него точно нет, а преимущество на уровне десятых долей ELO где-то свое слова все же скажет.

Родственный патч стал желтым на контроле 10+0,1
http://tests.stockfishchess.org/tests/view/5941edda0ebc59035df35431

Так что имеющийся - лучшее что есть.

Maratka
16.06.2017, 23:46
https://yadi.sk/d/JjyLbDO93KCayH

Добавлен патч
http://tests.stockfishchess.org/tests/view/594391940ebc59035df35497
На момент сборки - патч был в состоянии прохождения с хорошими шансами на успех.
Тем не менее, если "покраснеет" - значит лучше использовать предыдущую (вчерашнюю) версию.

Maratka
18.06.2017, 15:21
https://yadi.sk/d/PxP8yTqa3KEKtH

Добавил патч:
http://tests.stockfishchess.org/tests/view/5945ba980ebc593ea732d159

Maratka
20.06.2017, 12:07
https://yadi.sk/d/t-x4jrbI3KHhGA

Добавил:
http://tests.stockfishchess.org/tests/view/59484a5b0ebc593ea732d1e7
(в настоящее время тестируется).

otodranik
20.06.2017, 14:12
https://yadi.sk/d/t-x4jrbI3KHhGA

Добавил:
http://tests.stockfishchess.org/tests/view/59484a5b0ebc593ea732d1e7
(в настоящее время тестируется).
Этот скорее-всего пройдет

Maratka
20.06.2017, 14:19
Этот скорее-всего пройдет
В принципе, я и от недавно прошиты желтых не сильно расстроился.
Усиление есть, небольшое конечно же. Но большого никто и не обещал.

Maratka
27.06.2017, 00:45
https://yadi.sk/d/MAVWAZ3q3KUhVa

Добавил патч:
http://tests.stockfishchess.org/tests/view/5950f3410ebc593ea732d516

sergey1963
27.06.2017, 09:04
ты это... Марат- не обижайся... а то и поспорить не с кем... скучно...
для затравки выложил в железе печальные факты о процах Интела- пусть АМД-шникам полегчает...

otodranik
27.06.2017, 10:32
Маратка, а шо у тебя за бенч дивный 5556025?
:scratch_one-s_head:

Maratka
27.06.2017, 10:52
Не знаю.
А какой он должен быть?

otodranik
27.06.2017, 11:01
У этого патча, вставленного в исходники от 21 июня - 6258930

ChessMan
27.06.2017, 11:38
У этого патча, вставленного в исходники от 21 июня - 6258930

Так он ведь ранее ещё пару патчей добавил, которые желтые были.

otodranik
27.06.2017, 14:53
Если желтые есть патчи, тогда понятно.

Maratka
27.06.2017, 15:55
Честно говоря, я вообще не понимаю назначение этого бенчмарка :)

otodranik
27.06.2017, 16:13
Честно говоря, я вообще не понимаю назначение этого бенчмарка :)
Своего рода чексумма

ChessMan
27.06.2017, 16:19
Своего рода чексумма

Только очень не точная.

Maratka
27.06.2017, 16:24
И это очень мягко говоря.
Я сравнивал свои сборки со сборками от otodranik.
Встроенный бенч говорит, что у меня ну если очень грубо -то раза в полтора медленнее.
А вот LittleBlitzer показывает разницу в единицы процентов.

Сейчас специально взял его исходники, через часик выложу для проверки всем желающим.

Maratka
27.06.2017, 17:07
https://yadi.sk/d/ji1ul-Xk3KWVXr

Сравнивать с
http://forchess.ru/showpost.php?p=35361&postcount=107

otodranik
27.06.2017, 17:16
https://yadi.sk/d/ji1ul-Xk3KWVXr

Сравнивать с
http://forchess.ru/showpost.php?p=35361&postcount=107
Маратка, называй свои сборки покороче!:don-t_mention:

Maratka
27.06.2017, 17:23
StockFish MSVC compiler_AVX
stockfish_260617_x64_popcnt

Вроде бы равная длина имени, нет? ;)

ChessMan
27.06.2017, 17:24
https://yadi.sk/d/ji1ul-Xk3KWVXr

Сравнивать с
http://forchess.ru/showpost.php?p=35361&postcount=107

Их некорректно сравнивать так как Ваша компиляция с поддержкой AVX

Maratka
27.06.2017, 17:27
Их некорректно сравнивать так как Ваша компиляция с поддержкой AVX

Т.е. AVX во встроенном бенчмарке работает как-то иначе, чем в LittleBlitzer?
Или popcnt во встроенном бенчмарке работает как-то иначе, чем в LittleBlitzer?
Или оба этих набора инструкций работают не так?

Мне кажется, что это несколько странное предположение.

Maratka
27.06.2017, 17:30
SSE2-сборка:
https://yadi.sk/d/_PSCJB543KWZtf

ChessMan
27.06.2017, 17:39
Т.е. AVX во встроенном бенчмарке работает как-то иначе, чем в LittleBlitzer?
Или popcnt во встроенном бенчмарке работает как-то иначе, чем в LittleBlitzer?
Или оба этих набора инструкций работают не так?

Мне кажется, что это несколько странное предположение.

Вы же собрались сравнивать скорость или что-то другое?

ChessMan
27.06.2017, 17:40
Компиляция Ото быстрее будет.

https://postimg.org/image/m8txsu28b/

https://s17.postimg.org/5l2fqc7gv/Screenshot_873.png

Maratka
27.06.2017, 17:42
Вы же собрались сравнивать скорость или что-то другое?
Именно.
И я хочу понять:
1) Почему встроенный бенч показывает в моей сборке скорость на ~40% ниже чем в сборке от otodranik, а если запустить эти же сборки в LittleBlitzer, то всего на 7%
2) Где правильный результат?

Maratka
27.06.2017, 17:48
Компиляция Ото быстрее будет.
Но не на 60%, что показывает встроенный бенч:

Oto:
===========================
Total time (ms) : 3522
Nodes searched : 6258930
Nodes/second : 1777095

Моя:
===========================
Total time (ms) : 6239
Nodes searched : 6258930
Nodes/second : 1003194

ChessMan
27.06.2017, 17:55
https://postimg.org/image/sbotuupd1/

https://s2.postimg.org/g9tg0pg4p/Screenshot_875.png

Maratka
27.06.2017, 18:04
Сиграйте пару сотен партий, и разница должна будет еще уменьшится.
Но даже тут видно, что она не превышает 14%, тогда как бенч в консоли показывает ~60%


p.s.
Какой у Вас процессор?

ChessMan
27.06.2017, 18:07
Сиграйте пару сотен партий, и разница должна будет еще уменьшится.
Но даже тут видно, что она не превышает 14%, тогда как бенч в консоли показывает ~60%


p.s.
Какой у Вас процессор?

Phenom 1090Т @ 3.6GHz

ChessMan
27.06.2017, 19:33
https://postimg.org/image/rid7ycqu9/

https://s24.postimg.org/rid7ycqud/Screenshot_879.png

Maratka
28.06.2017, 03:59
Ребята, а кто подскажет - куда копать, если у меня на некоторых позициях SF падает при подключении syzygy-баз?
Без баз - не падает.
С базами, но другие компиляции (скажем стандартная аброковская) - не падает.

Ошибка в исходнике (не учитываются некоторые нюансы компилятора MS)?

otodranik
28.06.2017, 10:43
Ребята, а кто подскажет - куда копать, если у меня на некоторых позициях SF падает при подключении syzygy-баз?
Без баз - не падает.
С базами, но другие компиляции (скажем стандартная аброковская) - не падает.

Ошибка в исходнике (не учитываются некоторые нюансы компилятора MS)?
Вряд-ли, ошибка в исходнике. Компилятор - это инстумент. Он должен быть достаточным для сборки.

ChessMan
28.06.2017, 10:49
Ребята, а кто подскажет - куда копать, если у меня на некоторых позициях SF падает при подключении syzygy-баз?
Без баз - не падает.
С базами, но другие компиляции (скажем стандартная аброковская) - не падает.

Ошибка в исходнике (не учитываются некоторые нюансы компилятора MS)?

Скомпилируйте в MinGW для проверки (заодно и скорость проверите).

DEEP_MIND
28.06.2017, 10:56
а SSE2 сборка разве дает какое-то ускорение? в наборе команд SSE2 в основном команды для потоковой обработки (хороши для видео-аудио обработки)
что там можно в шахматном движке сделать с помощью этих команд?
я раньше пробовал этой опцией поиграться - никакой разницы в скорости не заметил. (по моему и размер exe был одинаковый)

ChessMan
28.06.2017, 11:26
Если взглянуть на мейкфайл то мы увидим что по умолчанию используется SSE3 для popcnt и BMI2 компиляций. Возможно сборка с SSE2 действительно тормозит двиг.

Maratka
28.06.2017, 13:30
Вряд-ли, ошибка в исходнике. Компилятор - это инстумент. Он должен быть достаточным для сборки.

Падало из-за этого :

while (std::getline(ss, path, SepChar)) {
fname = path + "/" + f;
std::ifstream::open(fname);

и последующем маппинге файла.

На момент падения,
fname="C:\\wdl/KRRPvKQ.rtbz"

DTZ в движке прописаны не были, соответственно имеем нулевой указатель, ну т.е. тут все по честному, придраться что оно упало - сложно.
Позиция:
8/5k2/3R4/3R3p/8/6PK/2q5/8 w - - 0 83
Падает при взятии пешки ладьей, соответственно получается чистейший KRRPvKQ

Тем не менее, вопросы:

1) Почему не падает на скажем сборке otodranik?
Что такого компилятор может сделать с кодом, чтобы оно прокатило?
Или это последствия каких-то других патчей, которые есть только у меня, но не у otodranik?
_______
2) Также просьба объяснить, почему считается, что WDL-баз достаточно для игры, и DTZ не нужны?
Я их по доброте душевной и не стал их подключать, ну и проиграл на ChessBase в ничейной позиции (FEN -выше)

DEEP_MIND
28.06.2017, 14:07
обработка исключений?

Maratka
28.06.2017, 14:38
Как было, так есть, ничего не менял:

std::stringstream ss(Paths);
std::string path;

while (std::getline(ss, path, SepChar)) {
fname = path + "/" + f;
std::ifstream::open(fname);
if (is_open())
return;
}
}

// Memory map the file and check it. File should be already open and will be
// closed after mapping.
uint8_t* map(void** baseAddress, uint64_t* mapping, const uint8_t* TB_MAGIC) {

assert(is_open());

close(); // Need to re-open to get native file descriptor

_________
Дебагер покзал, что вываливается на
assert(is_open());

Понятно, что открытие файла невозможно, раз файла физически нет.
Но почему проблемы нет на других, не MSVC-сборках?

DEEP_MIND
28.06.2017, 16:36
Дебагер покзал, что вываливается на
assert(is_open());
Понятно, что открытие файла невозможно, раз файла физически нет.
Но почему проблемы нет на других, не MSVC-сборках?
странно, вызов assert необходим в дебаг-сборках для отлова багов, и в релиз сборке их убирают.

https://habrahabr.ru/post/141080/

Maratka
28.06.2017, 17:09
Однако он таки там есть.
tbprobe.cpp
337 строка.

Исходник с аброка, плюс добавленные мною патчи.

ChessMan
28.06.2017, 17:13
В Стокфише assert встречается не один раз и даже не 20, а больше.

Maratka
28.06.2017, 17:37
Меня не интересует количество.
Интересует, почему у меня срабатывает данное исключение, а на сборках с другим компилятором - нет при одних и тех же условиях.

Aster
28.06.2017, 17:40
Компилируете в Release mode? NDEBUG отключен?

Maratka
28.06.2017, 18:53
Компилируете в Release mode?
Да


NDEBUG отключен?
#define NDEBUG
оно?

Aster
28.06.2017, 19:52
#define NDEBUG
оно?

Оно.

Maratka
28.06.2017, 20:35
Ну тогда не отключен, т.е. я не менял исходники в этой части.
Но другим компиляторам оно не мешает.

Aster
28.06.2017, 20:45
Ну тогда не отключен, т.е. я не менял исходники в этой части.
Но другим компиляторам оно не мешает.

Эта директива затрагивает исключительно поведение MSVC с assert'ами

Maratka
28.06.2017, 20:50
В настройках Студии ее можно задать?

Maratka
28.06.2017, 20:55
Описание из types.h:


/// When compiling with provided Makefile (e.g. for Linux and OSX), configuration
/// is done automatically. To get started type 'make help'.
///
/// When Makefile is not used (e.g. with Microsoft Visual Studio) some switches
/// need to be set manually:
///
/// -DNDEBUG | Disable debugging mode. Always use this for release.
///
/// -DNO_PREFETCH | Disable use of prefetch asm-instruction. You may need this to
/// | run on some very old machines.
///
/// -DUSE_POPCNT | Add runtime support for use of popcnt asm-instruction. Works
/// | only in 64-bit mode and requires hardware with popcnt support.
///
/// -DUSE_PEXT | Add runtime support for use of pext asm-instruction. Works
/// | only in 64-bit mode and requires hardware with pext support.


Т.е. мой случай:
/// When Makefile is not used (e.g. with Microsoft Visual Studio) some switches
/// need to be set manually:

Параметр
-DNDEBUG

Но это как я понимаю работает при сборке проекта из командной строки?

Maratka
01.07.2017, 14:45
Но не на 60%, что показывает встроенный бенч:
Oto:
===========================
Total time (ms) : 3522
Nodes searched : 6258930
Nodes/second : 1777095
Моя:
===========================
Total time (ms) : 6239
Nodes searched : 6258930
Nodes/second : 1003194

В общем с проблемой разобрался:
виноваты задержки при выводе в консоль больших объемов текста (все наши проанализированные линии в бенче).

Этим страдает в той или иной степени любая сборка, просто у otodranik - в меньшей степени, чем у меня.

Например, у него результат
===========================
Total time (ms) : 3705
Nodes searched : 6258930
Nodes/second : 1689319

тогда как без вывода в консоль больших массивов текста получается:
Total time (ms) : 3588
Nodes searched : 6258930
Nodes/second : 1744406

У меня разница больше:
Total time (ms) : 5785
Nodes searched : 5670504
Nodes/second : 980208

и соответственно
Total time (ms) : 3308
Nodes searched : 5670504
Nodes/second : 1714178

Правильный результат доступен по команде:
Filename bench > nul

В этом случае все линии просмотренных строк будут переправлены в пустоту, а в консоли будет только номер теста, вида:

Position: 1/42
Position: 2/42
...
...
Position: 42/42

otodranik
01.07.2017, 15:28
В общем с проблемой разобрался:
виноваты задержки при выводе в консоль больших объемов текста (все наши проанализированные линии в бенче).

Этим страдает в той или иной степени любая сборка, просто у otodranik - в меньшей степени, чем у меня.

Например, у него результат
===========================
Total time (ms) : 3705
Nodes searched : 6258930
Nodes/second : 1689319

тогда как без вывода в консоль больших массивов текста получается:
Total time (ms) : 3588
Nodes searched : 6258930
Nodes/second : 1744406

У меня разница больше:
Total time (ms) : 5785
Nodes searched : 5670504
Nodes/second : 980208

и соответственно
Total time (ms) : 3308
Nodes searched : 5670504
Nodes/second : 1714178

Правильный результат доступен по команде:
Filename bench > nul

В этом случае все линии просмотренных строк будут переправлены в пустоту, а в консоли будет только номер теста, вида:

Position: 1/42
Position: 2/42
...
...
Position: 42/42
У тебя и дольше обрабатывала.

otodranik
01.07.2017, 15:32
В твоем случае написано: When Makefile is not used (e.g. with Microsoft Visual Studio) some switches need to be set manually:
Когда мейкфайл не используется, нужно выставить некоторые перключатели(флаги) вручную. И список приведен! В твоем же #61 посте!

Maratka
01.07.2017, 15:33
У тебя и дольше обрабатывала.

Было дольше, т.к. была AVX-сборка, где AVX был лишь формально (проверил по бенчам - толку от него в пределах погрешности в сравнении с моей же SSE2-сборкой).
Сейчас же замерял на моей POPCNT-сборке

Ну и еще: в этой сборке прошил патч
http://tests.stockfishchess.org/tests/view/5955e3ac0ebc593ea732d66d

Маловероятно, что он будет зеленым, но желтый - гарантировано.

Maratka
01.07.2017, 15:36
В твоем случае написано: When Makefile is not used (e.g. with Microsoft Visual Studio) some switches need to be set manually:
Когда мейкфайл не используется, нужно выставить некоторые перключатели(флаги) вручную. И список приведен! В твоем же #61 посте!

Я умею читать технические тексты (применительно к компьютерному железу/софту на английском :)

Если ты про:
Параметр
-DNDEBUG

то падения избежать не удалось: нет базы DTZ- сборка по прежнему падает.

Аналогично упала сборка, собранная компилятором Intel

otodranik
01.07.2017, 15:44
Я умею читать технические тексты (применительно к компьютерному железу/софту на английском :)

Если ты про:


то падения избежать не удалось: нет базы DTZ- сборка по прежнему падает.

Аналогично упала сборка, собранная компилятором Intel

Значит, может-быть, есть баги по сборке на этих средах.

Maratka
01.07.2017, 16:04
Возможно.
Но тогда это утверждение неверно:
Эта директива затрагивает исключительно поведение MSVC с assert'ами
Если там конечно имелся в виду компилятор, а не оболочка.
Ключи я прописывал как раз таки в оболочке, и -DUSE_POPCNT (вернее /DUSE_POPCNT) сработал правильно, и собрал POPCNT-сборку (видно по скорости).

Maratka
10.07.2017, 12:26
https://yadi.sk/d/-DdD1kHn3KuNRL

Добавлены несколько желтых патчей (общий прирост с ними ~1,5 Elo)

---------
В связи с особенностью сборки, при работе с syzygy-базами необходимо указывать путь не только к WDL, но и к DTZ-базам.

Maratka
23.07.2017, 22:18
https://yadi.sk/d/9eMcYkGt3LKkUN

POPCNT -версия
Добавлены патчи:
http://tests.stockfishchess.org/tests/view/597137780ebc5916ff649de3
http://tests.stockfishchess.org/tests/view/596cd5390ebc5916ff649ca7
http://tests.stockfishchess.org/tests/view/5967a5a10ebc5916ff649b84

Maratka
04.09.2017, 17:30
https://yadi.sk/d/itI-nK_Z3MbGmb
Сборка POPCNT x64
Базируется на предпоследней версии с Аброка (патч syzygy отсутствует)

Добавлены патчи:
http://tests.stockfishchess.org/tests/view/599fb6540ebc5916ff64aafc
- желтый

http://tests.stockfishchess.org/tests/view/59a89ab90ebc5916ff64adbb
- зеленый

С датой компиляции все нормально, последний патч был прошит тогда, когда еще не закончилось его тестирование, но вероятность "зеленого" была высока, а "желтого" - вообще 99%.

p.s.
Движок настроен на использование 8-ми ядер по умолчанию, просьба учитывать при подключении движка к оболочке.

Maratka
20.09.2017, 17:24
https://yadi.sk/d/AuXBDe593N5fmJ
Сборка POPCNT x64

Патч http://tests.stockfishchess.org/tests/view/599fb6540ebc5916ff64aafc
заменен на
http://tests.stockfishchess.org/tests/view/59acedd50ebc5916ff64ae87

Добавлен патч:
http://tests.stockfishchess.org/tests/view/59ae3f360ebc5916ff64aef5

p.s.
Движок настроен на использование 8-ми ядер по умолчанию, просьба учитывать при подключении движка к оболочке.

Maratka
22.09.2017, 11:24
https://yadi.sk/d/z95wQRag3N8e69
Сборка POPCNT x64

Добавлены патчи:
http://tests.stockfishchess.org/tests/view/59c3c6900ebc5916ff64b5c7
(зеленый)

http://tests.stockfishchess.org/tests/view/59c0727b0ebc5916ff64b4cd
(скорее всего будет желтым).

p.s.
Движок настроен на использование 8-ми ядер по умолчанию, просьба учитывать при подключении движка к оболочке.