Încercarea numerelor cu CUDA (Partea 5: Marile descoperiri noi!)

După primul sfert din februarie 2023, văzând că am găsit 50 de numere noi în ultimele patru săptămâni, dar cu greutăți și cu limitările de la CGBN, și cu nevoia de a da mai departe importanță GMP-ului pe CPU, m-am mai gândit la cum să cercetez mai bine numerele și mi-a venit în cap o nouă idee pentru factorizările numerelor: dat fiind faptul că și fișierele cu coeficienți posibili de legătură se tot lăbărțau și reclamau nevoie nouă de spațiu și memorie, și cereau timp pentru procesare (iar CUDA cam dezamăgea, pe când CPU-urile erau și ele limitate), trebuia găsită o metodă de a obține repede mai multe numere, cu niște factori de legătură optimi.

Și mi-am amintit că pe site-ul lui Achim Flammenkamp mai văzusem niște substituții (factorizări speciale cu care niște numere multiperfecte se puteau obține unele din altele, se extrăgeau diferite secvențe de numere prime la puteri diferite, nule sau nu, și la un număr multiperfect ele apăreau într-un fel, iar la celălalt altfel, dând impresia că se folosește o pereche de puteri de factori primi). Pe mine aceste substituții m-au dus cu gândul la compunerea factorilor de legătură dintr-un înmulțitor și un împărțitor, prime între ele (prin reducere acolo unde era cazul), din care un număr de fond 1 să se obțină dintr-altul. Aceste lanțuri de puteri de factori primi puteau fi mai lungi și să cuprindă diverse numere prime, să nu fie factori de legătură mulți, mici și apropiați ca mărime între ei, dar să garanteze obținerea numerelor mari unele dintr-altele, prin înlocuirea diverselor puteri prime din factorizări. Așa că am făcut fișiere cu astfel de perechi de factori de legătură, care să li se aplice numerelor de fond 1 fie în ordinea înmulțire-împărțire, fie invers (de multe ori cu aceleași rezultate și la inversarea succesiunii operațiilor), deci fiecărui număr de fond 1 să i se aplice două operații, una de înmulțire și alta de împărțire, cu o pereche de numere citite din fișier, dar să fie ireductibilă perechea, ca să fie mai ușor.

Și cele două numere din pereche puteau fi amândouă mari, neapărat prime între ele, unul mare și unul mic... în orice caz, am luat anume perechile acestea care făceau numerele să se obțină unele din altele. Adică am parcurs exhaustiv numerele de fond 1 și pentru fiecare dintre ele mă uitam în sus și în jos, depistam cum diferă factorizarea sa de factorizarea fiecărui alt număr, la puterile mai mari sau în plus fiind înmulțire, iar la puterile mai mici sau lipsă, împărțire, și extrăgeam înmulțitorul și împărțitorul din operație (având grijă ca la reducere să nu fie niciunul egal cu 1, că atunci era fie doar înmulțire, fie doar împărțire!), făcându-le pereche și punând perechea în fișier.


Așa că atunci când am avut suficienți factori, continuând îmbogățirea lor în reprize succesive, am făcut căutări noi cu numerele, pe GMP și 7950X, ca să văd ce obțin nou din această nouă schemă a factorilor de legătură. Am făcut acest lucru în mai multe zile, în săptămâna 8-14 februarie, iar apoi și pe 20 februarie, după ce am inversat succesiunea operațiilor numărului mare cu perechea de coeficienți de legătură (împărțire-înmulțire în loc de înmulțire-împărțire, cum era construită schema inițial).

Și am avut rezultate rapide, mari și multe! Au fost cele mai bogate zile din istorie cu numere noi de fond 1 pe cont propriu, 8 și 9 februarie 2023. Aveam 31281 de numere la începutul zilei de 8 februarie. În acea zi am găsit 260 de numere noi, iar joia de 9 februarie 2023 a fost marele vârf istoric de noutăți numerice: 610 numere!


