Шахматное программирование Chess Programming. Вы уже написали свою шахматную программу? Или только-только приступили к её разработке? Добро пожаловать в данный раздел! Делимся советами, помогаем новичкам в шахматном программировании

Ответ
Опции темы
Непрочитано 07.06.2010, 16:41   #1
ThinkingALot
 
Регистрация: 15.03.2010
Сообщений: 1,869
Сказал(а) спасибо: 2,230
Поблагодарили 4,904 раз(а) в 1,362 сообщениях

Награды пользователя:

По умолчанию Проект "Чайка"



Заготовка для движка (версия 0.1):
http://sourceforge.net/projects/gullchess/.
Пока играет где-то на 2600 - 2700 CCRL и поддерживает только контроли вида n'+0".

Сделал две версии: 01a - генерация ходов с помощью Magic и массивов атак. 01b - просто Magic. На AMD K8 версия 01a быстрее на 10-15%. У кого Core 2, i7 и Phenom, вы не могли бы сравнить скорость этих версий?
По идее, 01a должна быстро работать на компах с большим кэшем и медленной оперативной памятью, 01b - наоборот.
Benchmark работает так: запускаете в консоли движок, пишете "bench 11". Программа работает несколько десятков секунд и выдает nps.

Алгоритмы:
-Хэш в ФВ
-Пешечный хэш
-Шахи в ФВ
-SEE
-Нулевой ход
-История, Killer
-LMR
-Razoring
-Продления шахов

P.S. Весь код одним файлом, потому что
1) Так он быстрее грузится и компилируется.
2) Это облегчает навигацию по коду, если использовать полезную фичу Visual Studio: Клик правой кнопкой мыши->Outlining->Collapse to Definitions.

Тесты Чайки (Gull)
Вложения
Тип файла: zip Gull II.zip (260.8 Кб, 70 просмотров)
Тип файла: zip Gull R375.zip (263.1 Кб, 204 просмотров)
Тип файла: zip Gull 2.1.zip (301.6 Кб, 28 просмотров)
Тип файла: zip Gull 2.2.zip (350.0 Кб, 48 просмотров)
Тип файла: zip Gull 2.3.zip (351.3 Кб, 162 просмотров)
Тип файла: zip Gull 2.8 beta.zip (1.42 Мб, 196 просмотров)
Тип файла: zip Gull 2.8 beta and 2.9 alpha XP compatibility fix.zip (767.0 Кб, 65 просмотров)
Тип файла: zip Gull 3.zip (826.2 Кб, 262 просмотров)

Последний раз редактировалось ThinkingALot; 17.04.2014 в 19:32.
ThinkingALot вне форума   Ответить с цитированием
55 пользователя(ей) сказали cпасибо:
Непрочитано 08.06.2010, 11:45   #2
WildCat
 
Аватар для WildCat
 
Регистрация: 15.03.2010
Сообщений: 1,712
Сказал(а) спасибо: 3,475
Поблагодарили 5,816 раз(а) в 1,744 сообщениях
Страна:

Награды пользователя:

По умолчанию Re: Проект "Чайка"

У меня на q6600 немного быстрее 01a.
WildCat вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
ThinkingALot (08.06.2010)
Непрочитано 08.06.2010, 11:46   #3
Telepat
 
Аватар для Telepat
 
Регистрация: 14.03.2010
Сообщений: 3,290
Сказал(а) спасибо: 3,521
Поблагодарили 7,139 раз(а) в 2,088 сообщениях
Страна:
По умолчанию Re: Проект "Чайка"

А поподробнее можно про новый движок? Чем он отличается от остальных? Какие специфические особенности и уникальные идеи? Какие планы и перспективы?
Telepat вне форума   Ответить с цитированием
Непрочитано 08.06.2010, 11:50   #4
i7
Заблокирован
 
Регистрация: 14.03.2010
Возраст: 34
Сообщений: 407
Сказал(а) спасибо: 119
Поблагодарили 448 раз(а) в 295 сообщениях
Страна:
По умолчанию Re: Проект "Чайка"

