Message boards :
Cafe :
Поиск КПППЧ в нулевом периоде
Message board moderation
Previous · 1 · 2 · 3 · 4 · 5 · 6 . . . 11 · Next
Author | Message |
---|---|
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Теперь у меня центральные 13-ки ищутся алгоритмом поиска в нулевом периоде для периодов 53#, 59# и 61#. Но для периодов 53# и 59# по-другому программа написана: ищутся Norm-числа и выводятся порциями по 10000 в выходные файлы. Потом я эти Norm-числа проверяю на valids утилитой. Это очень быстро делается. Но всё же лучше делать это прямо в программе, что я и реализовала для периода 61#. Первые две программы теперь уже не переделаешь, они давно работают и до какай добавки они дошли - одному Богу известно. Последняя проверенная добавка известна. Можно написать программу, которая посчитает, сколько было сгенерировано добавок до последней проверенной. А дальше что? Можно попытаться начать программу с найденного номера добавки, но до этой добавки генерация будет выполняться вхолостую и... о-ч-е-н-ь долго. Так что, пусть эти программы работают, как есть. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
По вопросу распараллеливания... gris получил консультацию от друга. Публикую с разрешения. ...Распараллелить по порядку формирования формул (не по их величине) вполне возможно. Помнишь, как до знакомства с forvec ты его делал через вложенные циклы. Распечатай векторы остатков для данного паттерна и критерия. Прочитала, перечитала... Увы, ничего не поняла :( Потому что генерацию добавок писал gris, и я в этом абсолютно не разбираюсь. Возможно, консультация будет кому-то полезна. Меня обрадовало это Распараллелить по порядку формирования формул (не по их величине) вполне возможно. Значит, есть надежда. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Ахиллес-3 шпарит! . . . . . . . . 9971025156794972194321: [0, 12, 42, 48, 66, 90, 96, 102, 126, 132, 148, 150, 192] valids=10 number form=1119486387 37483735944286251964741: [0, 12, 46, 60, 78, 90, 96, 102, 126, 148, 150, 180, 192] valids=10 number form=1362607979 73042533333612890471821: [0, 12, 52, 60, 78, 90, 96, 102, 126, 132, 172, 180, 192] valids=10 number form=1625438270 10345156392605877807361: [0, 12, 42, 60, 78, 90, 96, 102, 106, 132, 178, 180, 192] valids=10 number form=1660261071 46190003030359500726811: [0, 12, 42, 46, 88, 90, 96, 102, 126, 132, 150, 180, 192] valids=11 number form=1752483390 Последнее приближение с valids=11, хорошенькое :) Добавочка, давшая приближение 46190003030359500726811, 1752483390-я. Количество сгенерированных добавок приближается к 2 миллиардам!! Сейчас разверну последнее приближение для проверки. Готово! {46190003030359500726811, 46190003030359500726823, 46190003030359500726853, *46190003030359500726857, *46190003030359500726899, 46190003030359500726901, 46190003030359500726907, 46190003030359500726913, 46190003030359500726937, 46190003030359500726943, 46190003030359500726961, 46190003030359500726991, 46190003030359500727003} Всё верно. Две "дырки" рядышком. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Цитата из письма gris Так у вас программа действует, попробуйте там вставить всего одну строчку. Хех! У меня сейчас действуют, как минимум, программ 10: для 13-к, 15-к, 17-к, на разных периодах и по-разному реализованные. Хорошо, отправляю gris самую последнюю версию, центральные 13-ки на периоде 61#. Прошу "вставить одну строчку" в эту программу. Получаю очень пространное разъяснение, что куда надо вставить. Вот оно Вот блок формирования массива остатков М-да! Как можно разделить генерацию формул? Вот с этого момента я пас! Ничего не могу вставлять вручную, потому что блок этот для меня сплошной туман. Ну, как я и предполагала, вставкой одной строчки не обошлось. Итак, для периода 61# получилось 48 отдельных программ, которые можно запускать отдельно хоть на разных компьютерах. Замечательно! Как я понимаю, для периода 53# отдельных программ должно получиться меньше. Цитата из моего письма Могу прислать вам программу для 53#, которая тоже работает. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Ответ gris полностью Ну вот для 53 И мой ответ тоже полностью. >Если мы генерацию разделим по 53 на 40 частей, то никакого эффекта мы не получим. Дело в том, что как ни распараллеливай и не разделяй общее количество добавок не изменится. Смысл только в том, чтобы не было повторной генерации. Но при таком количестве добавок... |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Ещё раз перечитываю Ну вот для 53 Поняла только вот что: всю генерацию можно разделить на отдельные части по остаткам для простого 53, которых 40 штук. Тогда в каждой части будет генерироваться 145544026521600/40 добавок. И отдельно будет выполняться каждая из этих 40 частей (отдельные программы?). Далее, каждую из этих 40 частей можно разбить ещё по остаткам простого 47, которых 34 штуки. Тогда в каждой новой части будет генерироваться 145544026521600/(40*34) добавок. И надо будет отдельно выполнять генерацию 1360 частей (отдельных программ?). Если я правильно понимаю, при таком разделении генерация будет выполняться полностью и правильно, без потерь. Так, для BOINC разбиение вполне годится. Можно идти и дальше: каждую из 1360 частей разбить на 30 частей по остаткам простого 43. Теперь в каждой части будет генерироваться 145544026521600/(40*34*30) добавок. А частей будет 40800. Ну, то бишь вушки. Пока ещё слишком крупные. Можно ещё разделить. Понятно, что процесс разделения надо максимально автоматизировать, вручную разбивать - сдохнуть можно. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
gris писал Причём программы работают независимо друг от друга и хоть на разных компьютерах. Очень хорошо! В BOINC программы и будут выполняться на разных компьютерах. Ну что же, путь решения задачи проложили. Осталось запустить BOINC-проект. И начать сразу с поиска ключевых 17-к, они ближе всех к 19-ке с минимальным диаметром - всего один шаг, одно продолжение. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
И всё же это не многопоточный режим в полном смысле этого понятия. Пишут, что PARI/GP поддерживает многопоточный режим (Макс Алексеев, например). Вот я хочу запустить свою программу на Ахиллече-3, у которого 20 ядер. При этом ничего не должно делаться вручную. Если многопоточный режим поддерживается, значит, ключ есть для запуска в многопоточном режиме. Я так понимаю. Ну, допускаю, что в программе надо что-нибудь вручную подкорректировать, но не 40 же отдельных программ делать вручную! И каждую из них отдельно запускать. Или, к примеру, как выполнить эту программу на кластере? В кластере, пишут, 1000 потоков. И как же распараллелить программу на эти 1000 потоков? Сама же она вряд ли распараллелится, надо дать ей какие-то инструкции для распараллеливания. Или BOINC опять же. Вон программа Белышева распараллеливается ведь! Да, сделана программка для генерации вушек, то есть как раз для распараллеливания всего процесса на отдельные задания. Точно так же можно что-то придумать для распараллеливания моей программы, не вручную, а с помощью специальной программы. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
gris писал В общем, мне наговорили много про распараллеливание и когда оно эффективно, но я тоже ничего не понял. Только то, что это пустая затея:((( А с этим категорически не согласна! В проекте по ОДЛК (в ручном режиме) у нас был эксперимент для коллективных вычислений. Demis делал многопоточную программу. (из программы Белышева, там тоже Белышев создал много разных программ). И она прекрасно работала даже на моей черепашке, которая имела всего два ядра! Томаш прекрасно делал многопоточные программы. При этом, насколько помню, у него программа сама определяла, на сколько потоков можно распараллелить (по количеству ядер на компьютере). И даже г. Петухов делал многопоточную программу на PARI/GP в проекте Hugo. Я пыталась в ней разобраться, но ничего не поняла. Однако не сделала вывод, что это полная фигня. Если я чего-то не понимаю, это не значит, что фигня. Это просто значит, что знаний у меня маловато. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Симпатичное приближение к центральной 13-ке с симметричным расположением "дырок", с центральной тройкой 1196793018180911235481: [0, 12, 42, 60, 78, 90, 96, 102, 106, 132, 150, 180, 192] 1196793018180911235481: [0, 0, 0, 0, 12, 0, 0, 0, -20, 0, 0, 0, 0] 1196793018180911235481: [1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1] valids=11 code=1911 Приближения с valids=11 появляются часто, приближения с valids=12 перестали появляться. Интересно: приближение такой структуры повторилось! 1901839925687961984121: [0, 12, 42, 60, 70, 90, 96, 102, 112, 132, 150, 180, 192] 1901839925687961984121: [0, 0, 0, 0, 4, 0, 0, 0, -14, 0, 0, 0, 0] 1901839925687961984121: [1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1] valids=11 code=1911 |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Это поиск центральных 13-к в нулевом периоде для периода 61# . . . . . . . . . . . 50172997802302450229551: [0, 12, 42, 60, 82, 90, 96, 102, 112, 132, 166, 180, 192] valids=10 number form=2120291203 99371126129221482670531: [0, 12, 42, 46, 48, 90, 96, 102, 126, 132, 166, 180, 192] valids=10 number form=2664119502 8870875288013458664341: [0, 18, 42, 60, 66, 82, 96, 102, 126, 132, 150, 190, 192] valids=10 number form=2916943946 61679718783070275822331: [0, 12, 60, 70, 82, 90, 96, 102, 126, 132, 150, 180, 192] valids=10 number form=3310734939 52422823391745621829411: [0, 12, 46, 52, 66, 90, 96, 112, 126, 132, 150, 180, 192] valids=10 number form=3698204579 33932347551674762394601: [0, 12, 42, 60, 66, 90, 106, 112, 126, 132, 150, 178, 192] valids=10 number form=4270044148 . . . . . . . . . Очень интересно! Стабильно идут приближения с valids=10, очень редко появляются приближения с valids=11. Обратите внимание: последняя добавка, давшая приближение, имеет номер 4270044148. Сгенерировано и проверено более 4 миллиардов добавок! Да, счёт пошёл на миллиарды. Если бы распараллелить программу и запустить хотя бы 10 отдельных частей, счёт пошёл бы на десятки миллиардов. gris расписал алгоритм разделения, для периода 61# можно легко (!) сделать 48 отдельных частей. Не обязательно делать и запускать все 48 отдельных программ, можно запустить, например, всего 10 программ. Убыстрение поиска будет в 10 раз! Но всё осталось на уровне разговора, как легко сделать. Вердикт gris: пустая затея! |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Ещё раз перечитала рассказ gris о "разделении". Пытаюсь вникнуть. 61 48 [2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,21,22,23,24,25,27,28,29,30,31,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,53,54,55,58,59,60] В блок генерации добавок надо вставить строчку, выделенную красным for(ip=1,nw, rip=[]; for( r=1,prs[ip]-1, for( i=1,pl, if( (r+pt[i])%prs[ip]==0, next(2))); rip =concat(rip,r) ); if( prs[ip]==61, rip=[2]); lpr=lpr*#rip; printf("%d %d %d\n", prs[ip], #rip,rip); wd[ip]=rip; ); \\for ip print(lpr," formulae expected"); Тэк-с, вроде понятно, при этом будут генерироваться добавки только для остатка 2 для простого 61. Сейчас попробую :) Вставлю такую строку if( prs[ip]==61, rip=[4]); И у меня будут генерироваться добавки для остатка 4 для простого 61. Да? Пошла пробовать. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Программа запустилась! Ура! break[4]> \r 13porc_61_valids_test_gris.txt logfile = "13porc_61_valids_test_gris_res.txt" 0 from number 0 to В number [0,12,42,60,66,90,96,102,126,132,150,180,192] patterns length 13 117288381359406970983270 period search in 0 (0.E-19) - 117288381359406970983270 (1.2 E23) central 3: [90,96,102] prove by 61#: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61] 6695025219993600 formulae expected Ждём вывода приближений. Цитата из письма gris 6695025219993600 formulae expected Да, у меня тоже показывает 6695025219993600 formulae expected Значит, всё правильно, генерируется 48-я часть всех добавок. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
А программа, которая у меня давно работает (без всякого разделения), наверное, соответствует строке if( prs[ip]==61, rip=[2]); Правильно? А для следующей части надо вставить строку if( prs[ip]==61, rip=[5]); Сейчас попробую. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Ой, а вот и первое приближение в только что запущенной части break[4]> \r 13porc_61_valids_test_gris.txt logfile = "13porc_61_valids_test_gris_res.txt" 0 from number 0 to В number [0,12,42,60,66,90,96,102,126,132,150,180,192] patterns length 13 117288381359406970983270 period search in 0 (0.E-19) - 117288381359406970983270 (1.2 E23) central 3: [90,96,102] prove by 61#: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61] 6695025219993600 formulae expected 90537431866355605035301: [0, 12, 42, 60, 66, 90, 96, 138, 150, 172, 178, 180, 192] valids=9 number form=9836410 Добавочка 9836410-я. Кажется, работает. Сейчас третью часть запущу. Готово! Ну, вот три части из 48 уже работают. Эх, где же мой ВЦ ?! :( Я сейчас запустила бы все 48 частей запросто! Информация, полученная два дня назад, медленно в мозгу устаканивалась :) Чудесным образом устаканилась! Всё оказалось действительно очень просто. Я уже давно заметила, что у меня мозг работает в автономном режиме, то есть он что-то там "вычисляет" постоянно. А потом выдаёт мне результаты :) |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Господа! Кто хочет попробовать? Раздаю части бесплатно :) Возьмите хотя бы одну часть. Работать будет долго (одна часть), так что никаких хлопот с программой, запустил и забыл! Желательно наличие Windows 64-bit. А BOINC-проект можно запускать прямо сейчас. Много-много тысяч вушек запросто организуем :) И не только для центральной 13-ки, важнее это сделать для ключевой 17-ки. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Это вторая, запущенная мной сейчас, часть выдала приближения break[5]> \r 13porc_61_valids_test1_gris.txt logfile = "13porc_61_valids_test1_gris_res.txt" 0 from number 0 to В number [0,12,42,60,66,90,96,102,126,132,150,180,192] patterns length 13 117288381359406970983270 period search in 0 (0.E-19) - 117288381359406970983270 (1.2 E23) central 3: [90,96,102] prove by 61#: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61] 6695025219993600 formulae expected 9971025156794972194321: [0, 12, 42, 48, 66, 90, 96, 102, 126, 132, 148, 150, 192] valids=10 number form=23322634 21899664339129875652751: [0, 12, 40, 46, 52, 88, 96, 102, 126, 132, 150, 180, 192] valids=9 number form=32303466 . . . . . . . . Последняя добавочка, давшая приближение, 32303466-я. Тэк-с, у меня для ключевых 17-к в нулевом периоде работает один поток; генерируются добавки и проверяются на Norm-числа. Сейчас проверю все полученные Norm-числа и остановлю эту программу. Надо тоже сделать по частям. Кстати, очень много чего в математике делается по частям :) Это я уже очень давно заметила, ещё в проекте по ОДЛК. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Вот что дали Norm-числа для ключевой 17-ки при valids>9 (09:00) gp > \rappr.txt logfile = "appr_res.txt" 5723776147291540020102247: [0, 6, 36, 64, 66, 70, 90, 100, 120, 126, 142, 156, 174, 190, 210, 234, 240] 5723776147291540020102247: [0, 0, 12, 28, 0, -14, 0, -14, 0, 0, -8, 0, 0, -14, -6, 0, 0] 5723776147291540020102247: [1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1] valids=10 code=19161 5211220358505421302522307: [0, 6, 24, 36, 66, 76, 90, 120, 126, 142, 156, 172, 174, 214, 216, 234, 240] 5211220358505421302522307: [0, 0, 0, 0, 0, -8, 0, 6, 6, 16, 6, 16, 0, 10, 0, 0, 0] 5211220358505421302522307: [1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1] valids=10 code=31243 1994651675294780875062517: [0, 10, 24, 36, 70, 84, 90, 102, 114, 126, 154, 156, 174, 192, 214, 234, 240] 1994651675294780875062517: [0, 4, 0, 0, 4, 0, 0, -12, -6, 0, 4, 0, 0, -12, -2, 0, 0] 1994651675294780875062517: [1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1] valids=10 code=13913 6521044376753879260958497: [0, 6, 16, 22, 84, 100, 102, 114, 120, 126, 150, 156, 172, 204, 216, 234, 240] 6521044376753879260958497: [0, 0, -8, -14, 18, 16, 12, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0] 6521044376753879260958497: [1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1] valids=11 code=16887 1957723692650506238467837: [0, 6, 16, 24, 66, 84, 90, 100, 120, 126, 142, 156, 172, 174, 210, 234, 240] 1957723692650506238467837: [0, 0, -8, -12, 0, 0, 0, -14, 0, 0, -8, 0, -2, -30, -6, 0, 0] 1957723692650506238467837: [1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1] valids=10 code=20177 4970085592058849844101347: [0, 6, 24, 36, 46, 70, 112, 114, 120, 136, 142, 156, 174, 214, 216, 234, 240] 4970085592058849844101347: [0, 0, 0, 0, -20, -14, 22, 0, 0, 10, -8, 0, 0, 10, 0, 0, 0] 4970085592058849844101347: [1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1] valids=11 code=29083 3851201343041238198192007: [0, 22, 24, 34, 66, 90, 102, 106, 120, 126, 150, 156, 172, 174, 216, 234, 240] 3851201343041238198192007: [0, 16, 0, -2, 0, 6, 12, -8, 0, 0, 0, 0, -2, -30, 0, 0, 0] 3851201343041238198192007: [1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1] valids=10 code=10483 time = 843 ms. Ну, плохонькие приближения, самые лучшие с 6 "дырками". Остановила эту программу. Напомню: эта программа работала в нулевом периоде (для периода 67#) и искала ключевые 17-ки в интервале (12*10^23, 7858321551080267055879090). Немножко отступила от последней известной ключевой 17-ки, найденной г. Петуховым 901985248981556228168767: 0 6 24 36 66 84 90 114 120 126 150 156 174 204 216 234 240 Конец интервала - это конец нулевого периода (для периода 67#). Интервал охватывает большую область 25-значных чисел. О ключевых 17-х в этой области я не видела сообщений. Сейчас я эту программу модифицирую, сделаю из неё одну часть, причём не первую часть, а десятую, например. |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Готово! Сначала вывела это 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] 1999660772229120000 formulae expected По остаткам простого 67 генерация разделяется на 50 частей. Хорошее разделение! Я запустила программу по остатку 12. break[2]> \r 17porc_67_valids_test_gris.txt logfile = "17porc_67_valids_test_gris_res.txt" 0 from number 0 to В number [0,6,24,36,66,84,90,114,120,126,150,156,174,204,216,234,240] patterns length 17 7858321551080267055879090 period search in 0 (0.E-19) - 7858321551080267055879090 (7.9 E24) central 3: [114,120,126] prove by 67#: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67] 39993215444582400 formulae expected 5723776147291540020102247: [0, 6, 36, 64, 66, 70, 90, 100, 120, 126, 142, 156, 174, 190, 210, 234, 240] valids=10 number form=2306688 . . . . . . С ходу выдалось приближение! Да, количество формул (= количество добавок) уменьшилось в 50 раз! Было 1999660772229120000 formulae expected стало 39993215444582400 formulae expected Да, надо запустить все 50 частей! Да, каждая часть - это тысяча лет. Но разделение можно продолжить! И дальше только дело за техникой. Если программу выполнить полностью, будут найдены все ключевые 17-ки в интервале (12*10^23, 7858321551080267055879090). Гарантированно! |
Send message Joined: 6 Apr 17 Posts: 14122 Credit: 0 RAC: 0 |
Сейчас запущу ещё одну часть для ключевых 17-к, для остатка 24. Ахиллес вот завершит все проходы (7 потоков), запущу на нём 7 частей для ключевой 17-ки. Запустила ещё часть для ключевой 17-ки (для остатка 24). Ой, а удобно как: перезапускать эти программы не нужно! На всю оставшуюся жизнь программы :) И даже на после жизни, я умру, а программы будут работать :) Тэк-с, ну а что там у нас с 19-й с минимальным диаметром? Г. Петухов что-то совсем замолчал. Обещал, что до 1Е25 будет несколько решений! И где они? Или до 1Е25 ещё не просчитал? Ну, хотя бы одно решение уже должно быть. Ядряра вот-вот научно предскажет, когда же появится 19-ка с минимальным диаметром. Он уже до 15-ки с минимальным диаметром добрался. Просчитал, оценил? На очереди 17-ки с минимальным диаметром. Их, увы, очень мало. Для них, насколько помню, три паттерна существуют. Со всеми паттернами Ярослав Врублевский решения нашёл. Один из паттернов - это паттерн ключевой 17-ки. На данный момент нам известны восемь ключевых 17-к. Вот и ломаю голову: откуда же начинать искать 19-ку с минимальным диаметром??? Г. Петухов утверждает, что до 1Е24 её точно нет. |
©2024 (C) Progger