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

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

  1. SkipperNorton Новичок

    • Новичок
    Рег.:
    04.05.2016
    Сообщения:
    42
    Симпатии:
    8
    Репутация:
    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 Новичок

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

    • Новичок
    Рег.:
    04.05.2016
    Сообщения:
    42
    Симпатии:
    8
    Репутация:
    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 тыс поз/сек или больше.
  4. Alex_Lk Новичок

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

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

    • Участник
    Рег.:
    14.12.2014
    Сообщения:
    829
    Симпатии:
    137
    Репутация:
    3
    Оффлайн
    Если закон Мура нам не врёт, то намного меньше...

    ....намного.
  7. WinPooh В.М.

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

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

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

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

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

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

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

    Skipper_NORTON Старожил

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

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

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

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

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