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

Тема в разделе "Машинное отделение", создана пользователем Skipper_NORTON, 17 май 2011.

  1. SkipperNorton
    Оффлайн

    SkipperNorton Новичок

    Репутация:
    0
    Если использовать HDD, то компьютер будет упираться в пропускную способность чтения с этих винтов. (+записи)
    Из-за этого процессор не может загрузиться полностью.
    Что происходит на физическом уровне. 1) Система читает блок данных из HDD, в RAM (оперативную память), 2) процессор обрабатывает эти данные, 3) измененный блок из памяти записывается обратно на диск. И переходим к пункту 1. И так циклично, много раз. На самом деле, несколько сложнее - Чтобы просессор совсем не простаивал во время чтения-записи на диски, программа работает в несколько потоков, но в результате медленного чтения с диска- записи на диск, процессор, понятное дело, всё равно не загрузится на 100%, и будет отдыхать..

    По той же причине, запускать две и более программ-генераторов, exe которого лежит на одном диске - смысла нет - будут параллельно работать две программы вместо одной, но сумма прочитанных - записанных блоков будет такой же, из-за того что HDD загружен. В результате, каждая из этих двух программ просто завершит работу позже. Так лучше скажем, за 1-й месяц посчитать одну базу, за 2-й месяц - 2-ю, чем через два месяца получить сразу две базы. Суть такая.

    Если же запустить параллельно два генератора на двух HDD - тогда общая производительность растет в два раза - каждый HDD выдаст свою скорость чтения-записи, а сумма их будет в два раза больше, в результате за то же время, будет построено в два раза больше баз, в среднем соответственно, и в 2 раза больше, будет загрузка процессора.

    В компьютер таким образом можно вставить до 8-10 дисков HDD, и запускать параллельно до 8-10 генераторов, при условии конечно, один генератор -> на один диск.
    увеличить общую производительноть в 8-10 раз, если уж, тут, конечно, хватит производительности процессора.
    Оптимально собранная система - это такая система, при которой процесоор в основном, загружен на 100% или около того.
    При такой средней загрузке процессора, добавлять количество HDD уже не имеет смысла, суммарно производительность не увеличится, а сами дополнительные диски стоят денег.
    Нужно еще учитывать, что есть тяжелые итерации, где то в среднем от 1-—>2 до 21-—>22 а более поздние - легкие итерации.
    На тяжелых итерациях процессор загружается больше, при той же скорости чтения с дисков. На легких - наоборот, с диска скорость чтения та же, но процессор загружен меньше.
    Практика показала, что имея 4-ядерный процессор, оптимально иметь примерно 4-6 дисков HDD, и запускать парарллельно до 4-6 генераторов.
    Если выключится электричество, до того как началась итерация 2-—->3 - данные будут потеряны, придется генератор запускать заново для этого типа эндшпиля. Если после того как началась итерация 2-—->3 - тогда перезапустив генератор, он будет продолжать анализ с начала прерванной итерации. К примеру, прервали на этапе, 45-—>46, перезапускаем - и он считает с этой точки. Генератор обладает отказоустойчивостью, т.е. вроде, даже при внезапном выключении электричества, сбоев быть не должно.

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

    Если использовать диски SSD вместо HDD, то у них и скорость чтения-записи больше раз в 5, потому процессор загрузится на 100% с одним-двумя запущенными генераторами и больше не надо. Каждый тип эндшпиля будет строится раз в 5 быстрее по времени, зато меньше параллельно запущенных генераторов (1-2 вместо 4-6 генераторов на один 4-ядерный процессор) - в итоге скорость генерации всех 7-фигурных будет та же, т.е. по сути, зависит напрямую от производительности процессора.
    Но есть выигрыш - в том, что при работающих 1-2 генераторах, вместо 4-6 - нам потребуется намного меньше оперативной памяти - здесь выигрыш по деньгам (общая стоимость компьютера).
    Зато сами диски SSD - дороже чем HDD, при одинаковом объеме - здесь проигрыш по деньгам.
    Вот в целом, такие принципы.
     
  2. Alex_Lk
    Оффлайн

    Alex_Lk Новичок

    Репутация:
    0
    Я считал не потому что таблица такая ценная. А что-бы на деле проверить во что выливается расчет на компе вроде моего ( i7-2700k 3.5Ghz - 16Gb - 2Tb WD20EARX (11.2011г.)).
    До рассчета этих 3х таблиц надеялся что достаточно 100, ну 200 компьютеро-лет, а теперь получается лет 500 не меньше. Очень жаль.
     
  3. SkipperNorton
    Оффлайн

    SkipperNorton Новичок

    Репутация:
    0
    Скорость генерации в реальном времени, зависит не только от количества построенных позиций, а еще и от типа эндшпиля.
    1) Одни придется гонять до итерации 548-—>549, другие скажем, до 10-—->11.
    2) Также, одни - ничейные т.е. по существу, с легкими итерациями, другие - выигрышные, с тяжелыми.
    3) Ферзевые более долгие чем типы без ферзей, т.к. у них при анализе больше ходов —> больше веток для анализа в итерациях.
    И т.д.

    В вашем случае, скорость ниже, потому что в ваших выбранных типах, много одинаковых фигур - в данном случае, ферзей одного цвета. Для таких типов (у которых одинаковых фигур - больше двух, т.е. тройка, или четверка или пятерка одинаковых фигур, как у вас) все итерации по сути, легкие (так же как и в ничейных типах эндшпилей, где много позиций с ничьей), и программа обладает некотороым избыточностым чтением-записью с диском. Когда я разрабатывал генератор, то думал об этом, можно было этого избежать, введя дополнительные критерии идентификации позиций, но тогда процессор был бы больше загружен на других типах эндшпилей (в общем перевод позиции в идентификатор стал бы более трудоемким + более сложный анализ на итерациях и на подмножествах). А если бы вы запустили тип эндшпиля со всеми разными фигурами, или только с двумя одинаковых фигур , к примеру
    7_KBBN-KRN
    (здесь одинаковых - только два белых слона), то в таком случае никакой избыточности чтений не будет, и увидите те же 100 тыс поз/сек и даже больше, т.к. читаем большие блоки чем для 5-6-фигурных типов. Уточню - возможно, и скорее всего, тип 7_KBBN-KRN будет строится дольше, чем с четверкой одинаковых фигур как у вас, KQQQQ-KQ, но дольше совсем не во столько раз, во сколько раз, позиций в 7_KBBN-KRN больше чем в KQQQQ-KQ. В результате, реальная скорость - тысяч позиций в секунду, наоборот, будет выше намного.
    И более интересные и важные - именно типы с разными фигурами, или с парами, чем типы с тремя и более одинаковыми фигурами (такие же и в партии редко встречаются. но для создания старших типов, с пешками, все таки нужны будут все).
    —- добавлено: 17 май 2016, опубликовано: 17 май 2016 —-
    В среднем, для расчета всех 7-фигурных типов - будет потрачено компьютеро-лет, а точнее - процессоро-лет - в 200 раз больше чем для всех 6-фигурных,
    т.к. и позиций 7-фигурных, в среднем в 200 раз больше.

    Я на своем Phenom II 945 на генерацию всех 6-фигурных, потратил 1 год, значит думаю около 200 процессоро-лет, потратил бы на создание всех 7-фигурных.
    Делать анализ на основе каких то трех выбранных типов (причем типов с определенными особенностями - много одинаковых фигур + ферзи) - не стоит.
    Вот к примеру, посчитайте 7_KBBN-KRN - и напишите сколько там у вас получится, 100 тыс поз/сек или больше.
     
    Последнее редактирование: 17 май 2016
  4. Alex_Lk
    Оффлайн

    Alex_Lk Новичок

    Репутация:
    0
    Может быль 7_KBBN-KRN и даст 100 тыс.п/с там много ничьих Но время в основном уйдет на медленные таблицы.
    Не знаю на сколько еще меня хватит. Комп времени мне не жаль, а вот место на диске не много сейчас 1200 гБ для расчета надо видимо 800-900 так что 300-400 гБ насчитаю и все.
    И с одними ферзями считал потому что там много побед и мало требуется предварительных 6фигурок. А сколько все 6фигурки у вас заняли ? :konb:
     
  5. SkipperNorton
    Оффлайн

    SkipperNorton Новичок

    Репутация:
    0
    Что то примерно 1,4 ТБ, и я считал вообще все, т.е. 5-1 тоже, т.е. против одинокого короля. Они не представляют ценности для 6-фигурных,
    но нужны будут, как младшие для 7-фигурных.
     
    Последнее редактирование: 17 май 2016
  6. Eugene_K
    Оффлайн

    Eugene_K Учаcтник

    Репутация:
    3
    Если закон Мура нам не врёт, то намного меньше...

    ....намного.
     
  7. WinPooh
    Оффлайн

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

    Репутация:
    95
    Расчёт многофигурных эндшпильных таблиц (7 и больше) совершенно точно можно уподобить расчёту таблиц логарифмов со всё большим количеством знаков. В том смысле, что с практической точки зрения гораздо проще считать движком на лету, ошибаясь в финальной оценке один раз на миллион позиций. Так что никто 8-фигурки считать не будет, они затраченного электричества не окупят...
     
  8. SkipperNorton
    Оффлайн

    SkipperNorton Новичок

    Репутация:
    0
    Кто сказал, что ошибки один раз на миллион позиций? Если бы движки на лету, так редко ошибались, то 1) уже сейчас шахматы были бы по сути, решены, 2) все партии между движками заканчивались бы вничью.
    А практика показывает так - я могу найти огромное множество эндшпильных позиций, из которых, ни Гудини ни Комодо, ни какие другие движки без баз, никогда не выиграют, а с базами - программа выиграет.
    Уверен даже - можно найти такую позицию, из которой любой самый сильный движок без баз - проиграет программе с базами - играя далее, и белыми, и (в другой партии) черными.
     
  9. Vlad_Imir
    Оффлайн

    Vlad_Imir Новичок

    Репутация:
    20
    Может вам стоит связаться с Робертом Хьятом, у него есть в распоряжении неплохие машины. Вот, к примеру, посмотрите ссылку http://talkchess.com/forum/viewtopic.php?topic_view=threads&p=672293&t=60203. Если вы его заинтересуете, он, возможно и поможет.
     
  10. Michael-13
    Оффлайн

    Michael-13 Господин

    Репутация:
    29
    Публичный онлайн доступ к 7-фигурным таблицам окончаний пока отсутствует. В 2016 году бесплатный доступ к таблицам стал частично открыт, но пока только для пользователей телефонов с операционной системой Android, через специальное приложение[3].
    https://ru.wikipedia.org/wiki/Эндшпильные_таблицы_Налимова
    Прикольная фишка этого приложения - подсвечены поля, с выигрышем.
    [​IMG]

    Заодно можно поиграть с компьютером.

    ну и заодно - лайфхак:
    Android 4.0 и выше
    Счастливые владельцы смартфона или планшета с Android четвёртой версии могут сделать скриншот простым одновременным нажатием кнопок питания и понижения громкости. Удерживаем эту комбинацию долю секунды, после чего наблюдаем характерную картинку на экране. Найти сделанный скриншот можно в Галерее.

    Еще фотки: https://goo.gl/photos/9ayPm6qcDuBkWsVW8
     
    Arseniy.915 и MS нравится это.
  11. Skipper_NORTON
    Оффлайн

    Skipper_NORTON Старожил

    Репутация:
    0
    Так, моя старая ссылка, по которой можно было скачать мой эндшпильный генератор 4-й версии + анализатор окончаний с юзер интерфейсом, уже не работает, так что создал новую - можно будет скачать отсюда, сгенерировать 3-4-5-6-7-фигурные базы и анализировать, у кого мощность железа позволяет -

    https://mega.nz/file/kr5B1bQB#reeZE5Txl6YXfqcoXaolmYUy2Rr7eXvu-swiUeT_gOM

    надеюсь, эту не закроют, там всего то 36,7 МБ весит, что ниже лимитов для бесплатного пользования.
    (Но лучше мне регулярно, хотя бы раз в несколько месяцев делать пробное скачивание, на случай, если на сайте есть некие программы проверки, на "устаревание"),

    В будущем ещё хочу, модернизировать сам анализатор с UI, чтобы при ничейных позициях, он не просто выбирал рандомно ход, из множества - ведущих к ничьёй, а ещё и пытался, при материальном перевесе, его сохранять, пытаться теснить короля слабейшей стороны, и т.д., надеясь что человек совершит ошибку. Выбирая при этом, конечно же лучший ход, ведущий к ничьёй, только не рандомно,
     
    Последнее редактирование: 16 дек 2023
    Spike и Alex_Lk нравится это.