.cpp тоже в папку с движками класть?
i7 вне форума   Ответить с цитированием
Непрочитано 08.06.2010, 12:11   #5
bankuss
 
Аватар для bankuss
 
Регистрация: 10.03.2010
Возраст: 42
Сообщений: 3,165
Сказал(а) спасибо: 1,011
Поблагодарили 7,149 раз(а) в 2,644 сообщениях
Страна:

Награды пользователя:

По умолчанию Re: Проект "Чайка"

Цитата:
Сообщение от i7 Посмотреть сообщение
.cpp
это исходный текст
bankuss вне форума   Ответить с цитированием
Непрочитано 08.06.2010, 12:21   #6
i7
Заблокирован
 
Регистрация: 14.03.2010
Возраст: 34
Сообщений: 407
Сказал(а) спасибо: 119
Поблагодарили 448 раз(а) в 295 сообщениях
Страна:
По умолчанию Re: Проект "Чайка"

Цитата:
Сообщение от bankuss Посмотреть сообщение
это исходный текст
исходный текст?
т.е. не надо класть в папку с движками?
для чего этот текст?
i7 вне форума   Ответить с цитированием
Непрочитано 08.06.2010, 12:22   #7
bankuss
 
Аватар для bankuss
 
Регистрация: 10.03.2010
Возраст: 42
Сообщений: 3,165
Сказал(а) спасибо: 1,011
Поблагодарили 7,149 раз(а) в 2,644 сообщениях
Страна:

Награды пользователя:

По умолчанию Re: Проект "Чайка"

Цитата:
Сообщение от i7 Посмотреть сообщение
т.е. не надо класть в папку с движками?
нет

Цитата:
Сообщение от i7 Посмотреть сообщение
для чего этот текст?
http://ru.wikipedia.org/wiki/Исходный_код
bankuss вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
i7 (08.06.2010)
Непрочитано 08.06.2010, 13:07   #8
jury_osipov
 
Регистрация: 10.05.2010
Возраст: 55
Сообщений: 235
Сказал(а) спасибо: 6
Поблагодарили 1,487 раз(а) в 241 сообщениях
Страна:

Награды пользователя:

По умолчанию Re: Проект "Чайка"

На моем старом пне-4 версия 01а на 10% быстрее.
Неожиданный результат. Циклы в do_move/undo_move все-таки производят страшное впечатление.
Еще интересно выяснить, где массивы атак приносят больший выигрыш в скорости - в генераторах ходов или ОФ? И вообще, какова динамика скорости при:
1) Добавлении атак в do_move/undo_move: на сколько падает скорость.
2) Изменении генерации ходов: на сколько растет.
3) Изменении расчета мобильности в ОФ: на сколько еще быстрее.
jury_osipov вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
ThinkingALot (08.06.2010)
Непрочитано 08.06.2010, 13:47   #9
ThinkingALot
 
Регистрация: 15.03.2010
Сообщений: 1,869
Сказал(а) спасибо: 2,230
Поблагодарили 4,904 раз(а) в 1,362 сообщениях

Награды пользователя:

По умолчанию Re: Проект "Чайка"

