Для участников форума MHP

Message boards : Cafe : Для участников форума MHP
Message board moderation

To post messages, you must log in.

Previous · 1 . . . 49 · 50 · 51 · 52 · 53 · 54 · 55 . . . 129 · Next

AuthorMessage
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9496 - Posted: 29 Aug 2022, 12:01:20 UTC
Last modified: 29 Aug 2022, 12:02:01 UTC

Продолжение счёта дошло до 38e32.
По-прежнему ни одного результата.
Ладно, пусть досчитает.
И чего она у меня, интересно, считает?

Итак, Ахиллес не поддерживает новый AVX2, как я понимаю.
Компиляцию господин Петухов, видимо, делал для Demis; у него, наверное, компьютер поновее и архитектура другая.
Однако координатор эксперимента ни сном, ни духом!
Радуется за Ахиллеса и за всех остальных обладателей AVX2.
Может, за всех остальных обладателей и надо радоваться, а вот за Ахиллеса - зря радовались!

Хотелось бы пожелать стратегам слаженности в работе.
ID: 9496 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9499 - Posted: 29 Aug 2022, 15:18:37 UTC
Last modified: 29 Aug 2022, 15:49:28 UTC

Продолжение счёта завершилось без результатов.
В файл Process.out записалось
TIME = 14476 seconds
kolshag = 621546608

В общем, холостой прогон.

Тестовый запуск екзешника делала так
M12-S9-56-013452.exe 0 1000000

Окно мелькнуло на мгновение и исчезло.

Точно так же было, когда я пыталась запустить старую переборную программу.
Однако с новой переборной программой окно не исчезло, но и результатов никаких нет.

Всё, холостые эксперименты заканчиваю.
Очевидно, что Ахиллес не поддерживает AVX2, которое использовалось в последней компиляции господина Петухова.

Нельзя ли перекомпилировать комплект 37 для Ахиллеса (как был скомпилирован комплект 234)?
Ну, и остаётся условие: ввести в переборную программу многопоточный режим - на 4 потока.
ID: 9499 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9500 - Posted: 29 Aug 2022, 16:13:33 UTC
Last modified: 29 Aug 2022, 16:39:03 UTC

Отвечаю на письмо Антона.
Цитата
Что может быть не так с Ахиллесом... Ведь 234-й комплект отработал на ура,

С Ахиллесом всё в порядке, все программы моих экспериментов работают.

Очевидно, что-то не так с программой поиска цепочек.
Скорее всего, это связано с AVX2.
Тестовый запуск экзешника показывает, что он не работает: мгновенно мелькнувшее окно и никаких результатов.

Следующую фразу письма цитировать не буду. Просто отвечу.
Ахиллесу помогать не надо.

Demis в этом помочь вряд ли может.
Он раньше не мог компилировать под AVX2.
А если у него теперь есть компьютер с AVX2, то вполне возможно у него не то AVX2, которое поддерживает Ахиллес, более новая версия.

Кстати, господин Петухов писал
Компилилось под себя, ...

Значит, он точно знает, какая именно версия AVX2 задействована в его компиляции и поддерживается ли эта версия Ахиллесом.
И не надо гадать на кофейной гуще!
ID: 9500 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9501 - Posted: 29 Aug 2022, 19:14:40 UTC
Last modified: 29 Aug 2022, 19:18:25 UTC

Цитата
PS. Важно добавить: PARI/GP поддерживает многопоточный режим.
Таким образом, если у вас есть N ядер в процессоре, сделайте программу многопоточной.
И она будет автоматически распараллелена!
Мне Demis прислал ссылку на файл, где описывается, как сделать программу на PARI/GP многопоточной, но я там, конечно, ничего не поняла.
Не читаю по-английски :(
А ссылку сейчас найду и сюда вытащу.

Вот ссылка
http://pari-gp-par.rar
Ой, это ни фига не ссылка, это архив, который прислал мне Demis.
Ладно, сейчас выложу этот архив на Яндекс.Диск.

Готово!
https://disk.yandex.ru/d/6quPbB6Edw8F_Q
63,5 КБ.

Господа!
Буду признательна, если научите меня делать многопоточную программу на PARI/GP.
Для штурма 19-ки мне это очень пригодится.

Итак, многопоточность назрела!

Вот здесь выложена программа на PARI/GP
https://dxdy.ru/post1563716.html#p1563716

Надо вставить в эту программу всего одну или две строки, которые сделают её многопоточной.
Мне надо задать 4 потока.

Господа!
Пожалуйста, подскажите, кто знает это.

В приведённой цитате дана ссылка на архив, в котором есть файл pdf, описывающий многопоточность в PARI/GP.
Давайте разберёмся.
ID: 9501 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9502 - Posted: 30 Aug 2022, 3:22:03 UTC
Last modified: 30 Aug 2022, 4:06:19 UTC

Ох!
Вчера уже ночью с Demis поговорили про то, что у меня 37-й комплект не хочет считаться на Ахиллесе.
А почему он не хочет считаться, я без понятия.
Demis утверждает, что я делаю что-то не так.
Но что именно я делаю не так, никто сказать не может!
Ну, вот 234-й комплект ведь считался с AVX2. Тогда я всё делала так, значит.

В общем, после полуночи уже легла и долго не могла заснуть, всё думала, что же я сделала не так :)
Так ничего и не придумала, часа в три, наверное, уснула.

