Message boards :
Cafe :
Для участников форума MHP
Message board moderation
Previous · 1 . . . 49 · 50 · 51 · 52 · 53 · 54 · 55 . . . 129 · Next
Author | Message |
---|---|
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Продолжение счёта дошло до 38e32. По-прежнему ни одного результата. Ладно, пусть досчитает. И чего она у меня, интересно, считает? Итак, Ахиллес не поддерживает новый AVX2, как я понимаю. Компиляцию господин Петухов, видимо, делал для Demis; у него, наверное, компьютер поновее и архитектура другая. Однако координатор эксперимента ни сном, ни духом! Радуется за Ахиллеса и за всех остальных обладателей AVX2. Может, за всех остальных обладателей и надо радоваться, а вот за Ахиллеса - зря радовались! Хотелось бы пожелать стратегам слаженности в работе. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Продолжение счёта завершилось без результатов. В файл Process.out записалось TIME = 14476 seconds kolshag = 621546608 В общем, холостой прогон. Тестовый запуск екзешника делала так M12-S9-56-013452.exe 0 1000000 Окно мелькнуло на мгновение и исчезло. Точно так же было, когда я пыталась запустить старую переборную программу. Однако с новой переборной программой окно не исчезло, но и результатов никаких нет. Всё, холостые эксперименты заканчиваю. Очевидно, что Ахиллес не поддерживает AVX2, которое использовалось в последней компиляции господина Петухова. Нельзя ли перекомпилировать комплект 37 для Ахиллеса (как был скомпилирован комплект 234)? Ну, и остаётся условие: ввести в переборную программу многопоточный режим - на 4 потока. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Отвечаю на письмо Антона. Цитата Что может быть не так с Ахиллесом... Ведь 234-й комплект отработал на ура, С Ахиллесом всё в порядке, все программы моих экспериментов работают. Очевидно, что-то не так с программой поиска цепочек. Скорее всего, это связано с AVX2. Тестовый запуск экзешника показывает, что он не работает: мгновенно мелькнувшее окно и никаких результатов. Следующую фразу письма цитировать не буду. Просто отвечу. Ахиллесу помогать не надо. Demis в этом помочь вряд ли может. Он раньше не мог компилировать под AVX2. А если у него теперь есть компьютер с AVX2, то вполне возможно у него не то AVX2, которое поддерживает Ахиллес, более новая версия. Кстати, господин Петухов писал Компилилось под себя, ... Значит, он точно знает, какая именно версия AVX2 задействована в его компиляции и поддерживается ли эта версия Ахиллесом. И не надо гадать на кофейной гуще! |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Цитата PS. Важно добавить: PARI/GP поддерживает многопоточный режим. Итак, многопоточность назрела! Вот здесь выложена программа на PARI/GP https://dxdy.ru/post1563716.html#p1563716 Надо вставить в эту программу всего одну или две строки, которые сделают её многопоточной. Мне надо задать 4 потока. Господа! Пожалуйста, подскажите, кто знает это. В приведённой цитате дана ссылка на архив, в котором есть файл pdf, описывающий многопоточность в PARI/GP. Давайте разберёмся. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Ох! Вчера уже ночью с 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 Теперь надо разобраться с многопоточностью. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Ночной разговор с Demis о многопоточности (в переписке). D. - Demis Н. - Наталия D. Еще раз, многопоточность Вас затормозит. <...> Н. Поэтому и прошу сделать хотя бы многопоточность, это всё равно убыстрит, должно убыстрить, пусть не в 4 раза, но хоть во сколько-то. D. Просто задумайтесь <...> Н. Я же вам написала: если получится вставить режим многопоточности в переборную программу, тогда присылайте и программу, и архив. D. Смысл принудительно замедлять программу? <...> D. Если Дмитрий и напишет такое, то только специально для Вас. Насколько могу понимать из этого разговора, Demis считает, что многопоточность только затормозит работу программы. Не могу понять - почему же это? Насколько знаю, многопоточная программа делает распараллеливание процесса по ядрам, поэтому вычисления должны происходить быстрее. Разве это не так? |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
И продолжение диалога всё о многопоточности же. Н. Не надо Антону присылать мне переборную программу! D. Это лучше Дмитрия попросить. Итак, Demis просто не знает, как сделать вставку в программу для многопоточного режима и отсылает к Дмитрию. Может быть, поэтому он утверждает, что многопоточный режим только затормозит программу? Про многопоточную программу из архива M84 я ему написала. Там есть такая программа. И я её запускала. Очень шустро работает! Никакого замедления я не заметила. Ну и что делать будем? Кто нам расскажет, как вставить многопоточный режим в PARI-программу? Архив М84 я уже удалила, а зря. Сейчас бы ещё посмотрела внимательно на многопоточную программу господина Петухова, как Demis мне рекомендует. Ну, смотреть-то можно долго и внимательно, однако это не поможет. Надо просто знать, как это делать, а для этого есть инструкция, которую сам Demis мне и прислал. Изучаем инструкцию, господа! Она здесь https://disk.yandex.ru/d/6quPbB6Edw8F_Q Яндекс.Диск, 63,5 КБ. PS. Я не знаю: может быть, Demis прав - для PARI-программы многопоточный режим только замедляет процесс. Пока не знаю и хочу узнать! Мне кажется, что это не так и должно быть убыстрение, А иначе зачем разработчики PARI сделали поддержку многопоточного режима, если с ним только медленнее работает программа? |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
37-й комплект взлетел!!! Что я переделала? Скопировала архив на 37-й комплект в отдельную папку и там распаковала. Вчера я распаковала этот архив прямо в папке x64 AVX2 Table1. Могла ли быть в этом причина? В этой папке сидят все 6 архивов (на 6 комплектов). Архив на 31-й комплект сегодня тоже в отдельную папку скопировала и там распаковала. Далее, понятно, как мысль пошла - по какому руслу. Ну, как бы то ни было, а комплект заработал! Параметры такие, как в переборной программе, выложенной Антоном на форуме start=1600*10^30;\\Откуда начать stop=2000*10^30;\\Где закончить (не включая) step= 200*10^30;\\Сколько отвести на каждый круг перебора паттернов Итак, два потока на Ахиллесе ищут цепочки :) Обрабатываются два комплекта: 31-й и 37-й. Параметры заданы точно так, как задано Антоном. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Антон писал в сообщении 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-го комплекта. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
В основном в результатах 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-ка где-то рядом :) Антон же обещал, что она скоро найдётся :) Обязательно найдётся, только я не очень уверена, что скоро. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Антон писал в сообщении https://dxdy.ru/post1563710.html#p1563710 Кстати, надеюсь, что ещё и gris подключится к счёту. Вот это вряд ли :) Уж сколько я за годы дружбы уговаривала gris поучаствовать в моих экспериментах. Безуспешно! |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Ну вот, скачала снова архив для цепочек с 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-ки. Наверняка можно уменьшить. Ну, как известно, задачи минимизации цепочек в проекте господина Лецко мало кому интересны. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
А вот и переборная программа для поиска цепочек с 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 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 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 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 менее понятно, но есть комментарий, который поясняет. Можно и попробовать, прямо так всё и записать в переборной программе. Как говорится: не боги горшки обжигают. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Ой, в 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-ка уже девятая. Скоро, скоро количество перейдёт в качество - по закону диалектики :) |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Антон писал в сообщении https://dxdy.ru/post1563794.html#p1563794 Сравнительно недавно в 23-м комплекте были найдены ещё две 14-ки. Итого, уже 8 новым способом. Теперь и 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-й. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Кстати, о птичках... В 37-ом комплекте задан очень маленький диапазон start=1600*10^30;\\Откуда начать stop=2000*10^30;\\Где закончить (не включая) step= 200*10^30;\\Сколько отвести на каждый круг перебора паттернов Если я правильно понимаю, всего два круга по 200*10^30, и сейчас уже идёт второй круг. Скоро должно завершиться. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
to Антон Чтобы Ахиллесу не простаивать, прошу заранее сообщить на форуме новый диапазон для 37-го комплекта. Если я правильно понимаю, заданный в этом комплекте диапазон уже досчитывается. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Итак, первый диапазон в 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-ка. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Кажется, многопоточная программа поехала! Ещё одно место пропустила выше, связанное с потоками. Это формирование выходных фалов для каждого потока. Пришлось чуть-чуть призадуматься, но вроде разобралась. Пока не уверена, что всё сделала правильно и этот прогон благополучно посчитается. Но надеюсь на успех :) Ждём результатов. Напомню: 4 круга по 200е30 в этом прогоне. К утру должно завершиться. Главное - сравнить время. Будет ли выигрыш от многопоточности, и если будет - какой. |
Send message Joined: 6 Apr 17 Posts: 14352 Credit: 0 RAC: 0 |
Просматривая переписку с Demis, нашла ещё одно письмо о многопоточности, от 2 августа с. г. Цитата Посмотрел многопоточность. Ну вот, что из этого следует? 1. "Она включается очень просто". 2. "Но вот дальше беда". Наблюдаю за работой 37-го комплекта. Что-то нет никаких признаков убыстрения, по крайней мере, я их не вижу. Выходной файл пока создался один: M12n15-1.txt. В этот файл и пишутся результаты. На экран они тоже выводятся. И где выходные файлы для 4-х потоков? Ведь по идее на каждый из 4-х потоков должен быть свой выходной файл. А нету их, есть только один выходной файл. Пока ничего непонятно. Программа работает, никаких ошибок не выдаёт. Следовательно, всё, что я вставила про потоки, программе понятно. И то хорошо :) Однако, в переборной программе Петухова (для поиска 11-ки с 84 делителями) выходной файл тоже создался один, а не четыре. Может быть, остальные позже создадутся? Я чуть-чуть покрутила эту программу и прервала. В общем пока всё в тумане, ежик в тумане :) Нужен знающий человек. А с этим у нас напряжёнка. Вот господин Петухов, наверное, знает, но не скажет :) Антон, насколько понимаю, не знает. Demis тоже не знает. Итак, эксперимент будет работать до утра. Утром посмотрю, что там создастся, какие выходные файлы. И сколько времени будет обрабатываться этот прогон. Потом придётся этот прогон пересчитать в один поток, как обычно считаю. Потому что нет никакой уверенности в том, что программа отработает правильно с этим многопоточным режимом. После пересчёта сравню результаты. Тогда будет, может быть, какое-то прояснение, покажется ёжик из тумана :) |
©2024 (C) Progger