Era magistral și uimitor ce se întâmpla cu noua formulă. Și nici măcar nu eram pe CUDA, făceam programe pentru CPU pe GMP. Erau cele mai repezi rezultate de totdeauna, și mai ales pe cont propriu (fără să mai înmagazinez la greu numere de fond 1 multiperfecte de la Achim Flammenkamp, ca pe 4 februarie 2012, sau hemiperfecte à la Numericana, ca alte dăți - găsind apoi derivatele lor). 9 februarie 2023 era cea mai tare zi din istoria numerelor. Vedeam în sfârșit o mare formulă! Dacă aș fi știut-o în 2011 sau alți ani mai din urmă, aș fi salvat mult timp pierdut cu  numerele pe calendar și, până în 2017, și muuulți bani pe tămbălăul electric și hardware. Că altfel progres hardware aș fi făcut oricum, la generații noi de SATA, NVME, PCI-E și RAM cu CPU, și video, dar nu în mod extrem, dacă nu ar (mai) fi fost numerele. Iar în 2011 nu aș fi obținut la fel de repede aceste rezultate, având totuși echipamente mai slabe (un AMD Athlon XP 1800+, apoi Veritonul de la mama), dar formula aceasta și strategiile bazate doar pe numere de fond 1 m-ar fi ajutat și atunci mult-mult. Vorba aceea: Dă-i omului mintea cea de pe urmă!


Văzând noile numere, îmbogățeam rețeaua de perechi de factori de legătură, și ținând cont de numerele nou obținute, și mărind intervalele de căutare în jurul numerelor, ca să acopăr cât mai multe cazuri posibile. După 9 februarie, robinetul acesta puternic de numere noi a slăbit și el, find totuși vorba despre o mulțime finită de numere, dar din care simțeam că nu am găsit totul și că mai trebuie cu siguranță să fie ceva. Am avut și niște numere sub 100 sau sub 80 de cifre, care erau noi, și am sperat atunci că voi găsi și un număr al cărui raport ireductibil dintre suma divizorilor și el (dar excluzându-l pe el din sumă) să dea 3.1, încă din 2005 remarcasem că nu găsesc așa ceva, dar nu, nu am găsit. Mai sunt și alte abnudențe negăsite. Iar un astfel de număr trebuie să fie în zona aceea sub 80 de cifre, la numere mai mici. Că mai sus se găsesc doar abundențe mai mari la numerele acestea al căror numitor al fracției ireductibile suma divizorilor/număr să fie maxim 10*.

Și după 9 februarie am mai avut descoperiri așa:

Vineri pe 10: 81 de numere.

Sâmbătă în 11: 40.

Duminică, 12: 3 numere (s-a subțiat rău băiatul).

Pe 13 februarie: 6 numere (am mai crescut, 1000 cu totul în șase zile).

Marți pe 14, de ziua drăgostelii - încă 2. Aveam în total 32283 de numere.


*Adică micul-marele fond 1.

După aceasta au mai trecut niște zile și-n lunea următoare am făcut avea inversiune de succesiune la operațiune, și-au mai venit patru numere noi. Total 32287 de numere de fond 1.

Și AȘA a rămas cota aceasta și până astăzi! 32287 de numere. Așa s-a epuizat și noutatea adusă de formula cea nouă.

A fost operațiunea „1000 de numere în șase zile”, 8-13 februarie 2023. 610 de numere într-o singură zi era o viteză DE NECONCEPUT la ritmul din 2017-2019, când au fost marile cheltuieli. În 2017 au fost 1241 de numere (de la 13 septembrie încolo), în tot anul 2018 au fost 2533 de numere (dar prin octombrie au fost vreo 6 zile de pauză), iar în 2019 până la 11-12 noiembrie am mai strâns 3383 de numere. O medie de maxim 10-11 numere pe zi în 2019, sau vreo 7 pe zi în 2018, sau încă vreo 11 pe zi în 2017. Dar în 2023 m-am apropiat în sfârșit de finalul poveștii cu numerele și am putut investi cu încredere și în alte lucruri, inclusiv apropierea de oameni!


Și atunci, în așa-zisa săptămână a îndrăgostiților, dragostea mea cea matematică (da, se poate) și-a adus și ea roadele ei, exprimate în număr de numere: 260 + 610 + 81 + 40 + 3 + 6 = 1000 de numere și de Ziua Îndrăgostiților încă două. În locul unei povești omenești de dragoste ca în O mie și una de nopți, am primit o mie două numere mari! Recunosc și mărturisesc asta oricât de dork, nerd sau chiar geek ar suna. Sinceritate, că-i mai bună decât toate!


Am mai făcut de atunci unele căutări, inclusiv în martie, iunie și chiar (mai nou) noiembrie-decembrie 2023, și cu formula nouă și cele două sensuri ale operațiilor, și cu factori de legătură generali, aliniați ca mărime (inclusiv în pereche!), pe principiul folosit înainte de noua formulă, dar tot la 32287 de numere am rămas. Se simțea și nevoia unei memorii mai mari de 32 de GB la RAM, orișicât, și într-adevăr am avut grijă ca la ambele calculatoare cu DDR5 să ajung la câte 64 de GB în 2023, cu 4*16 pe fiecare, DDR5-7600 la AMD și DDR5-8000 la Intel, cu update-uri de BIOS, dar frecvența mai scădea - cum am  mai spus, am rămas la AMD cu DDR5-6000 (6200 până la o vreme, apoi am avut un blocaj de sistem și-am dat în jos la 6000, pentru siguranța stabilității), iar la Intel am rămas la 7467, 7400 și mai sigur 7200 după ce am trecut la 64 de GB.