А сейчас с утречка решила попробовать другой комплект - 31-й.
Скопировала архив на этот комплект в другую папку, распаковала его в этой папке.
Взяла переборную программу, которую выложил Антон на форуме, с этими строчками
start=2000*10^30;\\Откуда начать
stop=3000*10^30;\\Где закончить (не включая)
step=  200*10^30;\\Сколько отвести на каждый круг перебора паттернов

Запустила программу и... всё заработало!!!

Застрелите меня - я ничего не понимаю.
Что в 37-ом комплекте у меня не так?
Так, ладно, считаю :)
Надеюсь, мы с Антоном не пересекаемся в этом комплекте.
Он писал
Я перезапустил 31-й комплект с 1500 до 2000 в пять кругов по 100.

А у меня начинается с
start=2000*10^30


Теперь надо разобраться с многопоточностью.
ID: 9502 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9503 - Posted: 30 Aug 2022, 3:37:34 UTC
Last modified: 30 Aug 2022, 4:08:56 UTC

Ночной разговор с Demis о многопоточности (в переписке).
D. - Demis
Н. - Наталия

D.
Еще раз, многопоточность Вас затормозит.

<...>
Н.
Поэтому и прошу сделать хотя бы многопоточность, это всё равно убыстрит, должно убыстрить, пусть не в 4 раза, но хоть во сколько-то.

D.
Просто задумайтесь
"а почему Дмитрий сделал только один проект мультипоточным и в остальных не делал этого"???
Ответьте на вопрос.
Себе.
Не мне.

<...>
Н.
Я же вам написала: если получится вставить режим многопоточности в переборную программу, тогда присылайте и программу, и архив.

D.
Смысл принудительно замедлять программу?

<...>
D.
Если Дмитрий и напишет такое, то только специально для Вас.
Но будьте уверены ждать результата выполнения программы придется побольше ста лет.
И это не из вредности к Вам, а из физики процессов при вычислении.

Насколько могу понимать из этого разговора, Demis считает, что многопоточность только затормозит работу программы.
Не могу понять - почему же это?
Насколько знаю, многопоточная программа делает распараллеливание процесса по ядрам, поэтому вычисления должны происходить быстрее.
Разве это не так?
ID: 9503 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9504 - Posted: 30 Aug 2022, 3:51:37 UTC
Last modified: 30 Aug 2022, 4:03:13 UTC

И продолжение диалога всё о многопоточности же.

Н.
Не надо Антону присылать мне переборную программу!
Он её уже выложил на форуме, но она у меня не работает с тем, что скомпилировал Петухов.
К тому же, мне надо эту программу изменить, о чём и прошу вас.
Изменение касается только добавления многопоточного режима.

D.
Это лучше Дмитрия попросить.
Т.к. это не "два слова" в коде интерпретатора написать...
Посмотрите внимательно код из м84...

Итак, Demis просто не знает, как сделать вставку в программу для многопоточного режима и отсылает к Дмитрию.
Может быть, поэтому он утверждает, что многопоточный режим только затормозит программу?

Про многопоточную программу из архива M84 я ему написала.
Там есть такая программа. И я её запускала. Очень шустро работает!
Никакого замедления я не заметила.

Ну и что делать будем?
Кто нам расскажет, как вставить многопоточный режим в PARI-программу?
Архив М84 я уже удалила, а зря.
Сейчас бы ещё посмотрела внимательно на многопоточную программу господина Петухова, как Demis мне рекомендует.
Ну, смотреть-то можно долго и внимательно, однако это не поможет.
Надо просто знать, как это делать, а для этого есть инструкция, которую сам Demis мне и прислал.

Изучаем инструкцию, господа!
Она здесь
https://disk.yandex.ru/d/6quPbB6Edw8F_Q
Яндекс.Диск, 63,5 КБ.

PS. Я не знаю: может быть, Demis прав - для PARI-программы многопоточный режим только замедляет процесс.
Пока не знаю и хочу узнать!
Мне кажется, что это не так и должно быть убыстрение,
А иначе зачем разработчики PARI сделали поддержку многопоточного режима, если с ним только медленнее работает программа?
ID: 9504 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9505 - Posted: 30 Aug 2022, 4:35:13 UTC
Last modified: 30 Aug 2022, 7:39:41 UTC

