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

IPPOLIT & ROBBOLITO

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

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

Osipov: Извиняюсь, PGN партий пожалуй не подойдёт. Там играли на время, а это почти нереально воспроизвести. Ладно, придётся самому искать глюки. Сегодня провёл турнир под своей оболочкой между Ипполитом и "своей" версией Рыбки 3. Играли 412 партий из 206 начальных позиций, оба считали на фиксированную глубину depth=6. Начиная с 12-й партии на Ипполита напала порча - начал сливать всё подряд. Где-то между 220-й и 280-й партиями почему-то восстановился и начал выигрывать. Потом опять провалился и слил. Итог: +60 -268 =84 в пользу Рыбки. Было несколько партий, где Ипполит надолго задумывался - тратил времени раз в 10 больше, чем Рыбка. И узлов в итоге насчитал почти в 3 раза больше. Есть над чем подумать.

Кевин: Osipov , bankuss и другие программисты: какой компилятор посоветуете? Как для компиляции Ипполита, так и вообще. Хочу немного поизучать языки программирования, раз уж тут такая интересная тема - на руках есть исходникик Ипполита.

bankuss: Кевин просто для изучения достаточно бесплатной версии VS express (2005 или 2008). качается с мелкософта. а так, самый быстрый код выдает компилятор от intel, но он в версии для windows стоит немалых денег.


NS: http://software.intel.com/en-us/articles/intel-c-compiler-professional-edition-for-windows-evaluation/ Вот тут можно скачать месячный триал.

kpripper: Прикрутите кто-нибудь поддержку нескольких линий в анализе или это сложно ?

bankuss: kpripper было бы просто, давно бы сделали.

unknow: Кевин пишет: какой компилятор посоветуете? Я пользую CodeLite (это IDE - редактор и отладчик) + компиляторы MinGW. Это всё бессрочно бесплатно. Для компиляции Ипполита с помощью MinGW надо в localdefs.h заменить ассемблерный инлайн BSF/BSR на: [pre2] extern int asm_rbit_pos(UINT64 val) __attribute__ ((regparm(2))); #define BSF asm_rbit_pos extern int asm_lbit_pos(UINT64 val) __attribute__ ((regparm(2))); #define BSR asm_lbit_pos [/pre2]и добавить в проект CodeLite исходник asm.s с текстом: [pre] ############################################################ # int asm_rbit_pos(u64 val) __attribute__ ((regparm(2))) # lo32 -> %eax # hi32 -> %edx .globl _asm_rbit_pos _asm_rbit_pos: testl %eax, %eax jz r_hi bsfl %eax, %eax jmp r_ret r_hi: bsfl %edx, %eax addl $32, %eax r_ret: ret ############################################################ # int asm_lbit_pos(u64 val) __attribute__ ((regparm(2))) # lo32 -> %eax # hi32 -> %edx .globl _asm_lbit_pos _asm_lbit_pos: testl %edx, %edx jz l_lo bsrl %edx, %eax addl $32, %eax jmp l_ret l_lo: bsrl %eax, %eax l_ret: ret [/pre] Ну и еще добавлять в конец длинных 16-ричных констант суффикс ULL, чтобы warning'и не сыпались при компиляции.

Renegat23: Господа программисты (ThinkingALot, Bison, Osipov, NS, WildCat, WinPooh, ChessTerminator75, bankuss). Два вопроса. 1) Почему ослабела версия d по сравнению с b ? 2) Возьметься все-таки кто-нибудь приделывать движку многопоточность или так друг на друга и будем кивать?

immortal223: Renegat23 пишет: 2) Возьметься все-таки кто-нибудь приделывать движку многопоточность или так друг на друга и будем кивать? Ака ты махнул с многопоточностью! Я бы просто хотел multiPV увидеить для начала, а то для анализа он очень неудобен пока что, кроме того в ИДЕЕ аквариумской он тоже не работает :( так как команду searchmoves тоже не поддерживает.. А там глядишь уже и рыбка 4 поспеет и как верно замечено было - все постепенно забудут про Ипполит, пока не выйдет Ипполит 2 основанный на коде Рыбки 5

Renegat23: immortal223 пишет: Я бы просто хотел multiPV увидеить для начала ИМХО, многопоточность гораздо более актуальна, чем mPV. Анализировать вполне можно и по одной линии. А вот скорость...

ThinkingALot: Renegat23 пишет: 1) Почему ослабела версия d по сравнению с b ? 2) Возьметься все-таки кто-нибудь приделывать движку многопоточность или так друг на друга и будем кивать? 1) Смысл версии d исключительно в длительном хранении результатов анализа. Почему играет слабее - без понятия. Может статистическая погрешность. Разница скорее всего в пределах 20-30 пунктов. 2) Это очень долго и скучно. К примеру, просто переопределение всех структур под мультипоточность для движка по сложности сопоставимого со Стрелкой заняло у меня пол дня. Код Ипполита многократно сложнее. При этом распараллеливание a-la Фрукт может запросто вообще не сработать, а нормальный алгоритм, как в Stockfish, - это возня с каждой из множества функций поиска.

immortal223: Renegat23 Зато приделать её в 100 раз труднее

bankuss: кстати, если компилять интеловским компилятором в дебаг режиме, то он при запуске ехе начинает ругаться на static __inline int BSF (UINT64 x) { int y; _BitScanForward64(&y,x); return y; } что эта функция портит стэк

ThinkingALot: Есть какое-нибудь ускорение от ICC?

bankuss: ThinkingALot не известно. если release версию сделать то к 12 полуходу она вызывает ошибку и вылет в ос

ThinkingALot: Возмодно поможет одно из 3x: 1) Переписать BSF/BSR на ассемблере: bsf/bsr rax, x 2) Убрать опции /Qipo, /ipo - в общем отключить interprocedural optimization. 3) Попробовать Profile Guided Optimization.

ThinkingALot: Погонял infinite analysis по несколько минут версии d в сравнении с b. Создалось впечатление, что у d больше branching factor. То есть глубины 16 достигают примерно одновременно, а до 20 версия d считает в несколько раз дольше. Хотя возможно это всего лишь статистическая погрешность.

дуп: Может быть немного не в тему, извиняйте. Надоело глядеть на эти дебильные имена, вручную переименовывать влом, все-таки 14,5 тысяч строк. Решил механизировать процесс. Начал писать программульку, завтра будет готова. Только писать тоже влом, может быть у кого готовое чего есть, чтобы не изобретать велосипед. Задумка такая: Создаешь папку, туда эту самую прогу и любой текстовый файл, например "IPP_ENG.c". Вводишь старое слово и новое. И все. Прога создает тут же новый файл, точно такой же и с таким же расширением. Все различия - все заданные имена поменяны на новые. Так есть у кого чего-нибудь наподобе?

Ramzes II: А зачем изобретать велосипед? Тот же Notepad++ способен заменять имена.

Gata: Обычный блокнот тоже справится



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