6-7-фигурный эндшпильный генератор. 3-я версия

Тема в разделе "Машинное отделение", создана пользователем Skipper_NORTON, 30 окт 2010.

  1. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    Закончил работу над 3-й версией шахматного эндшпильного генератора (считает базы до 7-ми фигур включительно). И тестирование закончил. Скачать можно здесь -

    http://generatorchess.com/

    По сравнению со 2-й версией, есть много новых оптимизаций. Для расчета 7-фигурной базы, теперь требуется всего лишь от 4 ГБ до 14 ГБ оперативной памяти (зависит от типа выбранного эндшпиля). Это уже "нестрашное" число, можно собрать такой персональный компьютер, не говоря о серверах. Также потребуется от 1 ТБ до 7 ТБ места на жестком диске, можно объединить в RAID нужное количество винчестеров и получить достаточный объем. Скорость расчета по сравнению со 2-й версией стала ненамного быстрее. На "тяжелых" итерациях - считает немного медленнее, а на "легких" итерациях - быстрее, чем раньше. Чтобы посчитать ВСЕ 7-фигурные базы, за приемлемое время (год-два), нужно много мощных компьютеров. Скажем, 100 штук. Поэтому, я без спонсоров такие базы еще долго не создам, но может кто-нибудь их посчитает. :) Если закон Мура будет действовать до 2020 года (компьютерные мощности будут продолжать расти), то, их можно будет посчитать и на одном компьютере, тогда я это сделаю сам.

    После того, как базы будут созданы, будет достигнут теоретический предел силы игры в 7-фигурных окончаниях, а к тому же, усилится игра в позициях с 9-10-ю фигурами, т.к. в глубине перебора программы смогут дотягиваться до 7-фигурных позиций и получать наиболее точные оценки. Формат - DTM, так же как и у баз Налимова, но другой принцип преобразования. Программа RetroChess3.exe - позволяет играть по базам, и анализировать эндшпили, которые представляют теоретический интерес. Она также играет и с любой шахматной позиции, но не настолько сильно, как самые продвинутые и знаменитые шахматные программы. Главная цель при ее создании была - именно для анализа эндшпилей, поэтому я не уделял много времени, чтобы она сильно играла в произвольных позициях. К тому же, сколько бы баз не было посчитано, я сделал так, чтобы эта программа загружалась очень быстро.

    Следующая, 4-я версия будет использовать для расчета любой 7-фигурной базы не более 8 ГБ оперативной памяти.
    (от 4 до 8)
  2. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    На данный момент, я посчитал только половину 6-фигурных баз, на своем компьютере. (ну и все 3-4-5-фигурные, которые считаются очень быстро). Программу тестировал на 3-4-5-6-фигурных типах. Алгоритм не должен быть чувствительным к смене фигур. Если правильно работает на многих типах эндшпилей (доказал что программа отработала безошибочно, посчитав все 3-4-5-фигурные базы, а также, половину 6-фигурных, и один 7-фигурный), то правильно должна работать и вообще на всех типах.
  3. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    как на счет интерфейса доступа к базам? может есть готовая dll с входными параметрами?
  4. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    dll сделал. Вводишь FEN позиции, получаешь результат. Т.е. с помощью ее, другие программы могут обращаться к базам. В хелпе написал более подробно.
  5. Сергей С. Питер Старожил

    • Участник
    • Старожил
    Рег.:
    31.03.2006
    Сообщения:
    1.194
    Симпатии:
    60
    Репутация:
    11
    Оффлайн
    При постоянном ночном шахматном анализе, типо в адванс или просто аналитика самый надежный способ убить винчестер - это подключать где ни попадя 5-ти фигурку. Шестифигурки еще более надежный способ.
  6. Volkov_Yury Юрий

    • Участник
    Рег.:
    01.02.2010
    Сообщения:
    282
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Израиль
    Оффлайн
    Сергей,а когда же ты спишь?
  7. Kirr Администратор

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    1.208
    Симпатии:
    22
    Репутация:
    8
    Оффлайн
    Ура! :)

    Нет, не будет достигнут теоретический предел силы игры. Под игрой обычно понимают игру по турнирным правилам, где действует правило 50 ходов. Следовательно, предел теоретической силы игры будет достигнут, когда будут построены базы, учитывающие это правило, например, в метрике DTZ50.

    В связи с чем вопрос - можете ли вы адаптировать генератор для создания баз в других метриках - DTC, DTZ, DTZ50?
  8. 17 Учаcтник

    • Участник
    Рег.:
    07.04.2008
    Сообщения:
    1.451
    Симпатии:
    13
    Репутация:
    0
    Оффлайн
    Мой девиз!!!

    :)

    Грандиозную работу!!!

    ————
    зам. что-то не могу скачать!? :( [скачал, но скачка была в временной фолдере, так что не заметил сразу! :) ]
    зам.2 - а приблизительно сколько будеть `весить` KRpp~KRp (за белых и черных) и приблизительно сколько время будеть нужно создать!?
  9. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    Именно ТЕОРЕТИЧЕСКИЙ предел силы достигнут. Исходя, из ТЕОРИИ ИГР, предельно сильная игра получается, по кратчайшему пути, ведущему к выигрышу. В результате этого, наиболее быстро решаются все промежуточные проблемы - типа провести пешку, добиться нужного размена, загнать в угол и т.п. У баз Налимова тоже DTM, как и у меня, и очевидно, что программа играющая по таким базам, сильнее всего играет. Математически, самая сильная игра. А правило 50-ти ходов может и измениться. Мы уже обсуждали это. Даже насчет 50-ти... В подавляющем большинстве случаев (99,9999% позиций), если программа играет по кратчайшему пути до мата (по базам DTM), и нет за 50 ходов взятий-движений пешек, то их НЕ БЫЛО БЫ и если бы программа играла по базам в формате DTZ50. А вот позиций, где, логично выиграть поставив мат, скажем, через 45 ходов, а программа по DTZ50 занимается ерундой - пытаясь продвинуть пешку, через 44 хода, а потом до мата играет еще 100 ходов - очень много. И не самая сильная игра будет. Уже много кто жаловался на это.

    Могу, хотя это долго.
  10. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    Будет весить, думаю, около 250 гигабайт. Сейчас самые объемные винчестеры - 3 терабайта, поэтому, вот таких нужных 7-фигурок, типа KRpp~KRp - поместится 12 штук. Лет через 10 будут винчестеры до 20 терабайт, и к компьютеру можно подключить штук 5, итого можно будет получить до 100 терабайт на жестких дисках. А может, даже через 10 лет, и 100-терабайтные винчестеры будут, сейчас изобретают какую-то новую технологию для увеличения плотности записи. А в данный момент все 7-фигурные базы не поместятся на персональном компьютере. Хотя это и не надо - в партиях при попадании в 7-фигурную позицию, думаю, в 60% случаев мы попадаем именно в KRpp~KRp (хотя не знаю точно :) нужна статистика), поэтому, достаточно хранить только самые нужные типы окончаний. Если сгенерировать все 7-фигурные, то можно их держать на сервере, и сделать сайт, на котором можно будет проанализировать любую позицию удаленно.

    От 1 до 7 ТБ потребуется именно для того чтобы ПОСЧИТАТЬ 7-фигурную базу, а потом она сжимается в 10-20 раз и занимает меньше объема. ВСЕ 7-фигурные, когда будут созданы, будут занимать более 100 терабайт.

    KRpp~KRp? Несколько месяцев. Смотря на каком компьютере. На мощном сервере, с RAID-ом из нескольких винчестеров, думаю, можно и за 2 месяца посчитать, т.к. увеличивается скорость чтения с дисков, что и является ограничивающим фактором в производительности. Поэтому, на легких итерациях, невозможно полностью загрузить процессор, упираемся в скорость чтения с винчестера и все. Две программы на одном винчестере неэффективно запускать, а вот если стоит скажем, 4 винчестера в компьютере, и на каждом запустить генератор - то все хорошо, и 4-ядерный процессор загружен полностью, и винчестеры работают по полной. Это самый оптимальный вариант.
  11. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    Короче, если выделить под это дело 100 МОЩНЫХ компьютеров, серверов, с большим количеством винчестеров, и мощными процессорами, то за 2 года можно вообще все 7-фигурные типы посчитать. Но т.к. нам не нужны все, (например четыре ферзя против пешки никому не нужен), а нужны в первую очередь наиболее интересные, скажем 100 штук, то достаточно было бы и 20 мощных серверов. Все зависит от мощностей компьютеров.
  12. Kirr Администратор

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    1.208
    Симпатии:
    22
    Репутация:
    8
    Оффлайн
    Вы путаете силу игры с красотой игры. Сила игры определяется только одним критерием - результатом партии. 1, 1/2 или 0 - всё, вот сила игры, всё остальное, происходившее в партии - неважно. Кому-то нужно обязательно фигуру пожертвовать, вам - поставить мат как можно быстрее - это всё эстетика. "Наиболее быстро", "по кратчайшему пути" - это мелочи. Умение ставить мат кратчайшим путём - не связано напрямую с силой игры. Теория игр здесь вообще ни при чём.

    Понятно, что из двух выигрышей предпочтителен более короткий. Проблема с вашими базами (как и с Налимовскими) как раз в том, что они не гарантируют выигрыш в выигранной позиции.

    Взять, например, шахматиста-адвансера. Стоит у него на доске 10-фигурный эндшпиль. Нужно решить, идти на размен или нет. Кратчайший будет выигрыш или нет ему глубоко пофиг. А вот не упустить выигрыш - это важно. На кону рейтинг, а может быть и денежный приз. То же самое в турнирах движков. То же самое в анализе эндшпилей из очных турнирных партий. Мне нужно знать, был ли там выигрыш или нет. То есть, мог ли человек выиграть эндшпиль, играя в турнире очно, за доской, по правилам современных шахмат. Даёт ваша база ответ на этот вопрос? - Нет, не даёт.

    Правило 50 ходов - такое же правило современных шахмат, как и то что пешки назад не ходят. Да, в прошлом правила не раз менялись. Да, могут меняться и в будущем. Может вообще на 100-клетки перейдём. :) По какой-то причине вам не интересна игра, в которую сегодня играют шахматисты и движки. Вместо неё вы предпочитаете решать некий вариант, в котором вы взяли и выкинули одно из правил. Вариант, в который никто сегодня не играет. Ну, не вы первый. Налимов тоже строил базы для этого варианта. Наверное это проще для вас.

    Какой смысл вкладывать ресурсы в терабайты дисков, годы вычислений, если в итоге мы не имеем 100% решения просчитанных окончаний? Мне нужны 100%. 99.9999% или нет - этого никто не знает. Понятно, что до сих пор мы в основном имели дело с 5 и 6 фигурниками, где мат ставится сравнительно быстро. В 7-фигурных окончаниях процент позиций, где DTM ошибается, может быть существенно выше.

    Что значит много кто жаловался? Где-то есть базы в метрике DTZ50, и движок, умеющий к ним обращаться в поиске? Вот на DTM действительно много кто жаловался. В основном именно сильные шахматисты, адвансеры, разработчики движков. Видимо вам и мне жалуются разные люди. :)
  13. Kirr Администратор

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    1.208
    Симпатии:
    22
    Репутация:
    8
    Оффлайн
    Ещё, Skipper_NORTON, вы забываете об одном важном преимуществе метрики DTZ (и DTZ50) - в этой метрике таблица занимает гораздо меньше места на диске, посколько такая таблица лучше сжимается. Когда счёт идёт на десятки и сотни терабайт - это совсем не мелочное соображение.

    Народ поднять как раз можно было бы. Но для этого нужен как минимум хороший исходник кода обращения к таблицам. Стандартный кросс-платформенный С, под свободной лицензией. Как хороший пример можно привести фотмат Gaviota.

    А четыре пешки против пешки нужен? А для него придётся просчитать четыре ферзя против пешки. :)
  14. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    пока не будет отменено правило 50-ти ходов, все эти таблицы не стоит и считать... ну вот выйду я в позиции на мат в 89 ходов, и пешка двигается только на 57 ходу. соперник радостно объявит, что в партии ничья! хотя математически (в таблицах) доказано что он сдулся! т.е. получяется, что у партии 2 результата: один по правилам фиде, другой чистый, т.е. когда никаких искусственных ограничителей нет.
  15. dan77790 Учаcтник

    • Участник
    Рег.:
    06.03.2008
    Сообщения:
    3.792
    Симпатии:
    17
    Репутация:
    0
    Оффлайн
    А почему DTM не дает 100 % результат? :blush:
    таблицы Налимова ненадежны?


    P.S. Мне параллельно правило 50 ходов, и Крест вроде как не в восторге от него)
  16. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    а толку то? нужно решать сверху... да и не факт, что большинство гроссов согласится с отменой. я понимаю, что в очной партии, ограниченной 3-4-5 часами игры, нужен такой искусственный "урезатель" игры, как правило 50-ти ходов. (хоть оно и редко бывает). а вот в заочной игре оно точно не нужно.
  17. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    А с чего вы взяли, что они будут меньше места занимать? Информации столько же, количество позиций - столько же.

    Правило 50-ти ходов не нужно ДАЖЕ в очной игре. ЕСТЬ ЛИМИТ по времени. Если партия, скажем, гарантированно закончится через 2 часа, то в чем проблема-то? Выигрывающий либо успеет выиграть либо не успеет. Если бы партия продолжалась сутки, то может он и замучил бы соперника, так и не сумев выиграть.

    А ТЕМ БОЛЕЕ, правило 50-ти ходов бессмысленно для программ. Программа МГНОВЕННО делает ход по базам, кого она может замучить по времени? Я просто не понимаю, если позиция ВЫИГРЫВАЕТСЯ скажем не за 50, а за 60 ходов, без взятий, то зачем искусственно делать тут ничью? Правило 50-ти ходов вводилось для случаев, когда шахматист не может выиграть, а только зря мучает соперника. А если ОН МОЖЕТ выиграть - то делать тут ничью - просто БРЕД.

    И я думаю, со временем это поймут и отменят это тупое правило 50-ти ходов.
  18. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    я это уже на форуме РАЗШ объяснял народу. часть соглашается, часть упирается - "раз правило 50-ти ходов есть, то пусть будет навсегда" - вот их девиз. а то что это вмешательство в результат игры, это никого не волнует. мол защищающнейся стороне нужно оставить хоть небольшой шанс на спасение! да в шахматах и так засилье ничьих, зачем их еще увеличивать? (хотя это и будет... ну может 1 партия из 100).
  19. Kirr Администратор

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    1.208
    Симпатии:
    22
    Репутация:
    8
    Оффлайн
    1. В DTM вам для многих окончаний будет нужно больше 1 байта на позицию. В DTZ50 любая позиция сохраняется одним байтом.

    2. Многие большие значения DTM соответствуют меньшим значениям DTС, и ещё меньшим значениям DTZ. Всё множество значений получается сжатым в сторону нуля. В DTZ50 это сжатие достигает максимума, образуются даже диапазоны незадейстованных значений (в пределах байта). Их можно использовать, например, для RLE компрессии. Но и любой другой метод компрессии сожмёт такую таблицу лучше.

    Особенно велико преимущество таблиц DTZ50 как раз в окончаниях с пешками, особенно в семифигурных. Значения DTM там будут разбросаны по всему диапазону от 0 до нескольких сотен, тогда как значения DTZ50 будут часто маленькими, и всегда не больше 100.
  20. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    На самом деле, в DTM абсолютное большинство позиций выигрываются менее чем за 128 ходов, и для хранения этого числа достаточно одного байта, и очень малое количество позиций (наверное менее 1 процента в среднем, по базам) - за большее количество ходов, которые можно хранить, тем не менее, не в 2-х байтах, а в полтора байтах, или даже вообще, в 9-ти битах. Затем, когда база сжимается, то там вообще значения не хранятся побайтово. Рассматривается все, как множество бит, с масками, и со всякими методами для улучшения сжатия. Я думаю, если в DTZ50 и будет база меньше объем занимать, то совсем чуть-чуть, может на 2-3 процента.

    Я сделал dll, с помощью которого любая программа, любой движок, могут обращаться к базам в моем формате. Могу и исходник кросс-платформенный сделать, на C (пока у меня используются функции Windows, типа ReadFile и т.д.) для обращения к базам, и выложить для свободного использования. Но я хочу быть уверенным, что кто-то действительно может построить 7-фигурные базы. Хотя бы за 2 года. Для этого надо много мощных компьютеров, так что это все очень дорого. Но и богатых гроссмейстеров тоже хватает. Неужели никого не интересуют 7-фигурные окончания? Там очень многие окончания представляют теоретический интерес. Создали бы например сайт, на котором вводишь позицию, и получаешь оценки после всех ходов из данной позиции.
  21. MS Михаил Семионенков

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    6.542
    Симпатии:
    3.361
    Репутация:
    175
    Оффлайн
    Правило 50 ходов (равно как и троекратное повторение) не есть часть шахматных правил. Соответствующие ничьи фиксируются только по требованию игроков, что отличается от пата и недостаточного для мата материала. Это фактически часть правил проведения соревнований, равно как и контроли временени и прочие прибамбасы, которые постоянно меняются. Запаивать в данные, требующие столь огромного труда, текущие правила проведения соревнований - неблагодарный труд (хотя практикам, конечно, интересно именно соответствие сиюминутным правилам проведения соревнований). Если строить один вариант таблиц, то, конечно, без учёта правила 50 ходов.

    Skipper_NORTON, а Вы программку для анализа упоминули. Это просто игровая шахматная программа, которая может обратиться к 7-фигуркам или что-то более специализированное?
  22. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    Абсолютно верно. Еще раз... Правило 50-ти ходов вводилось для случаев, когда шахматист не может выиграть, а только зря мучает соперника. Если же ОН МОЖЕТ выиграть, за большее количество ходов - в чем проблема? Зачем ему запрещать это? Лимит времени есть, партия надолго не затянется. Программы вообще мгновенно ходы делают. Поэтому, это правило вполне может в будущем измениться. К тому же,

    Но, я отлично вижу разницу в силе игры! Когда программа играет по базам DTM, она наиболее быстро, красиво и мощно решает все промежуточные проблемы. Одновременно и короля щемит в угол, и на пешку давит и свою пытается провести и т.д. ЧУВСТВУЕТСЯ, что это абсолютная, самая сильная игра в шахматы. От такой игры получаешь эстетическое удовольствие. От такого сопротивления. Если программа играет по базам DTZ50, ну просто очевидно, что совсем не самым сильным образом она играет. Она гонится за "идеей фикс", для нее например, может быть важнее пешку продвинуть на 45-м ходу, сыграв при этом тупо, не играя на получение других преимуществ, и потом еще играть до мата 100 ходов, вместо того, чтобы защемить по всем направлениям, и поставить мат за 46 ходов.

    Я поиграл, и я это прочувствовал.
  23. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    Да, это программа для анализа окончаний, она может обратиться и к 7-фигуркам, и к 6-фигуркам, короче ко всем моим базам, если они сгенерированы. И находит она их по задаваемым директориям, в хелпе написано. Но, также она может играть и в обычные шахматы (т.е. с любым количеством фигур), хотя первоначально она создавалась только как анализатор окончаний. В обычные шахматы она играет далеко не так сильно, как другие продвинутые шахматные программы, но вроде бы играть умеет :)
  24. Greedy Учаcтник

    • Участник
    Рег.:
    22.01.2010
    Сообщения:
    448
    Симпатии:
    12
    Репутация:
    0
    Оффлайн
    Вообще-то, возможен случае, когда, скажем мат по DTM ставится в 70 ходов, а по DTZ50 - в 90, при этом на 45-м ходу двигается пешка.
    Так что правильная DTZ50 база должна не просто за идеей фикс гнаться (двинуть пешку до контроля), но в итоге ещё и получить позицию, которая выиграна за менее чем 50 ходов после этого хода (ну и через иттерации: 49+49+49+...+40 ходов до мата).
  25. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    Ну как, потестировал кто-нибудь?
  26. N1mTzo Учаcтник

    • Участник
    Рег.:
    17.04.2008
    Сообщения:
    318
    Симпатии:
    30
    Репутация:
    1
    Оффлайн
    Часть 5-фигурки построил. Медленно как-то генерирует, на уровне первых версий генератора Налимова. Памяти, правда, тоже ест по-минимуму.
  27. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    Так если бы он ел много памяти, то конечно мог бы быстрее генерировать. А скорость "на уровне первых версий генератора Налимова", и при этом менее 300 мегабайт памяти на любую 6-фигурку (от 4 до 14 ГБ на любую 7-фигурку), это думаю, неплохой результат. :) Оптимизаций там у меня по параметрам —- скорость генерации, количество памяти, объем занимаемого места на винчестере - уже настолько много, что я даже не помню всех. Несколько десятков. Было тестирование после каждой, некоторые передумывал делать... Работы вообще много было. Кстати, мой генератор упирается в скорость чтения с винчестера на легких итерациях, поэтому если сделать RAID из винчестеров на сервере, то понятное, дело, скорость генерации можно увеличить раз в 5. Ну и процессоры на серверах мощнее намного.
  28. N1mTzo Учаcтник

    • Участник
    Рег.:
    17.04.2008
    Сообщения:
    318
    Симпатии:
    30
    Репутация:
    1
    Оффлайн
    Может проще было выпустить несколько разных версий генератора - для 5 -фигурки, для 6-фигурки и для 7-фигурки. Понятно, что оптимизации всякие хороши, когда строишь ту же 7-фигурку (размеры колоссальные). Но я б и для 5-фигурки с радостью выделил пару гигабайтов памяти, если она при этом быстрее генерироваться будет. Или в самой программе сделать чтобы можно было выбрать, сколько оперативы выделять .
  29. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    Ну, 5-фигурку, действительно можно сделать быстрее намного, но она не так важна - ее и так можно построить за неделю. А на 6-фигурные уже действуют оптимизиции, так же как и на 7-фигурные. Вот используют 300 МБ памяти. Вы можете на 5-ти винчестерах запустить параллельно 5 генераторов, и считать 5 эндшпилей сразу на одном компе. На каждом винчестере по одному генератору (два и более генераторов, на одном винчестере НЕЭФФЕКТИВНО запускать!) И будете вы использовать при этом 1,5 гигабайта памяти (грубо говоря). Если процессор хороший, потянет.

    Теперь представьте себе, для генерации 6-фигурной базы, жрет 5 ГБ оперативной памяти! Вы только один генератор запустить и сможете. На большее количество генераторов - у вас памяти не хватит. А он в 5 раз при этом быстрее не посчитает! И не заменит вариант, когда вы могли запустить 5 генераторов одновременно. Потому что в этом случае, ваши остальные 4 винчестера просто ПРОСТАИВАЮТ.

    В первом случае, вам для запуска еще одного генератора придется докупить только дополнительный ВИНЧЕСТЕР, а во втором случае, для запуска еще одного генератора - придется купить ЦЕЛЫЙ КОМП, с памятью, материнской платой и т.д. Кстати, если бы я мог действительно, увеличив количество памяти в 5 раз, УСКОРИТЬ ГЕНЕРАЦИЮ в 5 раз - то я бы это сделал. Есть некое оптимальное соотношение этих параметров ("количество памяти - скорость генерации - место на винчестере для генерации") и я стремился именно к нему. Оптимизации такие, что сокращая количество используемой памяти скажем, в 2 раза, мы теряем по скорости генерации не в 2 раза, а намного меньше, может, в 1,2 - 1,3 раза (зависит от типов). Но вечно так продолжаться не может. Существует, так сказать, результативная "яма", после которой если дальше сокращать количество используемой памяти, мы уже теряем в скорости генерации больше, чем выигрываем по памяти. Можно еще оптимизировать так, чтобы меньше места на винчестере занимали служебные файлы для анализа, но опять же, начнет сильно расти время генерации.
  30. TopicStarter Overlay

    Skipper_NORTON Старожил

    • Участник
    • Старожил
    Рег.:
    14.12.2007
    Сообщения:
    515
    Симпатии:
    4
    Репутация:
    0
    Оффлайн
    Вообще говоря, еще можно увеличить скорость генерации, при этом использовать столько же оперативной памяти, и места на винчестере, сколько и используется в моем генераторе. Чем больше в этой области думаешь и работаешь, тем больше возможностей, оптимизаций видишь. Но там настолько много работы, программирования, что просто неохота браться. Эффект маловат, чтобы столько работы делать. :)
  31. N1mTzo Учаcтник

    • Участник
    Рег.:
    17.04.2008
    Сообщения:
    318
    Симпатии:
    30
    Репутация:
    1
    Оффлайн
    А ssd винчестеры дадут какой-нибудь ощутимый эффект при построении баз? Что вообще важнее- мощный процессор, куча оперативки или десяток винчестеров в рейде?

    Ну как, потомки будут гордиться :cool:
  32. Uralchess Учаcтник

    • Участник
    Рег.:
    04.11.2009
    Сообщения:
    398
    Симпатии:
    5
    Репутация:
    0
    Оффлайн
    Skipper_NORTON
    А ваш генератор многопоточность не поддерживает? И если нет, то не планируете ее прикрутить?
  33. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    очень ускорят процесс. только объемы у них небольшие...

    судя по диспетчеру задач, у меня все ядра занимает. но автор точнее скажет. :)

    чтобы каждому не генерировать 5ку, сделать бы это 1 раз и выложить на файл-хостинг. еще бы желательно сделать md5 всех файлов, для проверки целостности. (это нужно когда качаешь базы, а не генерируешь)
  34. Kirr Администратор

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    1.208
    Симпатии:
    22
    Репутация:
    8
    Оффлайн
    Там в разы идёт разница, именно за счёт сжатия. Я вижу что зря здесь трачу время, но когда-нибудь подобные дискуссии вдохновят меня оставить варианты и что-нибудь посчитать для стандартных шахмат.

    На самом деле интересно было бы посмотреть, какова в, например, шести-фигурниках доля позиций, где исход игры зависит от наличия или отсутствия правила 50 ходов. Не видел пока что такого сравнения.

    Не любая программа, а работающая под Windows. Серьёзное железо часто работает под другими операционками. :)

    Исходник кода обращения - это только первый шаг. Чтобы вас воспринимали серьёзно, могу посоветовать:
    1. Выступать под реальным именем, а не под пвевдонимом.
    2. Описать ключевые особенности и решения генератора.
    3. Выложить исходник генератора.
    4. Опубликовать статистику - число позиций, объём базы на диске, необходимый объём памяти, время вычислений, и т.д., для как можно большего числа окончаний. Как минимум для всей пяти-фигурки. Добавлять по мере поступления новых данных.
    5. Продумать и реализовать варианты проверки сгенерированных таблиц: а) Проверка MD5, сравнение с эталоном. б) Сравнение статистики с референсной. в) Полноценная верификция.
    6. Сделать полноценное сравнение с форматом Налимова - размер базы, скорость генерации, скорость обращения, требования к памяти, и т.д. А также с другими современными форматами.
    7. Реализовать DTC, DTZ и DTZ50. :)
    8. Продумать структуру распределённого построения - как определять какую таблицу строить, как получать необходимые уже построенные таблицы, куда и как посылать готовую таблицу, и т.д.
    9. Все функции генератора должены быть доступны из командной строки.

    (Может что и забыл). Шансы на помощь в генерации сильно возрастут. Зависит всё только от вас, а не от богатых гроссмейстеров.

    Это тривиально делается. Для начала делается текстовый интерфейс, который по позиции (в FEN) показывает тупо текстом список возможных ходов и оценки после каждого хода. В принципе это уже можно прикрутить к веб-серверу и будет работать, но можно дальше украшать HTML форматированием, добавлять диаграммки и т.д.. Другой вопрос кто и где это будет хостить. :)
  35. bankuss Александр

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

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