Iar legat de conținutul fișierelor de coeficienți de legătură, atunci când aceștia sunt în perechi, mai ales la dimensiuni variate de la mic la mare - mărimea acestor fișiere pune și ea probleme, ocupă mult spațiu și trebuiesc ele însele să fie mai multe, pentru că altfel se umple memoria la crearea lor, și atunci sunt generate cu răbdare și parcurse tot cu răbdare, cu toți gigabaiții din ele. Atunci când coeficienții de legătură nu sunt în perechi, iar fișierele cu ei sunt mai mici, numărul de coeficienți poate și el să fie mare, iar combinațiile lor posibile și ele pot să fie foarte, foarte multe (în special dacă se fac coeficienți din toate posibilitățile și combinațiile de puteri de factori primi), și atunci fiecare dintre ei se împerechează în memorie, la căutarea numerică, pe rând, cu fiecare dintre ceilalți coeficienți din fișier, fiind apoi aplicați numărului de bază de fond 1 fie în ordinea înmulțire-împărțire, fie invers, iar aceste operații aritmetice iarăși cer timp, pentru că sunt extrem de multe combinații de parcurs!


Și atunci se revede nevoia de forță computațională, care la CUDA nu aduce o viteză fenomenal de mare față de CPU (chiar și dacă s-ar rezolva problema cu dlimbs_algs_multi, valabilă la numerele mai mari, la care oricum viteza CGBN scade, și chiar de-ar înceta numerele parazite la rezultate să fie o problemă). Așa că iar mă gândesc la CPU-urile vaste și la memoria mare, mare, maaare... ca la Threadripper și EPYC. Pentru așa ceva, dacă mai pune Achim Flammenkamp numere (sau nu neapărat), chiar că ar merita și o încercare cu echipamentele extreme de Remote Cloud Computing! Deci NU cumpărare fizică. Aș scuti bani, tămbălău și-o recidivă. Și în plus față de asta, acum mare parte din banii mei de salarii sunt bine puși la pastră într-un depozit la termen (nu „la pastramă”) și nu trebuie să mă abat din drum. La lichidarea depozitului ar fi o taxă de plătit (nu una capital de mare), dar este în primul rând o chestiune de principiu. Să mergem mai departe cu ce am decis să începem în mod rezonabil! Și nici cumpărătura în rate nu este o opțiune fericită. Banii pe care îi am acum disponibili sigur nu ajung nici pe sfert pentru Threadripper, ca să nu mai zicem că un procesor nu este totul într-un calculator. La RCC (Remote Cloud Computing), mai merge!

Dată fiind situația cu video-urile, CUDA, lucrul pe CPU și rezultatele din februarie, dacă aș opta pentru un cluster de RCC, cel puțin la prima încercare consider că va fi un echipament axat pe un CPU bogat. Precum un EPYC cu 224 de threaduri, ca să deschid acolo o groază de programe secvențiale concomitente care să ia diferite segmente de numere de fond 1+coeficienți din aceia variați de legătură. Dar și RAM-ul va trebui să fie unul încăpător. Și să am spațiu de stocare (nu zic să fie neapărat 200 de TB + 1 TB de RAM, dar să aibă niște forță), iar sistemul de operare să fie Linux. Acolo trebuie să merg direct la țintă: sistemul de operare pus, softul programatoristic să fie operațional (C/C++, CUDA - pentru că totuși am folosit sintaxa .cu și la fișierele de iarna trecută pentru GMP, nu doar la cele propriu-zise de CUDA, ar fi indicat să încerc să le fac .cc - și, ca editor de fișiere, poate să fie gedit, mai foloseam Mousepad), să fie cât mai repede gata clusterul pentru lucrul cu numerele, ca să nu pierd timp inutil, că se facturează. Și foarte probabil că va fi închiriat cu ora, nu cu luna. Va trebui să văd prețurile. A trecut ceva timp de iarna trecută.

Cât privește termenul de remote cloud computing, este suficient să îi zicem „cloud computing”, din două cuvinte. Dacă mai punem și cuvântul remote, deja este pleonasm!