Цитата:
Сообщение от jury_osipov Посмотреть сообщение
На моем старом пне-4 версия 01а на 10% быстрее.
Неожиданный результат. Циклы в do_move/undo_move все-таки производят страшное впечатление.
Еще интересно выяснить, где массивы атак приносят больший выигрыш в скорости - в генераторах ходов или ОФ? И вообще, какова динамика скорости при:
1) Добавлении атак в do_move/undo_move: на сколько падает скорость.
2) Изменении генерации ходов: на сколько растет.
3) Изменении расчета мобильности в ОФ: на сколько еще быстрее.
Профилировка дает вот такое распределение времени выполнения по функциям:
Код:
Gull 0.1a x64:
CS:EIP      	Symbol + Offset 	64-bit 	Timer samples 	
0x13f1e0000 	evaluate        	1      	23.87         	
0x13f1e0f80 	do_move         	1      	16.39         	
0x13f1e2a50 	q_search        	1      	13.25         	
0x13f1d1000 	do_capture      	1      	9.9           	
0x13f1dc040 	see             	1      	5.99          	
0x13f1e3af0 	search          	1      	4.33          	
0x13f1de240 	gen_captures    	1      	3.4           	
0x13f1dc8b0 	gen_good_checks 	1      	3.21          	
0x13f1da710 	hash_low        	1      	3.13          	
0x13f1da850 	hash_high       	1      	3.04          	
0x13f1dd5f0 	gen_evasions    	1      	2.8           	
0x13f1e2760 	q_evasion       	1      	2.63          	
0x13f1dad20 	undo_move       	1      	2.54          	
0x13f1dbec0 	get_attacks     	1      	2.46          	
0x13f1db880 	eval_pawns      	1      	1.3           	
0x13f1ddc90 	gen_quiet_moves 	1      	1.03          	
0x13f1d1970 	do_null         	1      	0.33          	
0x13f1da980 	is_legal        	1      	0.32          	
0x13f1e3810 	search_evasion  	1      	0.03          	
0x13f1e3130 	qpv_search      	1      	0.02          	
0x13f1d6cd4 	_isatty         	1      	0.01          	
0x13f1e4510 	pv_search       	1      	0.01

Gull 0.1b x64:
CS:EIP      	Symbol + Offset 	64-bit 	Timer samples 	
0x13fbc0630 	evaluate        	1      	32.63         	
0x13fbc2e70 	q_search        	1      	13.1          	
0x13fbc1820 	do_move         	1      	8.56          	
0x13fbbbb90 	get_attacks     	1      	6.91          	
0x13fbb1000 	do_capture      	1      	5.61          	
0x13fbbbfb0 	see             	1      	4.98          	
0x13fbc3e50 	search          	1      	3.77          	
0x13fbbe820 	gen_captures    	1      	3.56          	
0x13fbba4a0 	hash_high       	1      	3.23          	
0x13fbba370 	hash_low        	1      	3.18          	
0x13fbbc820 	gen_good_checks 	1      	3.1           	
0x13fbbd850 	gen_evasions    	1      	3.02          	
0x13fbc2ba0 	q_evasion       	1      	2.98          	
0x13fbba9f0 	undo_move       	1      	2.43          	
0x13fbbb550 	eval_pawns      	1      	1.29          	
0x13fbbe110 	gen_quiet_moves 	1      	1.01          	
0x13fbb62d0 	memset          	1      	0.25          	
0x13fbba5d0 	is_legal        	1      	0.25          	
0x13fbc3b90 	search_evasion  	1      	0.04          	
0x13fbb1660 	do_null         	1      	0.03          	
0x13fbb313c 	_write_nolock   	1      	0.01          	
0x13fbba290 	check_time      	1      	0.01          	
0x13fbc34f0 	qpv_search      	1      	0.01          	
0x13fbc4860 	pv_search       	1      	0.01
То есть существенное ускорение есть только в оценочной функции. Зато в do_move/do_capture - тормоза... Тут надо отметить, что генераторы в версии 0.1b чуть-чуть недооптимизированы - я хотел сделать так, чтобы алгоритмы обоих версий работали идентично, а для этого пришлось генерацию ходов слонов, ладей и ферзей загнать в один цикл.
Помимо оценочной функции в 0.1b чуть хуже работает prefetch, так как do_move выполняется очень быстро и информация из памяти, судя по всему, просто не успевает загрузиться.
ThinkingALot вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
demon (21.10.2013)
Непрочитано 08.06.2010, 14:09   #10
ThinkingALot
 
Регистрация: 15.03.2010
Сообщений: 1,869
Сказал(а) спасибо: 2,230
Поблагодарили 4,904 раз(а) в 1,362 сообщениях