37-й комплект взлетел!!!

Что я переделала?
Скопировала архив на 37-й комплект в отдельную папку и там распаковала.

Вчера я распаковала этот архив прямо в папке x64 AVX2 Table1.
Могла ли быть в этом причина?
В этой папке сидят все 6 архивов (на 6 комплектов).
Архив на 31-й комплект сегодня тоже в отдельную папку скопировала и там распаковала.
Далее, понятно, как мысль пошла - по какому руслу.

Ну, как бы то ни было, а комплект заработал!
Параметры такие, как в переборной программе, выложенной Антоном на форуме
start=1600*10^30;\\Откуда начать
stop=2000*10^30;\\Где закончить (не включая)
step=  200*10^30;\\Сколько отвести на каждый круг перебора паттернов

Итак, два потока на Ахиллесе ищут цепочки :)
Обрабатываются два комплекта: 31-й и 37-й.
Параметры заданы точно так, как задано Антоном.
ID: 9505 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9506 - Posted: 30 Aug 2022, 4:47:28 UTC
Last modified: 30 Aug 2022, 4:48:04 UTC

Антон писал в сообщении
https://dxdy.ru/post1563773.html#p1563773
Зато я сделал другую удобную вещь. И Ахиллес, на котором наконец-то заработал 31-й комплект, видимо, может это подтвердить:

Сначала идёт первое число цепочки, а потом уже имя паттерна. И по первым цифрам числа легко видеть, на какой высоте идёт счёт.

Ахиллес подтверждает :)

1662732556730085420508002384725145:M12-N2-35-M12-N2-35-215034: 12, 24,  6, 12,
6, 12, 12, 12, 12, 12, 12, 12, 16, 12, 96, valids=10
1758490448867533565111817523248345:M12-N2-35-M12-N2-35-345012: 12, 48, 48, 12, 1
2, 12, 12, 12, 48, 12, 12, 12, 64, 96, 12, valids=10
1699560319489458232283708560944345:M12-N2-35-M12-N2-35-345201: 48, 12, 12, 12, 9
6, 12, 12, 12, 12, 12, 12, 12, 48, 16, 12, valids=11
1686606967079944855253414221329945:M12-N2-35-M12-N2-35-352140: 24, 12, 12, 12, 4
8, 12, 12, 12, 24, 12, 12, 12, 12, 48,  4, valids=10
1718846736605056637518338437453145:M12-N2-35-M12-N2-35-402135: 24, 48, 12, 12, 9
6, 12, 12, 12, 48, 12, 12, 12, 24, 12, 12, valids=10
1691998374085315687759306229505945:M12-N2-35-M12-N2-35-415320: 12, 48, 24, 12, 1
2, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, valids=12
1711252219222572609656658810840345:M12-N2-35-M12-N2-35-435021: 12, 48, 24, 12, 1
2, 12, 12, 12, 24, 12, 12, 12,  4, 12, 12, valids=11
1761066259676445652816651428077145:M12-N2-35-M12-N2-35-452031: 48, 12, 48, 12, 1
2, 12, 12, 12, 18, 12, 12, 12, 16, 24, 12, valids=10
1713007798762824825493086773333145:M12-N2-35-M12-N2-35-453021: 12, 24, 24, 12, 4
8, 12, 12, 12, 12, 12, 12, 12,  8, 48, 12, valids=10
1717065953035396344016258147339545:M12-N2-35-M12-N2-35-521034: 12, 24, 24, 12, 1
2, 12, 12, 12, 24, 12, 12, 12, 32, 48, 12, valids=10
1729190196394001069758039296701145:M12-N2-35-M12-N2-35-531204: 24, 12, 12, 12, 2
4, 12, 12, 12, 12, 12, 12, 12, 24, 64, 12, valids=11
1610363894711158129189964680824345:M12-N2-36-M12-N2-36-013254: 12, 32,  6, 12, 2
4, 12, 12, 12, 24, 12, 12, 12, 12, 12, 24, valids=10

Это из 37-го комплекта.
ID: 9506 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9508 - Posted: 30 Aug 2022, 8:14:19 UTC
Last modified: 30 Aug 2022, 10:23:42 UTC

В основном в результатах 10-ки и 11-ки; 12-ки редки, 13-ки ещё более редки, а 14-ок и 15-ок вообще пока не видно :)
Нашлась в 37-ом комплекте одна непрерывная 13-ка
1732514131365786706191719034546841: M12-S2-23-M12-S2-23-145320: 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,128, 24, valids=13

Конечно, далека от известной наименьшей.
Моя коллекция непрерывных 13-ок пополнилась :)

