Форум » » IPPOLIT & ROBBOLITO » Ответить

IPPOLIT & ROBBOLITO

Bison: Предлагаю обсудить особенности устройства Ипполита. Все-таки некаждый день появляются сильнейшие opensource программы.

Ответов - 251, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All

Bison: ThinkingALot В Ипполите это не критично. Там весьма интересная функция накручивания счетчика, которой требуется меньше ходов на обрабоку новой позиции, да и ходы остаются примерно те же, всего-то 2 хода сделано с прошлой позиции.

ThinkingALot: Еще две странности: 1) В корне, если произошла отсечка, перебор еще раз запускается с нулевым окном, но уже в PV режиме. Во всех остальных PV узлах такого нет. 2) В PV узлах значения из хэша могут возвращаться только в игровом режиме, когда ограниченно время на ход.

ThinkingALot: Продления в Robbo определяются с помощью вызова exclusion search. При этом оценка всех ходов, кроме хода из хэша, должна быть не выше (beta - margin). В PV узлах этот margin в два раза меньше чем в Cut узлах. Я попробовал в Cut тот же margin, что и в PV (только в обычном поиске - если шах, то оставил двойной margin). По логике вещей скорость набора глубины должна была бы существенно упасть. Но она НЕ упала ! Кто-нибудь понимает, почему?


Bison: Возможно потому, что таких позиций, в которых срабатывает singular продление, не так уж и много, плюс все это дело запускается на довольно больших глубинах, поэтому и разница почти не чувствуется.

ThinkingALot: Нашел БАГ. Если добавить в структуру type_dynamic переменную типа uint8, которая потом нигде не используется, то есть, по идее, не должна ни на что влиять, происходит следующее. 1) Изменяется поиск: для перебора на ту же глубину требуется другое количество узлов. 2) В определенный момент Роббо вылетает с ошибкой. Если переменная типа uint16, то все ОК. Получается, что зачем-то необходимо двухбайтовое выравнивание. А... понял в чем дело. Размер type_dynamic используется в move_make.c - там он предполагается равным 32-м байтам.

Sentinel: ThinkingALot writes: Нашел БАГ. Если добавить в структуру type_dynamic переменную типа uint8, которая потом нигде не используется, то есть, по идее, не должна ни на что влиять, происходит следующее. These dummy bytes (words) are used in hash structures for memory alignment to 64bits. It's very important thing (more then 5% in speed). I double checked it, and it's all correct.

bankuss: посмотрел что засылает аквариум движку: setoption name UCI_AnalyseMode value true position startposgo infinite stop setoption name UCI_AnalyseMode value false position fen ................... go infinite stop setoption name UCI_AnalyseMode value false setoption name UCI_AnalyseMode value true и т.д. что интересно постоянно шлет команду UCI_AnalyseMode, для перевода движка в режим анализа. Из опенсорсных ее только вяленый и глаурунг видят. рыбка-3 такой команды не знает. но это не суть. движок тупо запускается в бесконечный режим (режим анализа) и потом прерывается командой стоп, после этого смотрит что выдал движок и пишет в дерево. вот в этом месте у айвенго где-то что-то не то. работает явно не так, как надо.

immortal223: А можно ли Роббобазы пришить другой программе с открытыми исходниками? Например Вяленому?

bankuss: prefetch опция на компиляторах MS VC просто напросто отсутствует, она имеется только в GСС: "Чтобы минимизировать задержки доступа к данным и таким образом улучшить производительность, лучше всего держать данные в ближайшей к процессору памяти. Выполнение этой задачи вручную называется предварительной выборкой. GCC поддерживает предварительную выборку данных вручную с помощью встроенной функции, называемой __builtin_prefetch. Эта функция используется для помещения данных в кэш незадолго до того как они понадобятся." так что данный ключ ничего не делает в виндозных компиляциях от MS (Visual studio). А жаль... PS нашел аналог _m_prefetch, надо проверить...

chesstango: or is there an available place in this forun for whom we only speak and read in English??? Thx in advance.

onedrey: chesstango http://immortal223.borda.ru/?0-17



полная версия страницы