Награды пользователя:

По умолчанию Re: Проект "Чайка"

Цитата:
Сообщение от Telepat Посмотреть сообщение
А поподробнее можно про новый движок? Чем он отличается от остальных? Какие специфические особенности и уникальные идеи?
Генератор ходов. Вcе остальное написано по мотивам Стрелки и Робболита.
Цитата:
Сообщение от Telepat Посмотреть сообщение
Какие планы и перспективы?
Буду улучшать, пока не надоест. Лицензия public domain, поэтому кто угодно может делать с исходным кодом все, что угодно.

Выложил Gull 0.2. По минуте против Стрелки (32-bit) x64 версия сыграла +13 =4 -33. Всего 8% ничьих . Выдаваемые оценки очень сильно отличаются, поэтому в оценочной функции, возможно, все еще есть баги...

Добавлено через 8 минут
Цитата:
Сообщение от WildCat Посмотреть сообщение
У меня на q6600 немного быстрее 01a.
Любопытно. Я ожидал, что 0.1b может ускориться (по сравнению с 0.1a) на Core i7 (там маленький кэш второго уровня), а вот Core 2 - это идеальная архитектура для 0.1a...

Последний раз редактировалось ThinkingALot; 08.06.2010 в 14:07.
ThinkingALot вне форума   Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
17 (08.06.2010), Behovodec (03.03.2011), demon (21.10.2013), Кевин (08.06.2010)
Непрочитано 08.06.2010, 14:26   #11
NS
 
Регистрация: 15.03.2010
Адрес: Санкт-Петербург
Возраст: 43
Сообщений: 4,425
Сказал(а) спасибо: 481
Поблагодарили 9,279 раз(а) в 4,166 сообщениях
Страна:

Награды пользователя:

По умолчанию Re: Проект "Чайка"

прям какой-то бум движкостроительства.
NS вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Кевин (08.06.2010)
Непрочитано 08.06.2010, 14:50   #12
WinPooh
 
Регистрация: 14.03.2010
Сообщений: 174
Сказал(а) спасибо: 5
Поблагодарили 200 раз(а) в 84 сообщениях
По умолчанию Re: Проект "Чайка"

Цитата:
Сообщение от ThinkingALot Посмотреть сообщение
Выложил Gull 0.2. По минуте против Стрелки (32-bit) x64 версия сыграла +13 =4 -33. Всего 8% ничьих .
Что же такое надо было сделать с Робболитом, чтобы он начал проигрывать Стрелке?
WinPooh вне форума   Ответить с цитированием
Непрочитано 08.06.2010, 15:56   #13
grifsergei
 
Аватар для grifsergei
 
Регистрация: 11.03.2010
Адрес: Москва
Возраст: 31
Сообщений: 1,098
Сказал(а) спасибо: 1,002
Поблагодарили 1,224 раз(а) в 630 сообщениях
По умолчанию Re: Проект "Чайка"

Вот некоторым людям только дай волю покритиковать....
grifsergei вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
demon (21.10.2013), Robbofan (09.06.2010), Кевин (08.06.2010)
Непрочитано 08.06.2010, 16:47   #14
Rimidalv
 
Регистрация: 28.04.2010
Сообщений: 49
Сказал(а) спасибо: 13
Поблагодарили 52 раз(а) в 34 сообщениях
Страна:
По умолчанию Re: Проект "Чайка"

Цитата:
Сообщение от grifsergei Посмотреть сообщение
Профилировка дает вот такое распределение времени выполнения по функциям:
Не посдскажете - как сделать такую профилировку? Я использую MS VS 2005
Rimidalv вне форума   Ответить с цитированием
Непрочитано 08.06.2010, 19:03   #15
ThinkingALot
 
Регистрация: 15.03.2010
Сообщений: 1,869
Сказал(а) спасибо: 2,230
Поблагодарили 4,904 раз(а) в 1,362 сообщениях

Награды пользователя:

По умолчанию Re: Проект "Чайка"