Dacă aș fi vrut și mai multă memorie, față de 64+64, aș fi indisponibilizat plăcuțele de 16 GB cumpărate, ca să iau altele de 32 sau 48, cu bani pe măsură, și în plus frecvența la RAM ar fi scăzut mai mult - până-n 5400 la AMD, dacă nu mai jos, și 5200 la Intel pentru 192 de GB. Asta este limita.

Și la placa X670E ACE am rămas deocamdată la versiunea 1.91 de BIOS din iulie 2023 - următoarele trei versiuni (dintre care două practic la fel, una cu beta) m-au obligat la rollback pentru că nu mai mergea sistemul cu 6000 de MHz de RAM, trebuia să dau în jos la 5400 sau 5200, dacă nu 5000 pentru siguranță totală, ca de-ar fi fost dual rank în loc de single rank. Iar eu NU vreau să am memorie înceată!

Poate că totuși o să-și mai revină BIOS-ul, că rollback-ul la update nu este o direcție normală. La Z790 nu am dat rollback de BIOS. Am mai avut un update de BIOS la ASUSPRIME anul ăsta!


La 13900KS cei 64 de GB de RAM și al doilea NVME PCI-E 4 au fost gata în vară. Majoritatea numerelor noi le-am obținut pe calculatorul cu 7950X, tot cu GMP Și CPU-ul până la urmă, însă au fost câteva numere și cu CUDA, pe ambele calculatoare. Mai aștept ca Achium Flammenkamp să mai posteze.

În a doua parte a verii am luat și un monitor de 4K rezoluție, și un telefon mobil nou (Samsung Galaxy S23 Ultra cu maximum de memorie și stocare), cu cartelă pe Orange. Și niște căști audiofile marca Meze. În toamna lui 2023 este potol cu progresul hardware, am început și să economisesc bani într-un depozit la termen, reînnoibil anual, ca primă măsură mai serioasă de economisire în locul cheltuielilor masive și-al creditării. În afară de acele două NVME-uri pe care totuși le vreau, mă mai gândesc în perspectivă la un monitor 8K, dar cele câteva existente sunt prohibitive rău la preț, peste 18000 de lei bucata.

Și apare și Threadripperul 7995WX cu 1 TB de DDR5 suport (2 cred că-s la EPYC) și 192 de threaduri cu frecvență peste 5 GHz, dar costă aproape 60000 bucata în perspectivă. Pe 19 octombrie 2023 l-au anunțat oficial, din 21 noiembrie intră pe piață, dar mai întâi va fi legat de niște echipamente Lenovo în regim OEM, fără posibilitatea alegerii separate a plăcilor de bază TRX50 și a restului pieselor. Și în mod sigur va avea nevoie de cooling extrem, cu piese p-alese, în stil Do it yourself EKWB, unde tai țevile și torni lichidul. Dacă mai punem și memoria la socoteală, 1-2 plăci de 4090 (nerefolosite) și restul echipamentului... ajungi să dai eventual peste dublul prețului, 130-150 de mii pe un calculator măgăoi. Și cu încercarea de a folosi o a doua sursă la placa de bază, pentru acomodarea video (deși CUDA cu CGBN tot nu este cine știe ce, nu s-au rezolvat oficial problemele din iarna trecută, poate totuși reușesc eu ceva pe local cu modificările la LIMBS multiplu de TPI). Oare poți să ai două surse la o placă de bază?

Am aflat și de remote cloud computing, am de terminat mai departe ce-am început la cele 2 calculatoare până să aflu, asamblările lor erau deja gata în februarie 2023, cu primele NVME-uri PCI-E 4 și seturi de 32 de GB de RAM, însă am schimbat strategia financiară. Și dacă nu mai sunt numere? Cu atât mai mult nu mai are sens să investesc în hardware extrem. Cred că pe undeva tot mai există niște numere de descoperit, dar dacă și cu noua minune de formulă am epuizat spațiul, e greu, greu rău. Și dacă nici Flammenkamp nu a mai postat niciun număr nou de mai bine de un an, atunci este liniște. Mai așteptăm. Măcar cu CGBN-ul să mai reușesc ceva și/sau să se miște și ei, că pe lângă tichetul meu cu incomplete type a mai venit cineva pe urmă, cu aceeași problemă redată altfel, și nu ne-a răspuns nimeni din staff-ul CGBN-ului, și eu am etichetat pe cineva de la ei într-un comentariu la tichetul celuilalt om și tot degeaba!


Viața mai înseamnă și altceva decât calculatoare și numere.

Comentarii

Postări populare