Счёт продолжается.
Непрерывная 14-ка где-то рядом :)
Антон же обещал, что она скоро найдётся :)
Обязательно найдётся, только я не очень уверена, что скоро.
ID: 9508 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9509 - Posted: 30 Aug 2022, 8:20:18 UTC

Антон писал в сообщении
https://dxdy.ru/post1563710.html#p1563710
Кстати, надеюсь, что ещё и gris подключится к счёту.

Вот это вряд ли :)
Уж сколько я за годы дружбы уговаривала gris поучаствовать в моих экспериментах.
Безуспешно!
ID: 9509 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9510 - Posted: 30 Aug 2022, 9:35:58 UTC
Last modified: 30 Aug 2022, 9:45:01 UTC

Ну вот, скачала снова архив для цепочек с 84 делителями: M84n11_x32SSE.zip.
Насколько понимаю, программы предназначены для поиска 11-ки.
Но 11-ка так и не найдена.

В архиве есть результаты, найденные господином Петуховым.

7-ки
L2-193:2970906026002542132772654887422967300438416503141594373503226482440482597048460322348770380728886803562491:  0,  1,  0, 84, 84, 84, 84, 84, 84, 84,  1,  valids=7, maxlen=7/8, ALL, FOUND!
L4-160:4919290312364085842006998233386455119121096105717737889738372024578366468712407820062964558406051347562491:  0,  1, 84, 84, 84, 84, 84, 84, 84,  1,  0,  valids=7, maxlen=7/7, ALL, FOUND!
L4-355:4833038448993410356996833060351047914349447808237275484528026683801807795199554494002609096025269779562491:  0,  0,  1, 84, 84, 84, 84, 84, 84, 84,  1,  valids=7, maxlen=7/7, ALL, FOUND!
R3-531:9919419049463845663170370731666596612072478781212909159344373130103731362056069190562046053608724972437499:  1, 84, 84, 84, 84, 84, 84, 84,  1,  0,  1,  valids=7, maxlen=7/7, ALL, FOUND!
R3-565:14332842427517385074204470074595672617806153281984996894069848788648201178814448834515118791341709804437499:  0,  1, 84, 84, 84, 84, 84, 84, 84,  1,  0,  valids=7, maxlen=7/7, ALL, FOUND!
L4-426:20447373514476978300695690642727509817238264503563178405008891774373525168828873323484605456243320339562491:  0,  1, 84, 84, 84, 84, 84, 84, 84,  1,  0,  valids=7, maxlen=7/7, ALL, FOUND!
R4-251:25510416140021801140494689551840209098875052682402129895628935366702356836830194685248725066952940012437499:  0, 42, 84, 84, 84, 84, 84, 84, 84,  1,  0,  valids=7, maxlen=7/7, ALL, FOUND!

И 8-ка
L1-469:2936622001592672299341752929130230223799092994765087376479801701278602921967325120774004853053679123562491:  0,  1, 84, 84, 84, 84, 84, 84, 84, 84,  1,  valids=8, maxlen=8/8, ALL, FOUND!

А это данные из Приложения к статье OEIS по цепочкам с 84 делителями

T(42,1) 20160
T(42,2) 13466816
T(42,3) 147632329422655 Hugo van der Sanden 2022-04-13
T(42,4) 12965471279446575671872 Hugo van der Sanden 2022-04-13
T(42,5) <= 260345705241605884190608109372 Hugo van der Sanden 2022-04-13
T(42,6) <= 301286119966089985897916543688964109372 Hugo van der Sanden 2022-04-13
T(42,7) <= 4814815295652266472134604702896319849568820911671872 Hugo van der Sanden 2022-08-20
T(42,8) <= 2936622001592672299341752929130230223799092994765087376479801701278602921967325120774004853053679123562493 Dmitry Petukhov 2022-06-03
T(42,9) <= 113484085920210537237546260552209007679489635754139167392387167595954454671427275004047180494228121107562493 Eugene Zhilitsky 2022-06-06
T(42,10) <= 850110906168382371216057545387082625772983773608338698713882862297162247190308993041704075477374723603562492 Eugene Zhilitsky 2022-06-13
T(42,11) unknown

https://oeis.org/A292580/a292580_4.txt

Я помню, как на форуме писали о поиске этих цепочек.
Были большие проблемы с подсчётом количества делителей, так как числа огромные.
Ну, до 10-ки включительно всё-таки справились.
Поиск 11-ки, как понимаю, заглох.

Судя по обозначению архива M84n11_x32SSE.zip в этом комплекте нет AVX2.
Евгений считал в этой задаче, а у него, кажется, компьютер не поддерживает AVX2.
Зато в нём есть многопоточная переборная программа.
Собираюсь на неё внимательно посмотреть :)
Я её запускала немножко на Ахиллесе, шустро так работала.

Кстати, совсем недавно Hugo нашёл новую оценку для 7-ки
T(42,7) <= 4814815295652266472134604702896319849568820911671872 Hugo van der Sanden 2022-08-20

8-ка, найденная господином Петуховым, примерно в два раза длиннее 7-ки.
Наверняка можно уменьшить.
Ну, как известно, задачи минимизации цепочек в проекте господина Лецко мало кому интересны.
ID: 9510 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9511 - Posted: 30 Aug 2022, 9:57:53 UTC
Last modified: 30 Aug 2022, 15:17:50 UTC

А вот и переборная программа для поиска цепочек с 84 делителями, в которой задействован многопоточный режим

\\Перебор всех паттернов в каталоге
start = 32*10^105; \\Откуда начать счёт (должно делиться на n_threads*step)
stop = 999999*10^105; \\Где закончить (можно поставить максимум 1.637e99*2^64=3e118 и будет считать много-много лет)
step = 10^105; \\По сколько проверять каждый паттерн (с измерением времени по всем паттернам)
thread = 1; \\Номер потока (с 1 по n_threads включительно)
n_threads = 4; \\Всего потоков
nd=84; nn=11; \\Количество делителей и длина искомой цепочки
log_name=strprintf("M%dn%d-%d.txt",nd,nn,thread); \\Лог для каждого потока должен быть свой

default(parisize,130*10^6); \\Нужно для factor/numdiv от больших чисел, указал с большим запасом
default(factor_add_primes,1);
{MyF(x,y,p)=my(f,fn);
f=factor(x/y, p); fn=matsize(f)[1];
if(ispseudoprime(f[fn,1]), return(numdiv(x)); \\Разложилось, подсчитаем точное количество делителей
, fn>1 || vecmax(f[,2])>1, return(1); \\Делителей точно больше нужного
);
return(0); \\Не разложилось
}
{Scan(g,tt,mm)=my();
if(b-a-1 while((a--)>0,
if(s[a]==nd, next, s[a]>0, break); alarm(0);
if(type(alarm(tt,factor((n+a-1)/vv[g,a])))=="t_ERROR", s[a]=MyF(n+a-1,vv[g,a],2^25); , s[a]=numdiv(n+a-1););
if(s[a]!=0 && s[a]!=nd, break);
);
if(b-a-1 while((b++)<=nn,
if(s[b]==nd, next, s[b]>0, break); alarm(0);
if(type(alarm(tt,factor((n+b-1)/vv[g,b])))=="t_ERROR", s[b]=MyF(n+b-1,vv[g,b],2^25); , s[b]=numdiv(n+b-1););
if(s[b]!=0 && s[b]!=nd, break);
);
}
{pat=externstr(strprintf("dir /a-d /b /o /s M%dn%d-??-???.exe",nd,nn));
if(#pat==0, print("Not found patterns!"); quit);
vv=matrix(#pat,nn); zz=matrix(#pat,nn); p=vector(#pat); ff=vector(#pat,i,""); st=vector(#pat); step10=logint(step,10);
for(i=1,#pat,
ss=strsplit(pat[i],".");
pat[i]=strjoin(ss[1..#ss-1],".");
read(concat(pat[i],".pat"));
p[i]=pp;
for(j=1,#v, vv[i,j]=v[j]; zz[i,j]=z[j]);
ss=strsplit(pat[i],"\\"); ff[i]=strjoin(strsplit(ss[#ss],"-")[2..3],"-");
st[i]=ceil(min(step*1.001,1.429e105)/pp.mod); \\ВАЖНО: чтобы не считать лишнего эта величина не должна сильно превышать ceil(step/p[g].mod)!
printf("%0.0f%%%c", 100*i/#pat,13); \\Прогресс инициализации
);
\\Инициализация закончена, можно приступать к основному перебору
forstep(h=start+(thread-1)*step,stop-1,n_threads*step, \\Каждый поток будет перебирать по одному step
if(#externstr(strprintf("dir /b M%d.FOUND%d.txt 2>nul",nd,nn))>0, break); \\Если nn-ка найдена, то заканчиваем счёт
t0=getwalltime(); gettime(); q=0; \\Статистику будем подсчитывать для каждого круга величиной step
for(g=1,#pat, \\Перебор всех паттернов
system(strprintf("title %de%d:%s",h\10^step10,step10,ff[g])); \\Вывести текущий прогресс в заголовок окна консоли, чисто для удобства
z1=Set(select(x->(x>0),zz[g,],1)); \\Подготовим список проверяемых мест для паттерна
forstep(ii=floor(h/p[g].mod),ceil((h+step-1)/p[g].mod),st[g],
printf("%s: %0.5fe110\t\t%c", ff[g],(lift(p[g])+p[g].mod*ii)/1e110,13); \\Вывод прогресса на экран, чисто для удобства
vi=extern(strexpand("\"",pat[g],".exe\" ",ii," ",st[g])); q+=#vi;
for(t=1,#vi, \\Цикл по всем найденным кандидатам в цепочки
n=lift(p[g])+p[g].mod*vi[t]; s=7*zz[g,]; removeprimes;
if(n=h+step, next); \\Исключение возможного дублирования цепочек на краях интервала step
foreach(z1,d, if(!ispseudoprime((n+d-1)/vv[g,d]), next(2), s[d]=numdiv(n+d-1)));
a=nn\2+1; while((a--)>0,
if(s[a]==nd, next, s[a]>0, break); if(ispseudoprime((n+a-1)/vv[g,a]), s[a]=nd/2; break); \\Вместо pq там лишь p
s[a]=MyF(n+a-1,vv[g,a],2^15); if(s[a]!=0 && s[a]!=nd, break);
);
if((s[5]!=0 && s[5]!=nd) || (s[7]!=0 && s[7]!=nd), next);
b=nn\2+1; while((b++)<=nn,
if(s[b]==nd, next, s[b]>0, break); if(ispseudoprime((n+b-1)/vv[g,b]), s[b]=nd/2; break); \\Вместо pq там лишь p
s[b]=MyF(n+b-1,vv[g,b],2^15); if(s[b]!=0 && s[b]!=nd, break);
);
if((s[5]!=0 && s[5]!=nd) || (s[7]!=0 && s[7]!=nd), next);
if(b-a-1>=nn-2, \\Допроверять будем только maxlen>=9
a=nn\2+1; while((a--)>0, if(s[a]==nd, next, s[a]>0, break); s[a]=MyF(n+a-1,vv[g,a],2^25); if(s[a]!=0 && s[a]!=nd, break); );
);
if(b-a-1>=nn-2, \\Допроверять будем только maxlen>=9
b=nn\2+1; while((b++)<=nn, if(s[b]==nd, next, s[b]>0, break); s[b]=MyF(n+b-1,vv[g,b],2^25); if(s[b]!=0 && s[b]!=nd, break); );
);
if((s[5]!=0 && s[5]!=nd) || (s[7]!=0 && s[7]!=nd), next); Scan(g,2,nn-2); \\Допроверять будем только maxlen>=9
if((s[5]!=0 && s[5]!=nd) || (s[7]!=0 && s[7]!=nd), next); Scan(g,17,nn-2); \\Допроверять будем только maxlen>=9
if((s[5]!=0 && s[5]!=nd) || (s[7]!=0 && s[7]!=nd), next); Scan(g,117,nn-2); \\Допроверять будем только maxlen>=9
\\ if((s[5]!=0 && s[5]!=nd) || (s[7]!=0 && s[7]!=nd), next); Scan(g,317,nn-1); \\Допроверять будем только maxlen>=10
\\ if((s[5]!=0 && s[5]!=nd) || (s[7]!=0 && s[7]!=nd), next); Scan(g,997,nn-1); \\Допроверять будем только maxlen>=10
if((s[5]!=0 && s[5]!=nd) || (s[7]!=0 && s[7]!=nd), next);
k=#select(x->(x==nd),s);
if(k>=1, \\В лог выводим всё найденное
w=strprintf("%d:",n); f=", ALL"; u=0; maxlen=0;
for(j=1,nn, if(zz[g,j]>0 && s[j]!=nd, f=""; break));
foreach(s,d, w=strprintf("%s%3d,",w,d); if(d==nd, maxlen=max(maxlen,u++), maxlen=max(maxlen,u); u=0););
if(maxlen>=nn-2, f=concat(f,", FOUND!"));
w=strprintf("%s valids=%d, maxlen=%d/%d%s", w,k,maxlen,b-a-1,f);
if(k>=nn-1 || maxlen>=nn-3, print(ff[g],":",w)); \\На экран будем показывать лишь часть
write(log_name, ff[g],":",w); \\Запись в лог для каждого потока
for(i=nn-2,nn, if(maxlen==i, write(strprintf("M%d.FOUND%d.txt",nd,i), ff[g],":",w))); \\Искомые цепочки дополнительно запишем в отдельный файл, для удобства
);
);
);
);
w=strprintf("N=%d, %0.3fs (%0.3fs in PARI) per round %de%d.",q,(getwalltime()-t0)/1e3,gettime()/1e3,h\10^step10,step10);
print(w); write(log_name, w); \\Вывод статистики на круг по паттернам на экран и в лог потока
);
system("title Finished."); print("Calculations are finished.");}

Я выделила в программе те места, где встречается слово "thread" (поток).
Этих мест чуть больше, чем я увидела раньше, раньше я увидела только первые два места, вот эти
thread = 1; \\Номер потока (с 1 по n_threads включительно)
n_threads = 4; \\Всего потоков
Ну, здесь вроде понятно.
А здесь
forstep(h=start+(thread-1)*step,stop-1,n_threads*step, \\Каждый поток будет перебирать по одному step
менее понятно, но есть комментарий, который поясняет.

Можно и попробовать, прямо так всё и записать в переборной программе.
Как говорится: не боги горшки обжигают.
ID: 9511 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9512 - Posted: 30 Aug 2022, 10:18:35 UTC
Last modified: 30 Aug 2022, 10:38:19 UTC

Ой, в 37-ом комплекте появился файл FOUND14, а в нём 14-ка
1644045397000202097257384783236441:M12-S9-41-M12-S9-41-503214: 12, 32, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, valids=14

правда, дырявая.
Ну ничего, будет и непрерывная :)

Кстати, мне сообщили, что Demis тестировал 37-й комплект (группу из нескольких паттернов, вроде 90).
Правда, о результатах не сообщили.
Может, он тоже нашёл эту 14-ку.

Антон писал в сообщении
https://dxdy.ru/post1563794.html#p1563794
Сравнительно недавно в 23-м комплекте были найдены ещё две 14-ки. Итого, уже 8 новым способом.

Таким образом, найденная мной дырявая 14-ка уже девятая.
Скоро, скоро количество перейдёт в качество - по закону диалектики :)
ID: 9512 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9513 - Posted: 30 Aug 2022, 12:29:26 UTC
Last modified: 30 Aug 2022, 12:49:46 UTC

Антон писал в сообщении
https://dxdy.ru/post1563794.html#p1563794
Сравнительно недавно в 23-м комплекте были найдены ещё две 14-ки. Итого, уже 8 новым способом.

Единственным пустым в этом смысле комплектом остаётся 31-й.

Теперь и 31-й комплект не пустой в этом смысле.
Вот она - красавица 14-ка, найденная в 31-ом комплекте

2596570872606845562606814561185945:M12-N9-42-M12-N9-42-210436: 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,  4, 12, 12, 12, 12, valids=14

Итак, у Ахиллеса на счету уже две дырявые 14-ки, а ведь только сегодня утром начал считать :)
Везучий Ахиллес!
Это потому, что им управляет лёгкая рука :)

Кстати, таблицу, опубликованную здесь
https://dxdy.ru/post1563569.html#p1563569
пора бы обновить.
На настоящий момент уже четыре 14-ки найдены новым способом.

Теперь их, кажется, уже десять.

А хорошо придумали: сразу выводить найденные 14-ки в выходной файл FOUND14.
Цепочек так много выводится, что на экране трудно уследить за найденной 14-й.
ID: 9513 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9515 - Posted: 30 Aug 2022, 12:54:59 UTC

Кстати, о птичках...

В 37-ом комплекте задан очень маленький диапазон
start=1600*10^30;\\Откуда начать
stop=2000*10^30;\\Где закончить (не включая)
step=  200*10^30;\\Сколько отвести на каждый круг перебора паттернов

Если я правильно понимаю, всего два круга по 200*10^30, и сейчас уже идёт второй круг.
Скоро должно завершиться.
ID: 9515 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9516 - Posted: 30 Aug 2022, 13:20:31 UTC

to Антон
Чтобы Ахиллесу не простаивать, прошу заранее сообщить на форуме новый диапазон для 37-го комплекта.
Если я правильно понимаю, заданный в этом комплекте диапазон уже досчитывается.
ID: 9516 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9517 - Posted: 30 Aug 2022, 16:58:15 UTC
Last modified: 30 Aug 2022, 18:43:26 UTC

Итак, первый диапазон в 37-ом комплекте проверен.
Это окончание выходного файла
. . . . . . . . . 
1837910259740858209934178603892441:M12-S9-56-M12-S9-56-451230: 24, 24, 12, 12, 12, 12, 12, 12, 32, 12, 24, 12, 24, 12, 12, valids=10
1813729864199516740335330828796441:M12-S9-56-M12-S9-56-453102: 12, 48, 12, 12, 12, 12, 16, 12, 12, 12, 24, 12, 12, 48, 48, valids=10
1971969345236436752598383541590041:M12-S9-56-M12-S9-56-503124: 12, 16, 48, 24, 12, 12, 12, 12, 12, 12, 12, 12, 12, 48, 24, valids=10
1821864790078707144818613410284441:M12-S9-56-M12-S9-56-523104: 24, 48, 12, 12, 12, 12,  8, 12, 12, 12, 24, 12, 12, 12, 12, valids=11
1987772050885431996663075565607641:M12-S9-56-M12-S9-56-532410:  6, 12, 12, 48, 12, 12, 12, 12, 32, 12, 12, 12, 12, 24, 48, valids=10
1889840529588193393458938978927641:M12-S9-56-M12-S9-56-534210: 12, 24, 12, 12, 12, 12, 12, 12, 64, 12, 12, 12,  6, 24, 12, valids=11
TIME = 43663 seconds
kolshag = 621546608

Найдено 3064 цепочки, в том числе одна дырявая 14-ка и две непрерывные 13-ки (первая показана выше, вторая содержится в 14-ке).
Непрерывные 12-ки пока не проверила.

Результаты вышлю координатору эксперимента.

А сейчас у меня будет эксперимент :)
Попробую многопоточную программу, на 4 потока.
Надеюсь, что всё получится.
Данные о потоках записала в переборную программу по аналогии с программой господина Петухова (см. выше).
Кругов пока возьму не очень много - для эксперимента. Думаю, 4 круга будет в самый раз.
То есть параметры будут такие
start=2000*10^30;\\Откуда начать
stop=2800*10^30;\\Где закончить (не включая)
step=  200*10^30;\\Сколько отвести на каждый круг перебора паттернов

Посмотрим; жутко интересно, как оно распараллелится.

Да, забыла сказать ...
Файлы begin.tmp и end.tmp созданы.
В первом записано
is begin

а во втором
is end

Насколько понимаю, по времени создания этих файлов можно определить, сколько работала программа.
Но ведь в выходной файл выводится время работы программы.
Разве этого времени недостаточно?

PS. Результаты первого диапазона 37-го комплекта Антону отправила.
Есть одна дырявая 14-ка, которая содержит непрерывную 13-ку, и ещё одна непрерывная 13-ка.
ID: 9517 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9518 - Posted: 30 Aug 2022, 17:35:40 UTC

Кажется, многопоточная программа поехала!

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

Ждём результатов.
Напомню: 4 круга по 200е30 в этом прогоне.
К утру должно завершиться.
Главное - сравнить время.
Будет ли выигрыш от многопоточности, и если будет - какой.
ID: 9518 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 14352
Credit: 0
RAC: 0
Message 9519 - Posted: 30 Aug 2022, 18:32:41 UTC
Last modified: 30 Aug 2022, 18:36:52 UTC

Просматривая переписку с Demis, нашла ещё одно письмо о многопоточности, от 2 августа с. г.
Цитата
Посмотрел многопоточность.
Она включается очень просто.
По дефолту, под юниксом, в ней вообще сразу многопоточность включена.

Но вот дальше беда.
Пограмист должен правильным образом переписать свои функции вызова.
И еще, скорее всего, этот момент нужно учитывать и в компилируемых езешниках и вишках...

Попробовал, но ни фига хорошего не получилось.

Ну вот, что из этого следует?
1. "Она включается очень просто".
2. "Но вот дальше беда".

Наблюдаю за работой 37-го комплекта.
Что-то нет никаких признаков убыстрения, по крайней мере, я их не вижу.
Выходной файл пока создался один: M12n15-1.txt. В этот файл и пишутся результаты. На экран они тоже выводятся.
И где выходные файлы для 4-х потоков? Ведь по идее на каждый из 4-х потоков должен быть свой выходной файл.
А нету их, есть только один выходной файл.
Пока ничего непонятно.
Программа работает, никаких ошибок не выдаёт.
Следовательно, всё, что я вставила про потоки, программе понятно.
И то хорошо :)

Однако, в переборной программе Петухова (для поиска 11-ки с 84 делителями) выходной файл тоже создался один, а не четыре.
Может быть, остальные позже создадутся? Я чуть-чуть покрутила эту программу и прервала.

В общем пока всё в тумане, ежик в тумане :)
Нужен знающий человек. А с этим у нас напряжёнка.
Вот господин Петухов, наверное, знает, но не скажет :)
Антон, насколько понимаю, не знает.
Demis тоже не знает.

Итак, эксперимент будет работать до утра.
Утром посмотрю, что там создастся, какие выходные файлы.
И сколько времени будет обрабатываться этот прогон.
Потом придётся этот прогон пересчитать в один поток, как обычно считаю.
Потому что нет никакой уверенности в том, что программа отработает правильно с этим многопоточным режимом.
После пересчёта сравню результаты.
Тогда будет, может быть, какое-то прояснение, покажется ёжик из тумана :)
ID: 9519 · Rating: 0 · rate: Rate + / Rate - Report as offensive
Previous · 1 . . . 49 · 50 · 51 · 52 · 53 · 54 · 55 . . . 129 · Next

Message boards : Cafe : Для участников форума MHP


©2024 (C) Progger