Меряемся производительностью perft

Тема в разделе "Машинное отделение", создана пользователем WildCat, 4 июл 2007.

  1. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Пока меня не было тут появилась целая куча маньяков, желающих меряться perft-ами.
    Раз пошла такая пьянка, то открываю специальную ветку для таких извращенцев :)

    В молодости я тоже этим немного увлекался. Но все это так и не используется в реальной программе.

    Предлагаю мерятся на четырех позициях и для каждой perft запускать с двумя параметрами, например так:
    Код:
    int __cdecl main()
    {
        Init();
    
        SetBoard("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -");
        DoPerft(6);
        DoPerft(7);
    
        SetBoard("r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq -");
        DoPerft(5);
        DoPerft(6);
    
        SetBoard("8/PPP4k/8/8/8/8/4Kppp/8 w - -");
        DoPerft(6);
        DoPerft(7);
    
        SetBoard("8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -");
        DoPerft(7);
        DoPerft(8);
    
        return 0;
    }
    Еще обязательное условие: на последнем уровне необходимо выполнять сгенерированные ходы. А то отдельные маньяки просто считают количество сгенерированых ходов, не выполняя их.

    Сейчас, старый код трохи подправлю и выложу.
  2. Shark Учаcтник

    • Участник
    Рег.:
    30.06.2007
    Сообщения:
    124
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Барнаул
    Оффлайн
    Нарисовалась отдельная спортивная дисциплина шахматного программирования :D

    На выходных сделаю, спец версию. Исходники этой спец версии выложить - смогу.
    От моих теперешних цифр попробую скинуть 30%
  3. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Мне кажется, единственным обязательным условием должны быть легальные значения для ряда заданных позиций.

    Можно разделить программы на два класса: с кэшированием и без кэширования промежуточных узлов (типа, как в Ф-1 было - с турбонаддувом, а потом без). Потому что эта особенность реализации меняет скорость в разы. А остальное - делать как кому нравится.
  4. Shark Учаcтник

    • Участник
    Рег.:
    30.06.2007
    Сообщения:
    124
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Барнаул
    Оффлайн
  5. Chemer Максим

    • Участник
    Рег.:
    14.09.2006
    Сообщения:
    1.674
    Симпатии:
    13
    Репутация:
    0
    Адрес:
    Запорожье
    Оффлайн
    Не важно кеширование есть или нет, главное чтобы быстро и правильно работало. А как приз предлогаю на сайте cdchess напротив движка сделать пометку - самый совершенный генератор в СНГ.
  6. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Важно. Потому что в одной и той же моей программе без хэша значение будет считаться за 20 секунд, с хэшом 32 Мб - за 7, а с хэшом в 1024 Мб - за 4-5 (значения условные, но порядок такой). И что будем заносить в таблицу?
  7. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    вот версия которая считает perft-ы как описано в самом начале ветки: www.igorkorshunov.narod.ru/WildCat_perft.rar
    WinPooh, Chemer, мне с вами явно не по пути.
  8. Chemer Максим

    • Участник
    Рег.:
    14.09.2006
    Сообщения:
    1.674
    Симпатии:
    13
    Репутация:
    0
    Адрес:
    Запорожье
    Оффлайн
    Если есть хеш, то тогда можно ввести правило, максимальный кеш ,например, 64 метра .
  9. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Текущая версия Греки именно так и считает, без хэширования и с честным выполнением всех ходов. Просто я полагаю необходимым оговорить такое поведение в правилах - именно насчёт хеша.
  10. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Само собой хеширование использовать нельзя.
  11. Shark Учаcтник

    • Участник
    Рег.:
    30.06.2007
    Сообщения:
    124
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Барнаул
    Оффлайн
    Hardware: P4 3000Mhz
    WildCat: depth = 6, nodes = 119060324, time = 9.453 12594 kN / s
    Против стандартных 13.7 -> 9.453 Результат - хорош. Но по моему достижим.

    Дождемся выходных. :)
  12. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Ты имеешь в виду в принципе? Или лично тобой?
    :)
  13. Shark Учаcтник

    • Участник
    Рег.:
    30.06.2007
    Сообщения:
    124
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Барнаул
    Оффлайн
    Мной.

    Теоритически можно и хэш таблицу построить
    (Позиция) -> (список ходов) :D
    На все позиции или хотя бы на первые 5 уровней perft
  14. Shark Учаcтник

    • Участник
    Рег.:
    30.06.2007
    Сообщения:
    124
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Барнаул
    Оффлайн
    Я тут смотрю, У тебя Intel Compiler ом скомпилировано.
    Я этот резерв пока не задействовал.
  15. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Хеш наверно всё-так строится другой - Позиция -> Количество ходов в дереве при заданной глубине.
  16. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Очень старой версией. Так что это не резерв :)
    Кстати, после визуаловского оптимизатора валится - видимо где-то какой-то хитрый баг сидит :rolleyes:
  17. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    А почему новой не компилируешь???
  18. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Все никак руки не доходят установить.
  19. ProstoTak Старожил

    • Ветеран
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    5.479
    Симпатии:
    123
    Репутация:
    1
    Оффлайн
    Ну я так подозреваю, что камень в мой огород. Но нифига ты не угадал, я все ходы выполняю и даже в позиции после выполнения последнего хода вызываю оценочную функцию, которая правда нифига не делает, а сразу возвращает 0. Кеширование не использую. Твоя новая версия выдает perft 6 за 25 секунд на 900 целероне (ну что ж мне нужно ликвидировать отставание в 6-7 секунд), дождаться же perft 7 не реально, тем более по всем позициям. Поэтому предлагаю ограничиться только perft 6 на начальной позиции, а на остальных позициях таким perft который считается не более 60 секунд.
  20. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    С чего это мне камнями швыряться?

    А perft 7 у тебя должен меньше, чем за полчаса посчитать.
  21. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    В начальной позиции для perft 6 не работает несколько важных участков кода, отвечающих за превращения пешек и рокировки. Поэтому предлагаю пободаться ещё на такой позиции:

    http://mypage.bluewin.ch/romanhartmann/perft.html



    Обновл. Увидел, что это позиция уже есть в списке предложенных WildCat'ом.
  22. ProstoTak Старожил

    • Ветеран
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    5.479
    Симпатии:
    123
    Репутация:
    1
    Оффлайн
    Твой perft 7 занял 665 секунд.
    Но всё равно поОТключай большие perft-ы
  23. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Ладно. Будем считать для таких глубин: 6 - 5 - 7 (здесь у тебя будет миниуты 3) - 7.
  24. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
  25. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    даа, народ развернулся :) а я как раз обновляю версию, и до Perft мне еще далеко.
    работа идет медленно, времени мало. Но если тема не умрет, припишусь :)
  26. ProstoTak Старожил

    • Ветеран
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    5.479
    Симпатии:
    123
    Репутация:
    1
    Оффлайн
    Кот, ты не правильно килоноды в секунду считаешь. Нужно считать все позиции, а не только на последнем полуходе. Мы же генерируем и промежуточные позиции и на них тоже время тратим.
  27. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Скорость считается nodes/time. Для perft принято учитывать только leaf nodes.
  28. ProstoTak Старожил

    • Ветеран
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    5.479
    Симпатии:
    123
    Репутация:
    1
    Оффлайн
    Ладно, считай как хочешь, всёравно время главное
  29. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Как сказал бы Турд: "it is unipmortant". :)
  30. ProstoTak Старожил

    • Ветеран
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    5.479
    Симпатии:
    123
    Репутация:
    1
    Оффлайн
    По первому тесту отстаю на 6 секунд, по второму на 4 секунды. Остальные ещё не пробовал.
    Ухожу в подполье, буду рыть под Кошку :)
  31. ProstoTak Старожил

    • Ветеран
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    5.479
    Симпатии:
    123
    Репутация:
    1
    Оффлайн
  32. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Результаты на Sempron 2295:

    WildCat
    8.42
    13.61
    72.53
    14.31

    ProstoTak
    12.17
    18.03
    106.44
    26.30
  33. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Предлагаю название для новой дисциплины - КОТОБОРСТВО :)
  34. ProstoTak Старожил

    • Ветеран
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    5.479
    Симпатии:
    123
    Репутация:
    1
    Оффлайн
    Ты не названия предлагай, ты давай включайся в гонку. :)
  35. Chemer Максим

    • Участник
    Рег.:
    14.09.2006
    Сообщения:
    1.674
    Симпатии:
    13
    Репутация:
    0
    Адрес:
    Запорожье
    Оффлайн
    Я предлогаю другое название perft6тишизм.

Поделиться этой страницей