Цитата:
Сообщение от Rimidalv Посмотреть сообщение
Не посдскажете - как сделать такую профилировку? Я использую MS VS 2005
Компилируете с опцией Linker'a "\DEBUG" и используете AMD CodeAnalyst.

Добавлено через 6 минут
Цитата:
Сообщение от WinPooh Посмотреть сообщение
Что же такое надо было сделать с Робболитом, чтобы он начал проигрывать Стрелке?
Раньше Робболит был просто движком, а теперь он играет как гросс!!!
ThinkingALot вне форума   Ответить с цитированием
6 пользователя(ей) сказали cпасибо:
demon (21.10.2013), Robbofan (09.06.2010), Telepat (08.06.2010), Volen (08.06.2010), Антониус (10.11.2013), Тянь-Викунтяу (03.01.2014)
Непрочитано 08.06.2010, 21:37   #16
i7
Заблокирован
 
Регистрация: 14.03.2010
Возраст: 34
Сообщений: 407
Сказал(а) спасибо: 119
Поблагодарили 448 раз(а) в 295 сообщениях
Страна:
По умолчанию Re: Проект "Чайка"

Цитата:
Сообщение от ThinkingALot Посмотреть сообщение
Раньше Робболит был просто движком, а теперь он играет как гросс!!!
может ли он играть в силу мастера?
i7 вне форума   Ответить с цитированием
Непрочитано 09.06.2010, 01:17   #17
NS
 
Регистрация: 15.03.2010
Адрес: Санкт-Петербург
Возраст: 43
Сообщений: 4,425
Сказал(а) спасибо: 481
Поблагодарили 9,279 раз(а) в 4,166 сообщениях
Страна:

Награды пользователя:

По умолчанию Re: Проект "Чайка"

Сразу видно кто воспитывался на старых, добрых советских фильмах.
NS вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Антониус (10.11.2013)
Непрочитано 09.06.2010, 01:34   #18
barca2045
 
Регистрация: 01.04.2010
Сообщений: 239
Сказал(а) спасибо: 94
Поблагодарили 179 раз(а) в 113 сообщениях
Страна:
По умолчанию Re: Проект "Чайка"

Потом люди будут говорить, что нет оригинальности, что русские просто перевили имя движка Gaviota и сделали себе чайку.
barca2045 вне форума   Ответить с цитированием
Непрочитано 09.06.2010, 09:55   #19
ThinkingALot
 
Регистрация: 15.03.2010
Сообщений: 1,869
Сказал(а) спасибо: 2,230
Поблагодарили 4,904 раз(а) в 1,362 сообщениях

Награды пользователя:

По умолчанию Re: Проект "Чайка"

Цитата:
Сообщение от barca2045 Посмотреть сообщение
Потом люди будут говорить, что нет оригинальности, что русские просто перевили имя движка Gaviota и сделали себе чайку.
Пока "Чайка" - это Code Name. Потом, возможно, придумаю что-нибудь пооригинальней. Главное, чтобы это "что-нибудь" любило кушать .
ThinkingALot вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
barca2045 (09.06.2010), demon (21.10.2013), Кевин (09.06.2010)
Непрочитано 09.06.2010, 11:41   #20
Volen
 
Аватар для Volen
 
Регистрация: 15.04.2010
Адрес: Тверь, пос. Химинститута
Возраст: 32
Сообщений: 56
Сказал(а) спасибо: 245
Поблагодарили 140 раз(а) в 33 сообщениях
Страна:
По умолчанию Re: Проект "Чайка"

Цитата:
Сообщение от ThinkingALot Посмотреть сообщение
Пока "Чайка" - это Code Name. Потом, возможно, придумаю что-нибудь пооригинальней. Главное, чтобы это "что-нибудь" любило кушать .
Дельфины очень любят есть рыбу и некоторые исследователи утверждают, что мозг у дельфинов больше, чем у человека :-)
Volen вне форума   Ответить с цитированием
Ответ

Социальные закладки


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход