Распараллеливание вложенных циклов

Message boards : Cafe : Распараллеливание вложенных циклов
Message board moderation

To post messages, you must log in.

1 · 2 · 3 · 4 · Next

AuthorMessage
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16291 - Posted: 30 Apr 2025, 12:38:42 UTC
Last modified: 30 Apr 2025, 13:02:00 UTC

Итак, я начинаю :)

Много думала над этим вопросом.
Точнее: мозг думал в автономном режиме.
Время от времени всплывало что-то, что мозг "произвёл".

А недавно обсудила этот вопрос с одним форумчанином с форума Math Help Planet.
Не буду называть его ник; дальше буду писать - коллега.

Очень интересное получилось обсуждение!
Увы, коллега вынес резюме: "Объяснять вы не умеете от слова "совсем".

Ну-у-у...
Мне кажется, что это неверное резюме.

В общем, выложила я ему таблицу

prove by 71#: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
2 1 [1]
3 2 [1,2]
5 2 [2,3]
7 2 [2,3]
11 2 [3,10]
13 2 [9,11]
17 4 [6,7,8,9]
19 8 [1,3,4,6,8,9,17,18]
23 8 [4,6,7,9,15,16,20,21]
29 14 [1,4,6,7,8,9,10,11,12,13,14,15,17,20]
31 14 [2,6,11,15,16,17,18,19,20,21,22,23,24,28]
37 20 [2,3,4,5,7,9,10,12,14,15,16,17,20,23,24,26,30,32,33,36]
41 24 [2,4,7,10,11,13,15,18,19,20,21,22,23,24,25,26,27,28,29,32,34,36,37,40]
43 26 [1,4,5,6,8,10,12,13,14,17,21,23,25,26,27,28,29,30,31,32,33,34,35,36,38,40]
47 30 [2,3,5,6,7,8,9,12,13,16,17,18,20,22,24,25,26,29,30,33,34,35,36,37,39,40,43,44,45,46]
53 36 [1,2,4,5,6,7,10,11,12,13,14,15,18,19,20,21,23,24,26,27,28,30,32,34,35,36,3
7,41,42,43,44,46,48,50,51,52]
59 42 [1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22,24,25,26,29,30,31,33,36,37,3
8,39,40,41,42,43,44,45,46,47,48,49,50,54,56,58]
61 44 [1,3,5,6,7,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,29,30,31,34,35,36,
39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,58,59,60]
67 50 [2,3,4,5,6,7,9,10,11,12,13,15,16,17,18,19,21,22,23,24,25,26,29,30,32,33,35
,36,37,38,39,40,41,42,46,47,48,49,53,54,55,56,57,58,59,60,62,63,65,66]
71 54 [1,2,3,4,6,7,8,10,11,12,13,14,15,17,18,19,20,21,23,24,25,26,27,29,30,31,32
,33,34,36,37,38,40,41,42,43,45,46,48,49,51,53,54,55,56,59,60,61,62,64,66,67,69,70]
107981681700372480000 formulae expected

И говорю: это вложенные циклы.
Он отвечает: "Это не циклы, как я понимаю циклы в программировании".

Я отвечаю: "Ну да, это данные для циклов, а не запись самих циклов."
Дальше поясняю, что такое - данные для циклов.
Первое число - модуль.
Второе число - количество разрешённых остатков.
И далее в квадратных скобках сами разрешённые остатки.

Он это объяснение проигнорировал и опять пишет: "В циклах нет таких понятий, как модуль, разрешённые остатки. Эти понятия взяты вообще не из программирования."

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

Я рекомендовала ему посмотреть мою тему на форуме MHP
https://mathhelpplanet.com/viewtopic.php?f=59&t=77621

Она как раз об этом.
Может, объяснения форумчанина в этой теме ему покажутся понятными, если мои объяснения совсем непонятны.

Кстати, тему зачем-то переименовала самодура модераторша; я так тему не называла!
И засунула её в раздел "Объявления участников форума".
Как только она надо мной не изгалялась!
ID: 16291 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16292 - Posted: 30 Apr 2025, 12:53:45 UTC
Last modified: 30 Apr 2025, 17:24:02 UTC

Давайте посмотрим на простенький пример из указанной выше темы с форума MHP

2: (1)
3: (2,1)
5: (3,2)
7: (3,2)
11: (10,3)
13: (11,9)
17: (9,8,7,6)

Здесь модулей поменьше, соответственно и вложенных циклов поменьше.

Модули - это простые числа по порядку.
Количество разрешённых остатков здесь не указано.
Сами разрешённые остатки указаны в круглых скобках.

Я предлагала коллеге рассмотреть простой пример, но он сказал: "Давайте закончим. Объяснять вы не умеете ...".
Ну, закончили, значит :)

А чего здесь объяснять-то?
По-моему и ежу понятно, где здесь вложенные циклы и как они считаются.

Я объяснила коллеге, что в циклах вычисляются некоторые числа (мы называем их добавки), которые определяются как раз приведёнными данными (модули и разрешённые остатки).
Для вычисления добавок есть специальная функция в PARI/GP.
Есть такая функция и в Вольфрам Альфа; очень давно я ею и пользовалась, тогда ещё не знала про функцию в PARI/GP.

Но до функции мы не дошли :)

Интересный момент: пока коллеге объясняла, в чём задача, решение начало проклёвываться в мозгу.
Так иногда бывает.

А вам господа, понятно, о каких вложенных циклах идёт речь?
Буду рада, если отзовётесь.
ID: 16292 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16293 - Posted: 30 Apr 2025, 12:57:49 UTC

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

Здесь будет всего 128 формул (добавок).
Их можно вычислить один раз и сохранить, а потом пользоваться ими всегда, а не вычислять каждый раз заново.

В той программе, которую пишу сейчас, всё гораздо сложнее.
ID: 16293 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16294 - Posted: 30 Apr 2025, 13:06:42 UTC
Last modified: 30 Apr 2025, 14:42:42 UTC

Посмотрите, пожалуйста, на картинку на главной странице BOINC-проекта SPT



Вы увидите на ней ту самую функцию в PARI/GP, которая вычисляет добавки.

Увидели?
Вторая строка.

В этой функции указываются модули и соответствующие разрешённые остатки.
При этом берётся набор всех модулей и все комбинации разрешённых остатков.
Вот они и циклы.

Mod(1,2) означает разрешённый остаток 1 для модуля 2.
Mod(2,3) означает разрешённый остаток 2 для модуля 3.

И так далее.
ID: 16294 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16295 - Posted: 30 Apr 2025, 13:32:04 UTC
Last modified: 30 Apr 2025, 13:39:19 UTC

Для этого примера

2: (1)
3: (2,1)
5: (3,2)
7: (3,2)
11: (10,3)
13: (11,9)
17: (9,8,7,6)

функция для вычисления первой добавки запишется так

lift(chinese([Mod(1,2),Mod(2,3),Mod(3,5),Mod(3,7),Mod(10,11),Mod(11,13),Mod(9,17)]))

Разрешённые остатки взяты так, как они указаны в круглых скобках.

Вычисленная этой функцией добавка равна 29963.

Давайте напишем функцию для вычисления второй добавки

lift(chinese([Mod(1,2),Mod(2,3),Mod(3,5),Mod(3,7),Mod(10,11),Mod(11,13),Mod(8,17)]))

Вычисленная добавка равна 90023.

Наконец, для вычисления последней (128-й) добавки функция запишется так

lift(chinese([Mod(1,2),Mod(1,3),Mod(2,5),Mod(2,7),Mod(3,11),Mod(9,13),Mod(6,17)]))

Вычисленная этой функцией добавка равна 480307.

Господа, это понятно объяснила?
ID: 16295 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16296 - Posted: 30 Apr 2025, 13:44:26 UTC

Кстати, здесь
https://mathhelpplanet.com/viewtopic.php?p=445508#p445508
форумчанин выложил 128 добавок для приведённого простого примера.

Это вычислила его программа, написанная на Питоне.
Интересно, что у него добавки вычислены в порядке возрастания.
Может, он их после вычисления отсортировал?

В общем случает добавки вычисляются не по порядку.
ID: 16296 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16297 - Posted: 30 Apr 2025, 13:47:34 UTC
Last modified: 30 Apr 2025, 14:45:13 UTC

Ну, с простым примером всё вроде понятно.

Не знаю, как вам, а мне понятно :)

Теперь перехожу к текущему варианту программы.
Здесь паттерн 23-ки и период равен 71#.

Рассмотрим сначала для одного паттерна (а не сразу для 88 паттернов), вот для этого

[0, 24, 78, 84, 90, 108, 120, 150, 168, 174, 198, 204, 210, 234, 240, 258, 288, 300, 318, 324, 330, 384, 408]

Таблица данных для вложенных циклов

prove by 71#: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
[1]
[1, 2]
[3, 4]
[2, 3]
[3, 7]
[3, 5]
[8, 9]
[1, 9]
[1, 5, 12, 17]
[4, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23]
[1, 2, 6, 20, 24, 25, 27, 28, 29, 30]
[2, 4, 5, 6, 7, 10, 14, 16, 20, 22, 26, 29, 30, 31, 32, 34]
[5, 8, 9, 11, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 27, 30, 32, 34, 35, 38]
[6, 7, 10, 12, 15, 16, 23, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 4
0, 42]
[2, 3, 6, 7, 8, 9, 12, 13, 17, 18, 19, 22, 26, 27, 28, 30, 32, 34, 35, 36, 40, 4
3, 44, 45]
[1, 3, 4, 5, 6, 10, 11, 12, 13, 15, 17, 19, 20, 21, 23, 24, 26, 27, 32, 33, 34,
35, 36, 37, 42, 43, 45, 46, 48, 49, 50, 52]
[1, 4, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 31, 33, 39,
 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 56, 58]
[1, 3, 6, 7, 8, 11, 12, 13, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 35, 39, 41, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60]
[1, 2, 4, 6, 7, 8, 9, 12, 13, 15, 16, 19, 20, 21, 22, 23, 24, 25, 29, 30, 31, 32
, 36, 37, 38, 39, 40, 41, 42, 45, 46, 48, 49, 52, 53, 54, 55, 57, 59, 60, 62, 63
, 65, 66]
[1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 23, 24, 27, 28, 29
, 30, 32, 33, 35, 36, 38, 40, 41, 43, 46, 48, 49, 51, 53, 54, 56, 57, 59, 60, 61
, 62, 65, 66, 68, 69, 70]
959765417872588800 formulae expected

Тут не указаны модули и количество разрешённых остатков.
Сейчас я это исправлю.

Сами разрешённые остатки в квадратных скобках.

Количество формул (добавок)
959765417872588800 formulae expected
.
ID: 16297 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16298 - Posted: 30 Apr 2025, 13:57:20 UTC
Last modified: 30 Apr 2025, 13:57:31 UTC

Ну, с модулями всё просто, они перечислены здесь
prove by 71#: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]

А разрешённые остатки просто надо посчитать в квадратных скобках и написать их количество для каждого модуля.
ID: 16298 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16299 - Posted: 30 Apr 2025, 14:17:56 UTC
Last modified: 30 Apr 2025, 14:21:48 UTC

Таблица данных для вложенных циклов готова

prove by 71#: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
2 1 [1]
3 2 [1, 2]
5 2 [3, 4]
7 2 [2, 3]
11 2 [3, 7]
13 2 [3, 5]
17 2 [8, 9]
19 2 [1, 9]
23 4 [1, 5, 12, 17]
29 12 [4, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23]
31 10 [1, 2, 6, 20, 24, 25, 27, 28, 29, 30]
37 16 [2, 4, 5, 6, 7, 10, 14, 16, 20, 22, 26, 29, 30, 31, 32, 34]
41 20 [5, 8, 9, 11, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 27, 30, 32, 34, 35, 38]
43 22 [6, 7, 10, 12, 15, 16, 23, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 42]
47 24 [2, 3, 6, 7, 8, 9, 12, 13, 17, 18, 19, 22, 26, 27, 28, 30, 32, 34, 35, 36, 40, 43, 44, 45]
53 32 [1, 3, 4, 5, 6, 10, 11, 12, 13, 15, 17, 19, 20, 21, 23, 24, 26, 27, 32, 33, 34, 35, 36, 37, 42, 43, 45, 46, 48, 49, 50, 52]
59 36 [1, 4, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 31, 33, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 56, 58]
61 38 [1, 3, 6, 7, 8, 11, 12, 13, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 35, 39, 41, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60]
67 44 [1, 2, 4, 6, 7, 8, 9, 12, 13, 15, 16, 19, 20, 21, 22, 23, 24, 25, 29, 30, 31, 32, 36, 37, 38, 39, 40, 41, 42, 45, 46, 48, 49, 52, 53, 54, 55, 57, 59, 60, 62, 63, 65, 66]
71 48 [1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 23, 24, 27, 28, 29, 30, 32, 33, 35, 36, 38, 40, 41, 43, 46, 48, 49, 51, 53, 54, 56, 57, 59, 60, 61, 62, 65, 66, 68, 69, 70]
959765417872588800 formulae expected

Проверим

1*2*2*2*2*2*2*2*4*12*10*16*20*22*24*32*36*38*44*48 = 959765417872588800

Произведение всех количеств разрешённых остатков даёт количество формул (добавок).
Всё верно, не ошиблась в подсчёте количеств разрешённых остатков.

Вы можете проверить.
ID: 16299 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16300 - Posted: 30 Apr 2025, 14:30:02 UTC
Last modified: 1 May 2025, 10:43:34 UTC

А теперь представьте, как можно вычислить и сохранить все 959765417872588800 добавок.

Нереально.

Ну, если есть мощный компьютер с хорошими ОЗУ и ПЗУ, можно, наверное.
Но весьма проблематично.

Поэтому в программе добавки генерируются и на лету проверяются в нужных формулах.
И программа, разумеется, будет работать о-ч-е-н-ь долго, и поэтому я называю её "бесконечной".

А теперь я хочу получить конечные программы путём распараллеливания.

Мы с gris немного занимались этим вопросом.
Получили некоторое распараллеливание, то есть разбили всю программу на несколько программ, в каждой из которых вычисляется часть всех добавок.
Но разбиение получилось недостаточное, каждая частичная программа снова "бесконечная".

Надо думать, как разбить на более мелкие части, чтобы программа на одну часть выполнялась за реальное время, а не была "бесконечной".

Кстати, у Corporal работают 36 "бесконечных" программ; поиск 19-ки с минимальным диаметром в нулевом периоде на периоде 71#.
Их было всего 52, 16 были запущены мной, но вылетели, когда компьютер завис.
Да, очень трудно обеспечить "бесконечность".
Интересно, как долго Corporal продержится.

Смотрите тему о "бесконечных" программах
https://boinc.progger.info/odlk/forum_thread.php?id=313
ID: 16300 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16301 - Posted: 30 Apr 2025, 15:43:31 UTC
Last modified: 30 Apr 2025, 16:04:50 UTC

А теперь самый интересный момент: пишу функцию для вычисления первой добавки по показанной выше таблице

lift(chinese([Mod(1,2),Mod(1,3),Mod(3,5),Mod(2,7),Mod(3,11),Mod(3,13),Mod(8,17),Mod(1,19),Mod(1,23),Mod(4,29),Mod(1,31),Mod(2,37),Mod(5,41),Mod(6,43),Mod(2,47),Mod(1,53),Mod(1,59),Mod(1,61),Mod(1,67),Mod(1,71)]))

Вычисленная добавка
47191807279675612082643403.

Запускаю программу gris для определения номера добавки

Программа выдаёт

(15:15) gp > \r number_form_old.txt
   logfile = "number_form_old_res.txt"
[0,24,78,84,90,108,120,150,168,174,198,204,210,234,240,258,288,300,318,324,330,384,408] pattern L=23
557940830126698960967415390 period
[1, 2, 2, 2, 2, 2, 2, 2, 4, 12, 10, 16, 20, 22, 24, 32, 36, 38, 44, 48]
form= 47191807279675612082643403
prs: [  2,  3,  5,  7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
frs: [  1,  1,  3,  2,  3,  3,  8,  1,  1,  4,  1,  2,  5,  6,  2,  1,  1,  1, 1,  1]
prm: [  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 1,  1]
form number is 1

Да!
Эта добавка первая
form number is 1

Прекрасно!
ID: 16301 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16302 - Posted: 30 Apr 2025, 15:52:08 UTC
Last modified: 30 Apr 2025, 15:52:49 UTC

Ну вот, решение о распараллеливании вложенных циклов уже почти на ладони :)

Господа!
А ведь интересная задачка.

Очень жаль, что коллега с MHP не захотел её решать, то есть просто не захотел, а не потому. что плохо я объяснила, и он ничего не понял.

gris у меня пропал :(
Он бы заинтересовался этой задачкой, тем более что мы её уже решали с ним.
Писал недели три назад, что приболел, что-то типа ОРЗ.
Ну, ОРЗ сейчас может и ковидом оказаться.
На форуме MHP не появляется с 19 апреля.
ID: 16302 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16303 - Posted: 30 Apr 2025, 15:58:25 UTC

Господа!

Если кто-то заинтересовался задачей, а писать здесь не может, пишите, пожалуйста, мне в домашний ящик.
Адрес не изменился
natalimak1@yandex.ru

Программа большая и сложная, 88 паттернов 23-к в ней должны проверяться.
ID: 16303 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16304 - Posted: 30 Apr 2025, 17:40:57 UTC
Last modified: 30 Apr 2025, 17:48:19 UTC

Пока я тут теоретизировала, одна из "бесконечных" программ нашла центральную 11-ку !!!

Вот она красавица

515461785794534460064127353: [0, 30, 48, 54, 78, 84, 90, 114, 120, 138, 168]
[0, 6, 36, 96, 102, 120, 132, 162, 180, 186, 210, 216, 222, 246, 252, 270, 300, 312, 330, 336, 396, 426, 432]

Рядом с ней указан паттерн 23-ки, по которому она найдена.

Ну, я ведь нисколько и не сомневалась, что центральная 11-ка найдётся.
И не только центральная 11-ка.

Жду центральную 13-ку.
Это ручной проект, господа!
Это поиск в 23-ах.
И пока ещё не задействованы в поиске все 88 паттернов.
ID: 16304 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16307 - Posted: 1 May 2025, 11:02:09 UTC
Last modified: 1 May 2025, 11:04:22 UTC

И ещё одна центральная 11-ка нашлась у меня от 23-к!

428548969620875213447637163: [0, 30, 48, 54, 78, 84, 90, 114, 120, 138, 168]
[0, 30, 84, 90, 96, 114, 126, 156, 174, 180, 204, 210, 216, 240, 246, 264, 294, 306, 324, 330, 336, 390, 420]

Замечательно!

Это по другому паттерну нашлась центральная 11-ка.

Я пока запустила на Ахиллесе-3 несколько потоков, в каждом "бесконечная" программа для одного паттерна.
ID: 16307 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16308 - Posted: 1 May 2025, 11:49:02 UTC
Last modified: 1 May 2025, 11:50:48 UTC

Вот сняла центральные 9-ки с Ахиллеса-3, все различные, отсортированы, 114 штук; это найдено от 23-к

1303704553013120341978333, 6965011711112622409897093, 8993935518039227039504113, 10550754398128371860967973, 12218028520090092815229553, 13648371239685675482614063, 15300930083411722648292833, 15485157231007224217747183, 18316464971152997090886883, 18787379296655779518268453, 28592857979675931746469103, 41560657365012722249372953, 47976139211767158576608863, 54178131475873783460406763, 56446774241189063055648763, 56748475068290468099847103, 62067873467692603836214783, 62634009835437320375850193, 67486513969425512182876093, 68118771856208131938403963, 70124570645298372176257723, 73137065213078651250620593, 87698133411422639683422283, 89218454129122147966120423, 91124213299776878008542193, 96492937619612991466139023, 101727308330785674810327493, 118215801110330834950794193, 142402850129038571501623633, 148295617605157358633251393, 149830135939124019733453993, 151441043828069890579128883, 162512895180026427260233903, 165656594475438496857947413, 167312157610930616293854283, 171827408629417582174027333, 176250933259508465101868563, 182878611188323712978730853, 184067576541792216872122963, 185059478020175434741990363, 187520485296383298838172833, 197077777856499921131720863, 205798992077874334658293213, 206167779925234588179162883, 207979646728102993828809163, 212098689647151632059799503, 216580962370783354788714163, 224630390020906699819669573, 225967300707441567994484203, 236363681548051046358903973, 250367168273174598472226293, 260934083414158936657219783, 278971717233996053944316533, 281115211771256148768586543, 281155669933324696200790993, 282771586975287606688286233, 283320167989212209150319463, 283458248950532531924032423, 285268136796090661504025173, 287466468030139994920568683, 291429624871169872812559273, 297196937653383592499178943, 297937823205730836597413383, 302575835234780842418968723, 305354289553871276230391773, 323834640769523229010449223, 325711950474405506245929133, 326926764222560055124195063, 329384978047363149713706343, 330156818663710139388727333, 342273294603541145959664443, 348637833032886669023726413, 351829957145623674997258873, 354230043422130313249721803, 354305301833582225838386113, 362839274132106980549225323, 364857978462852505300234003, 377557184870668140817053013, 381229050585624535844670013, 381707852194710393858430363, 386747625200845251981597853, 401529312855886046924516863, 402275959229863458475990693, 413916844930469593865847133, 417956635086137546970365233, 425162552946188165810235973, 428548969620875213447637193, 432844243805563165602316183, 433176275062035177048200263, 433964729384987076707855863, 435992534753140406076469873, 445846364368302270052914673, 447227085355876736108368063, 450074047317211640691922993, 454592320944916630816564663, 459398035748129956508735143, 463438388188388570174091313, 470987520869251653139216783, 474040459028746778518884973, 476972856062538954128094523, 480993278159700959614415893, 482558163149097853194126643, 485836782665043826868866453, 487664226503099013091768483, 490018713282406353220189453, 503920572112855871746377043, 515461785794534460064127383, 518076657460934841835260133, 520434484085627883338551423, 532780141040293063236358933, 534658956614997652386022513, 546344456592909966558050923, 555500192090658955704648523, 555934352508320091214192723

Может, пригодятся для дальнейших исследований.

Две из них матрёшечные, то есть продолжились до центральной 11-ки.
Две центральные 11-ки показаны выше.
ID: 16308 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16309 - Posted: 1 May 2025, 11:55:29 UTC

Над распараллеливанием мозг продолжает работать в автономном режиме :)
То есть он думает, а я при этом занимаюсь другими делами.

Надо ещё для каждого паттерна все данные найти для циклов.
Программ у меня много, которые gris писал (для генерирования добавок).
Одни программы выводят все данные, а другие - не все (не указаны модули и количества разрешённых остатков).
Ну, эта проблема легко решается.
ID: 16309 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16311 - Posted: 1 May 2025, 16:28:55 UTC

Ура!
Мне удалось сочинить первую конечную часть работы вложенных циклов.
Эта часть работала на Ахиллесе-3 всего 34 минуты.

? \r 23_71_0period_part.txt
   log = 1 (on)
   [logfile is "23_71_0period_part_res.txt"]
sgenerirovano dobavok 92454912
time = 34min, 59,219 ms.

В этой части сгенерировано добавок 92454912.

В общем, я понимаю, как работают вложенные циклы и вручную могу сделать много конечных частей.
Однако... сделать все части вручную проблематично.
Надо придумать хоть какую-то автоматизацию.
Это пока не придумывается.
ID: 16311 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16312 - Posted: 1 May 2025, 16:48:18 UTC

Запустила часть побольше, в этой части по моим подсчётам должно сгенерироваться 2218917888 добавок (в 24 раза больше, чем в проверенной маленькой части).

Соответственно и время должно увеличиться примерно в 24 раза, и это будет более 12 часов.
Ну, я не в BOINC-проекте, так что мне можно такое время потратить на одну часть.
Главное, что часть стала конечная, выполняется за реальное время.

Ждём, что будет в этой части.

Кстати, в первой маленькой части не найдены даже центральные девятки.

Очень интересно экспериментировать!
ID: 16312 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
Profile Natalia Makarova
Project scientist
Avatar

Send message
Joined: 6 Apr 17
Posts: 15208
Credit: 0
RAC: 0
Message 16313 - Posted: 2 May 2025, 7:31:18 UTC
Last modified: 2 May 2025, 7:37:09 UTC

Эх, вчера вечером в большой части сделала ошибку.

Зря программа ночь крутилась.
Сегодня утром исправила и запустила снова.
Теперь центральные 9-ки пошли.
Вроде всё нормально.

Итак, всё определяется этими векторами (номер вектора соответствует модулю)

v2=[1]; \\1
v3=[1, 2]; \\2
v5=[3, 4]; \\2
v7=[2, 3]; \\2
v11=[3, 7]; \\2
v13=[3, 5]; \\2
v17=[8, 9]; \\2
v19=[1, 9]; \\2
v23=[1, 5, 12, 17]; \\4
v29=[4, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 23]; \\12
v31=[1, 2, 6, 20, 24, 25, 27, 28, 29, 30]; \\10
v37=[2, 4, 5, 6, 7, 10, 14, 16, 20, 22, 26, 29, 30, 31, 32, 34]; \\16
v41=[5, 8, 9, 11, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 27, 30, 32, 34, 35, 38]; \\20
v43=[6, 7, 10, 12, 15, 16, 23, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 42]; \\22
v47=[2, 3, 6, 7, 8, 9, 12, 13, 17, 18, 19, 22, 26, 27, 28, 30, 32, 34, 35, 36, 40, 43, 44, 45]; \\24
v53=[1, 3, 4, 5, 6, 10, 11, 12, 13, 15, 17, 19, 20, 21, 23, 24, 26, 27, 32, 33, 34, 35, 36, 37, 42, 43, 45, 46, 48, 49, 50, 52]; \\32
v59=[1, 4, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 31, 33, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 56, 58]; \\36
v61=[1, 3, 6, 7, 8, 11, 12, 13, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 35, 39, 41, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60]; \\38
v67=[1, 2, 4, 6, 7, 8, 9, 12, 13, 15, 16, 19, 20, 21, 22, 23, 24, 25, 29, 30, 31, 32, 36, 37, 38, 39, 40, 41, 42, 45, 46, 48, 49, 52, 53, 54, 55, 57, 59, 60, 62, 63, 65, 66]; \\44
v71=[1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 23, 24, 27, 28, 29, 30, 32, 33, 35, 36, 38, 40, 41, 43, 46, 48, 49, 51, 53, 54, 56, 57, 59, 60, 61, 62, 65, 66, 68, 69, 70]; \\48

Закомментированы количества разрешённых остатков.

Напомню: это для одного паттерна 23-ки, вот этого
0,24,78,84,90,108,120,150,168,174,198,204,210,234,240,258,288,300,318,324,330,384,408

Это самый первый паттерн в списке из 88 паттернов.

Задаю циклы

for(i47=1,24,
for(i53=1,32,
for(i59=1,36,
for(i61=1,38,
for(i67=1,44,
for(i71=1,48,

и функцию для вычисления добавок в таком виде

lift(chinese([Mod(1,2),Mod(1,3),Mod(3,5),Mod(2,7),Mod(3,11),Mod(3,13),Mod(8,17),Mod(1,19),Mod(1,23),Mod(4,29),Mod(1,31),Mod(2,37),Mod(5,41),Mod(6,43),Mod(v47[i47],47),Mod(v53[i53],53),Mod(v59[i59],59),Mod(v61[i61],61),Mod(v67[i67],67),Mod(v71[i71],71)]))

И всё!
Конечная часть готова!

Здесь будет сгенерировано
24*32*36*38*44*44 = 2218917888
добавок.
Прекрасно!

И эта часть должна работать на моём Ахиллесе примерно 13-14 часов.

Она уже работает.
Посмотрим, какое будет время.

А дальше ещё ровно 21 раз делаем точно такие же части по этой линейке

v43=[6, 7, 10, 12, 15, 16, 23, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 42]; \\22

Первый разрешённый остаток (6) уже задействован в текущей части.

Ну вот, 22 конечные части сделала шутя.

А теперь можно сделать такие же 22 конечные части для остальных 87 паттернов.
Вручную делать программы на эти части очень нудно.
А как сделать иначе?
Как автоматизировать?

Господа!
У вас есть предложения?

Всего, значит, почти готовы 22*88=1936 конечных частей.
ID: 16313 · Rating: 0 · rate: Rate + / Rate - Report as offensive     Reply Quote
1 · 2 · 3 · 4 · Next

Message boards : Cafe : Распараллеливание вложенных циклов


©2025 (C) Progger