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

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

  1. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    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
    Оффлайн

    Shark Учаcтник

    Репутация:
    0
    Нарисовалась отдельная спортивная дисциплина шахматного программирования :D

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

    WinPooh В.М. Команда форума

    Репутация:
    95
    Мне кажется, единственным обязательным условием должны быть легальные значения для ряда заданных позиций.

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

    Shark Учаcтник

    Репутация:
    0
  5. Chemer
    Оффлайн

    Chemer Максим

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

    WinPooh В.М. Команда форума

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

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    вот версия которая считает perft-ы как описано в самом начале ветки: www.igorkorshunov.narod.ru/WildCat_perft.rar
    WinPooh, Chemer, мне с вами явно не по пути.
     
  8. Chemer
    Оффлайн

    Chemer Максим

    Репутация:
    0
    Если есть хеш, то тогда можно ввести правило, максимальный кеш ,например, 64 метра .
     
  9. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Текущая версия Греки именно так и считает, без хэширования и с честным выполнением всех ходов. Просто я полагаю необходимым оговорить такое поведение в правилах - именно насчёт хеша.
     
  10. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Само собой хеширование использовать нельзя.
     
  11. Shark
    Оффлайн

    Shark Учаcтник

    Репутация:
    0
    Hardware: P4 3000Mhz
    WildCat: depth = 6, nodes = 119060324, time = 9.453 12594 kN / s
    Против стандартных 13.7 -> 9.453 Результат - хорош. Но по моему достижим.

    Дождемся выходных. :)
     
  12. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Ты имеешь в виду в принципе? Или лично тобой?
    :)
     
  13. Shark
    Оффлайн

    Shark Учаcтник

    Репутация:
    0
    Мной.

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

    Shark Учаcтник

    Репутация:
    0
    Я тут смотрю, У тебя Intel Compiler ом скомпилировано.
    Я этот резерв пока не задействовал.
     
  15. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Хеш наверно всё-так строится другой - Позиция -> Количество ходов в дереве при заданной глубине.
     
  16. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

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

    NS Нефёдов Сергей баннер

    Репутация:
    3
    А почему новой не компилируешь???
     
  18. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Все никак руки не доходят установить.
     
  19. ProstoTak
    Оффлайн

    ProstoTak Старожил

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

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    С чего это мне камнями швыряться?

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

    WinPooh В.М. Команда форума

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

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



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

    ProstoTak Старожил

    Репутация:
    1
    Твой perft 7 занял 665 секунд.
    Но всё равно поОТключай большие perft-ы
     
  23. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Ладно. Будем считать для таких глубин: 6 - 5 - 7 (здесь у тебя будет миниуты 3) - 7.
     
  24. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
  25. bankuss
    Оффлайн

    bankuss Александр баннер

    Репутация:
    6
    даа, народ развернулся :) а я как раз обновляю версию, и до Perft мне еще далеко.
    работа идет медленно, времени мало. Но если тема не умрет, припишусь :)
     
  26. ProstoTak
    Оффлайн

    ProstoTak Старожил

    Репутация:
    1
    Кот, ты не правильно килоноды в секунду считаешь. Нужно считать все позиции, а не только на последнем полуходе. Мы же генерируем и промежуточные позиции и на них тоже время тратим.
     
  27. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Скорость считается nodes/time. Для perft принято учитывать только leaf nodes.
     
  28. ProstoTak
    Оффлайн

    ProstoTak Старожил

    Репутация:
    1
    Ладно, считай как хочешь, всёравно время главное
     
  29. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Как сказал бы Турд: "it is unipmortant". :)
     
  30. ProstoTak
    Оффлайн

    ProstoTak Старожил

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

    ProstoTak Старожил

    Репутация:
    1
  32. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Результаты на Sempron 2295:

    WildCat
    8.42
    13.61
    72.53
    14.31

    ProstoTak
    12.17
    18.03
    106.44
    26.30
     
  33. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Предлагаю название для новой дисциплины - КОТОБОРСТВО :)
     
  34. ProstoTak
    Оффлайн

    ProstoTak Старожил

    Репутация:
    1
    Ты не названия предлагай, ты давай включайся в гонку. :)
     
  35. Chemer
    Оффлайн

    Chemer Максим

    Репутация:
    0
    Я предлогаю другое название perft6тишизм.