mersenneathome

Zaczęty przez lolek, 12 Styczeń 2011, 11:23

GRID

Rumble Fish ciekawie mówi.
Zakładając ze mersenne@home odkryje liczbę. to co w tedy ? jaki będzie plan działania. Czy ktoś dostanie emaila ze odkrył liczbę i żeby podał adres konta? (fajnie by było zapisać się w księgach naukowych historii i fajnie by było przeznaczyć 20k$  na promocję przetwarzania rozproszonego i nauki w Polsce.)

Tomasz R. Gwiazda

New highly optimized versions of applications
I started to to deploy a highly optimized versions of applications. For supported platforms, they brings a significant increase in performance. Currently following classes are implemented:


    For Intel CPUs:

        ppro - for PentiumPro
        p2 - for Pentium II and Celeron based on Pentium II, working in 32 bit environment,
        p3 - for Pentium III, Pentium M, Core, Core2, Core i7 and others based on them, working in 32 bit environment,
        p4 - for Pentium 4 and others based on it, working in both the 32-bit and 64 bit environment,
        core2 - for Core2 and others based on it, working in 64 bit environment,
        corei - for Core i7 and others based on it, working in 64 bit environment.


    For AMD CPUs:

        k7 - for Athlon, Duron, Athlon XP, Sempron, Athlon 64, Phenom, APU, based on the Bulldozer core and the others based on them, working in 32 bit environment,
        k8 - for Sempron, Athlon 64, Phenom, APU, based on the Bulldozer core and the others based on them, working in 64 bit environment.


If you see that there is available optimized application for your computer but for some reason you do not get it. Or worse, you get an applications that is not compatibility with your computer fill out a thread on the Bugs forum or send me a private message. I also encourage you to share the results of the performance of these applications on the Number crunching forum.


sie nie chwali kolega :>  :whip:

Sebastian M. Bobrecki

Bo chwalić to się będę jak skończę. Na razie jeszcze sporo roboty przed mną. Ludzie już wyłapali kilka błędów w schedulerze że przydzielał nie takie app jak trzeba i już go dziś z 10 razy poprawiałem. No ale się staram żeby było coraz lepiej :)
Kocham pracę, mogę na nią patrzeć godzinami.

Tomasz R. Gwiazda

u a ja wzmozone obliczenia od 2 dni robie w tym projekcie :)
mam nadzieje ze bedzie ok mimo to

troche w pendingu taskow siedzi (12k)


Sebastian M. Bobrecki

Cytat: Tomasz R. Gwiazda w 25 Listopad 2011, 21:17
u a ja wzmozone obliczenia od 2 dni robie w tym projekcie :)
mam nadzieje ze bedzie ok mimo to

troche w pendingu taskow siedzi (12k)
O to się nie martw. Wszystkie incydenty które mi do tej pory zgłoszono były bezpieczne, tzn. komputerowi była przydzielana słabsza aplikacja np. p2 zamiast p3 albo domyślna zamiast zoptymalizowanej.
Kocham pracę, mogę na nią patrzeć godzinami.

Tomasz R. Gwiazda

i widze ze u mnie nie tak wiele, 18 WU
glownie ze statusem

Timed out - no response
Cancelled by server


Sebastian M. Bobrecki

Cytat: Tomasz R. Gwiazda w 25 Listopad 2011, 21:29
i widze ze u mnie nie tak wiele, 18 WU
glownie ze statusem

Timed out - no response
Cancelled by server
Sporo mam takich przypadków że ludzie odsyłają wyniki po zaraz deadline ale jak już serwer z nich zrobił nowe zadania i je wysłał. Wiec ja mam włączone żeby serwer wysyłał do klienta poleceni żeby je ubił jeśli jeszcze nie zaczął ich liczyć bo szkoda czasu, itd.
Kocham pracę, mogę na nią patrzeć godzinami.

Tomasz R. Gwiazda

jak dla mnie logiczne :)
pretensji żadnych nie mam

Troll81

 :respect: za to ze ci się chce optymalizować. Wiele projektów tego nie robi i widać to m.in. po temperaturze proca :( a szkoda bo chciałbym by mój sprzęt był wykorzystywany na maksa

Sebastian M. Bobrecki

Dziś pojawiły się nowe wersje aplikacji które powinny torchę poprawić wydajność, zwłaszcza dla aplikacji Tdt na 64 bitowych windowsach :)
Kocham pracę, mogę na nią patrzeć godzinami.

mimeq

Tdt ? Trial division test v1.04 ?
To mi sie akurat szybko liczylo :D
http://mersenneathome.net/results.php?hostid=2630&offset=0&show_names=0&state=0&appid=3


Sebastian M. Bobrecki

Cytat: mimeq w 05 Grudzień 2011, 18:33
Tdt ? Trial division test v1.04 ?
To mi sie akurat szybko liczylo :D
Zmienisz zdanie jak zobaczysz w akcji wersję 1.05.
Kocham pracę, mogę na nią patrzeć godzinami.

mimeq

Zaraz bede wiedzial  ;)
Co robia poszczegolne aplikacje? Na wiki u nas nic nie ma ...

Lucas-Lehmer primality test - to sie liczy najdluzej i chyba jest glowna aplikacja poszukajaca liczb ?
trial division test - ???
Extended trial division test - ???


Sebastian M. Bobrecki

Tdt i Etdt służą do eliminacji kandydatów dla LLpt.
Kocham pracę, mogę na nią patrzeć godzinami.

mimeq

Pierwsze 3WU w porownaniu do starych rzeczywiscie szybciej.
Stare (mam tylko 2 jeszcze do podejrzenia) w zakresie  8xx -9xx sek
Nowe 3 zakres 6xx sek

:parrrty:

Rozumiem ze dla roznych procow sa rozne aplikacje ? Mi przydzielilo "core2" do Q6600.
Pkt sa na sztywno ? za poprzednie bylo 11.50 a teraz jest szybciej


Michu86

Witam wszystkich serdecznie :)

Mój pierwszy post na forum, w samym B@P jestem dość krótko - chyba jeszcze tydzień nie minął, tak więc z góry proszę o wyrozumiałość ;)

A piszę, ponieważ mam kilka pytań, może nie koniecznie do autora ("opiekuna projektu" ?), ale do kogokolwiek, kto mógłby mi powiedzieć, jak to dokładnie działa? :) Chciałbym śledzić, jak to się porusza do przodu, a byłoby mi dużo łatwiej, gdybym wiedział, co jest czym.

Bodajże w drugim poście był krótki opis działania, ale interesuje mnie coś bardziej konkretnego - jak działa Tdt, Etdt i Xtdt?

"Tdt i Etdt służą do eliminacji kandydatów dla LLpt."

LLpt - to zakładam, że jeszcze nie wystartowało? Ponieważ na "Stanie serwera" pojawił się bodajże wczoraj i statystyki ma zerowe, z kolei na "Computation progress" w ogóle nie jest ujęty.

Także proszę o jakiś opis na "Computation progress":
- "P range" - domyślam się, że statystyki dotyczą P w tych widełkach
- "P in range" - a to są liczby P do sprawdzenia? Czy może sprawdzone? Czy co? :)


Mam nadzieję, że te kilka wstępnych pytań nie odstraszy nikogo ;)


Niejednokrotnie padło też porównanie do GIMPS - gdyby nie fakt, że podsumowanie obliczeń jest sprzed 2 godzin, stwierdziłbym, że projekt ten upadł (ostatnia aktualizacja ponad rok temu). No i po statystykach widzę, że rzeczywiście udaje się tego GIMPSA doganiać - o ile w liczbie użytkowników którzy dołożyli się do projektu nadal "jesteśmy" daleko w tyle (1,757 na BOINC do 80,996 na GIMPS) o tyle już różnica w aktywności w ciągu ostatniego miesiąca jest dużo mniejsza (937 do 4,875 na GIMPS) i co jeszcze ważniejsze - nadal się zmniejsza :)

Główna różnica pomiędzy projektami? Ten tutaj żyje :) Co widać nie tylko po newsach, ale także po ciągłych aktualizacjach i ulepszeniach - a więc zasłużone ukłony dla Pana Bobreckiego :respect:


Troll81

Witam na forum. Zapraszam do założenia własnej wizytówki. Jeśli podasz nam swoje województwo ujmiemy cię w rankingu województw.

Najlepiej pytania zadać anu Bobreckiemu :D i szturchnąć go na PW by raczył się wypowiedzieć na forum. W ten sposób i pytania i odpowiedzi pozostaną dla potomności....

Sebastian M. Bobrecki

@Bodajże w drugim poście był krótki opis działania, ale interesuje mnie coś bardziej konkretnego - jak działa Tdt, Etdt i Xtdt?
Te trzy aplikacje w zasadzie robią to samo tylko do różnych pułapów. Standardowy test typu "trial division" polega na dzieleniu danej liczby przez pierwsze mniejsze lub równe pierwiastkowi kwadratowemu z tej liczby. Jeśli w tym zakresie nie znajdziemy dzielnika to liczba jest na pewno pierwsza. Niestety dla dużych liczb należałoby wykonać ogromne ilości kosztownych operacji dzielenia co wymagałoby mnóstwa czasu. Przez to test w tej for jest niepraktyczny dla dużych liczb. Na szczęście większość kandydatów posiada relatywnie małe dzielniki i dzięki temu można je wyeliminować wykonując test tylko do pewnej, sensownej pod względem czasu obliczeń, granicy. Dodatkowo wykorzystujemy pewne dodatkowe właściwości liczb Mersenne'a ( M(p)=(2^p)-1 ):
- M(p) na pewno nie będzie pierwsza jeśli p nie jest pierwsza. W związku z tym testujemy tylko takie p które są pierwsze,
- Dzielniki d liczb M(p) mają postać d=2kp+1 (np. (2^11)-1=2047; dla k=1; d=2*1*11+1=23; 2047/23=89),
- Dzielniki d liczb M(p) modulo 8 dają wynoszą 1 lub 7 (23 mod 8 = 7),
Dodatkowo dzięki zastosowaniu potęgowania modulo możemy operować tylko na liczbie bitów potrzebnych do zapisania dzielnika (kilkadziesiąt) a nie pełnej liczby Mersenne'a która zajmuje p bitów (miliony). To nie tylko powoduje zmniejszenie ilości wymaganych operacji ale też zmniejsza zapotrzebowanie na pamięć operacyjną dla operandów i przez co poprawia się wykorzystanie pamięci cache co także pozytywnie wpływa na wydajność.

@LLpt - to zakładam, że jeszcze nie wystartowało? Ponieważ na "Stanie serwera" pojawił się bodajże wczoraj i statystyki ma zerowe, z kolei na "Computation progress" w ogóle nie jest ujęty.
Ta aplikacja jest obecnie wstrzymana.

@Także proszę o jakiś opis na "Computation progress":
- "P range" - oznacza przedział liczb
- "P in range" - to całkowita ilość liczb pierwszych p w danym przedziale
- "Tdt, Etdt, Xtdt" - pokazuje w procentach ile kandydatów zostało przetestowanych przez daną aplikację (w zasadzie to ile już nie wymaga testowania przez daną aplikacje).

Też mam nadzieję że kiedyś uda się wyprzedzić GIMPS :) Ukłony pokornie przyjmuję ;)
Kocham pracę, mogę na nią patrzeć godzinami.

Troll81

mój ukłon  :respect:

Michu86

Witam

Dziękuję za odpowiedź na wstępne pytania :)

Tak jeszcze z góry uprzedzę, że być może w pewnym momencie dojdę pytaniami do szczegółów, których nie będzie Pan chciał ujawniać (prawa autorskie, konkurencja, itp.) - proszę to wtedy wprost napisać, żebym po prostu odpuścił i nie męczył więcej ;)

To teraz wersja Extended moich pytań ;)

To, że p musi być pierwsze faktycznie bardzo pomaga i rozumiem w takim razie sens kolumny "P in range".

Co do faktu, że dzielniki liczb NIE-pierwszych postaci M(p) mogą mieć tylko postać d=2kp+1 także bardzo pomaga, bo nie sprawdzamy wszystkich dzielników, a tylko te dla kolejnych k ze wzoru.

Przy czym ostatniej właściwości nie rozumiem (że (d%8==1)|(d%8==7) ). Z jednej strony nie mam pojęcia, do czego może być przydatna ta informacja, a z drugiej załóżmy taką liczbę Mersenne`a:
p=10
M(p)=1023
D = {d1;d2} = {3;341}
Dzielnik d=341 faktycznie jest postaci 2kp+1 (dla k=17), ale już reszta z dzielenia 341 przez 8 to liczba 5, a nie 1 bądź 7... Proszę o wyjaśnienie :)


Co do operacji typu modulo, że np.
Reszta z dzielenia (przez 5) sumy liczb 16+43 jest taka sama jak suma ich reszt (modulo z sumy jest równe sumie modulo):
16+43=59
mod(59,5)=4

mod(16,5)=1
mod(43,5)=3
1+3=4
to wiem, działa to na pewno do podstawowych 4 działań (potęgowanie też?), ale do czego konkretnie jest tu wykorzystywane? :) Całą liczbę M(p) i tak trzeba najpierw policzyć, żeby zacząć ją... A nie - o tym przecież była mowa :>
Czyli przykładowo dla M(p=21)=2097152 sprawdzamy kolejne dzielniki d, np. d=127 (2*3*21+1)

No i chcielibyśmy sprawdzić, jaki jest wynik modulo 2097151 przez 127 - jeśli 0, to M(p) jest liczbą złożoną.
Ale żeby nie dzielić "długiej liczby" 2097151, to najpierw bawimy się potęgą liczby 2:

2^21 - 1 =
= 2^7 * 2^7 * 2^7 - 1

Wynik modulo z całej liczby to wynik modulo z poszczególnych składowych, a więc:

mod(2^7,127) * mod(2^7,127) * mod(2^7,127) - mod(1,127) =
= 1*1*1-1 = 0

Czyli M(p=21) nie jest liczbą pierwszą :)



Ok, czyli Tdt, Etdt oraz Xtdt robią to, co powyżej dla pewnego przedziału dzielników - Tdt dla najmniejszego, Etdt dla większego oraz Xtdt dla... największego, czy też dla wszystkich?

No i jeśli Tdt "zauważy" że liczba nie jest pierwsza, to nie jest to już sprawdzane w Etdt i Xtdt.

LLpt - a ta do czego służy/będzie służyć? Chyba do ostatecznego stwierdzania, czy liczba jest pierwsza... A więc Xtdt nie jest dla całego przedziału :> Bo jeśli liczba ma 12 mln cyfr, to maksymalna wartość dzielnika miałaby 6mln cyfr :> Do jakiej granicy liczą te 3 pierwsze testy?

No i z faktu, że nie zdarzyło mi się, aby przy 30% był przeskok na 100% wnioskuję, że nawet po znalezieniu dzielnika obliczenia są dalej prowadzone - rozumiem, że to w celach badania zależności występowania liczb pierwszych od czegoś? :)



W Computation progress dla wszystkich poza 3 pierwszymi przedziałami widać równość przy "już niepotrzebnych" Tdt i Etdt - domyślam się, że wspólnie zostały odrzucone - na jakiej zasadzie? I dlaczego nie zostały odrzucone także Xtdt w danych zakresach?


Może tyle na razie wystarczy - reszta pytań przechodzi do wersji eXtreme :P

Sebastian M. Bobrecki

Cytat: Michu86 w 09 Marzec 2012, 01:20
...

Przy czym ostatniej właściwości nie rozumiem (że (d%8==1)|(d%8==7) ). Z jednej strony nie mam pojęcia, do czego może być przydatna ta informacja, a z drugiej załóżmy taką liczbę Mersenne`a:
p=10
M(p)=1023
D = {d1;d2} = {3;341}
Dzielnik d=341 faktycznie jest postaci 2kp+1 (dla k=17), ale już reszta z dzielenia 341 przez 8 to liczba 5, a nie 1 bądź 7... Proszę o wyjaśnienie :)
W twoim przykładzie p nie jest liczbą pierwszą więc ta zależność nie zachodzi.
p=23
M(p)=8388607
k=1
d=47
47 mod 8 = 7

Niestety nie zawsze 2kp+1 jest liczbą pierwszą więc żeby oszczędzić sobie operacji potęgowania modulo wykonujemy jeszcze sprawdzenie wyniku d mod 8 bo jest to operacja tania obliczeniowo. Jeśli wynik będzie pomyślny (1||7) to wykonujemy jeszcze krótki test pierwszości samego dzielnika (właściwie kandydata na dzielnik) w oparciu o tablicę małych liczb pierwszych. I dopiero po przejściu obu tych testów wykonujemy właściwy test czy kandydat jest dzielnikiem M(p).

Cytat
Co do operacji typu modulo, że np.
Reszta z dzielenia (przez 5) sumy liczb 16+43 jest taka sama jak suma ich reszt (modulo z sumy jest równe sumie modulo):
16+43=59
mod(59,5)=4

mod(16,5)=1
mod(43,5)=3
1+3=4
to wiem, działa to na pewno do podstawowych 4 działań (potęgowanie też?), ale do czego konkretnie jest tu wykorzystywane? :) Całą liczbę M(p) i tak trzeba najpierw policzyć, żeby zacząć ją... A nie - o tym przecież była mowa :>
Czyli przykładowo dla M(p=21)=2097152 sprawdzamy kolejne dzielniki d, np. d=127 (2*3*21+1)

No i chcielibyśmy sprawdzić, jaki jest wynik modulo 2097151 przez 127 - jeśli 0, to M(p) jest liczbą złożoną.
Ale żeby nie dzielić "długiej liczby" 2097151, to najpierw bawimy się potęgą liczby 2:

2^21 - 1 =
= 2^7 * 2^7 * 2^7 - 1

Wynik modulo z całej liczby to wynik modulo z poszczególnych składowych, a więc:

mod(2^7,127) * mod(2^7,127) * mod(2^7,127) - mod(1,127) =
= 1*1*1-1 = 0

Czyli M(p=21) nie jest liczbą pierwszą :)
W zasadzie tak to wygląda. Jeszcze z racji tego że dla m>n, n%m=n przenosimy to na drugą stronę czyli sprawdzamy czy (2^p)%d=1 i oszczędzamy jeszcze kilka operacji :)

Cytat
Ok, czyli Tdt, Etdt oraz Xtdt robią to, co powyżej dla pewnego przedziału dzielników - Tdt dla najmniejszego, Etdt dla większego oraz Xtdt dla... największego, czy też dla wszystkich?
Żadna z nich nie robi całości bo nie skończyła by za naszego życia. Tdt robi od początku, od b0 do b1, Etdt od b1 do b2, Xtdt od b2 do b3 (granice b1,b2,b3 zależą od p).

Cytat
No i jeśli Tdt "zauważy" że liczba nie jest pierwsza, to nie jest to już sprawdzane w Etdt i Xtdt.
Dokładnie tak.

Cytat
LLpt - a ta do czego służy/będzie służyć? Chyba do ostatecznego stwierdzania, czy liczba jest pierwsza... A więc Xtdt nie jest dla całego przedziału :> Bo jeśli liczba ma 12 mln cyfr, to maksymalna wartość dzielnika miałaby 6mln cyfr :>
Ta aplikacja wykonuje test Lucasa-Lehmera. To najszybsza znana deterministyczna metoda sprawdzenia czy liczba Mersenne'a jest liczbą pierwszą czy nie. Niestety mimo że test ten jest najszybszy to wymaga wykonania sporej ilości (p-2) operacji na bardzo dużych liczbach. Wygląda to mniej więcej tak:

s=4
M=2^p-1
for(i=0;i<(p-2);i++) {
s=((s^2)-2)%M
}
if s==0 then M is Prime

Jak widać wymagane jest operowanie na liczbach porównywalnych wielkością z samą liczbą M czyli liczących miliony bitów. Takie obliczenia już przy p < 10^8 potrafią zająć współczesnemu komputerowi ponad miesiąc tylko dla jednego p.
Cytat
Do jakiej granicy liczą te 3 pierwsze testy?
Jak pisałem wyżej granica jest zależna od p a przejście przez wszystkie aplikacje to dziesiątki miliardów iteracji.


Cytat
No i z faktu, że nie zdarzyło mi się, aby przy 30% był przeskok na 100% wnioskuję, że nawet po znalezieniu dzielnika obliczenia są dalej prowadzone - rozumiem, że to w celach badania zależności występowania liczb pierwszych od czegoś? :)
Po prostu miałeś pecha. Aplikacja kończy przetwarzanie po znalezieniu pierwszego dzielnika.

Cytat
W Computation progress dla wszystkich poza 3 pierwszymi przedziałami widać równość przy "już niepotrzebnych" Tdt i Etdt - domyślam się, że wspólnie zostały odrzucone - na jakiej zasadzie? I dlaczego nie zostały odrzucone także Xtdt w danych zakresach?
Ponieważ przedziały te już były poddane wstępnej analizie za pomocą Tdt. Natomiast to że nie widać tego w kolumnie Xtdt wynika z kwestii czysto administracyjnej. Przedziały te nie były ani razu włączone od czasu powstania aplikacji Xtdt, i przez to są pomijane przy podliczaniu statystyki.
Kocham pracę, mogę na nią patrzeć godzinami.

Michu86

Dziękuję za odpowiedzi i zgodnie z obietnicą, kolejne pytania poniżej ;)

Nazwa plików odpowiada liczbie P, która jest w danym teście sprawdzana? A z kolei liczba po podkreślniku oznacza, który to jest z testów (o ile pamiętam - każdy ma być wykonywany dokładnie 2 razy)?

Algorytm LL - masz już jakiś pomysł na obejście tego, czy może właśnie dlatego jest to takie trudne, że trzeba na tych kosmicznie wielkich liczbach działać? :/ (10ty wyraz tego ciągu w Matlabie został uznany za Inf :| )

Spytam o zbyt duży szczegół, jeśli będę chciał znać zależność b1, b2 i b3 od p? :)
Wygląda to na coś w stylu:
Tdt - kolejne dzielniki 1 - 1,000
Etdt - kolejne dzielniki 1,001 - 10,000
Xtdt - kolejne dzielniki 10,001 - 100,000
ale dokładniej? :)

Przy sprawdzaniu podzielności przez 8 - robisz to na całej liczbie, czy na jej ostatnich 3 cyfrach? ;)

@ W zasadzie tak to wygląda. Jeszcze z racji tego że dla m>n, n%m=n przenosimy to na drugą stronę...
Czym jest m, bo nie kojarzę oznaczenia?

Potęgowanie modulo - dopiero teraz wczytałem się w algorytm - fajne, złożoności O(log_2(P)) mówimy pewnie i zdecydowanie "raczej Tak" :)

W związku z faktem, że i tak nie wychodzimy poza 3 pierwsze przedziały (które i tak obejmują w ponad 80% obszar liczb większych od dotychczasowej największej), myślałeś może nad ucięciem statystyk dla p=300,000,000 a z kolei te 3 pierwsze przedziały rozbić np. na 30 lub więcej? Kiedy "widać" zmiany, jest jakoś tak łatwiej i serce się bardziej cieszy ;)
Druga sprawa odnośnie tego samego - można by dodać ilość różnych liczb p, które przeszły wszystkie 3 testy i nadal "są podejrzewane o pierwszeństwo"?

Jeśli algorytm LL ma zabierać aż tak dużo czasu, można by się zastanowić, czy mimo wszystko nie wziąć się jeszcze za sprawdzenie dalszych dzielników d? W pewnym momencie będzie granica, że czas potrzebny na operacje odrzucania kolejnych liczb P i prawdopodobieństwo ich odrzucenia w danym przedziale będzie równie kosztowny obliczeniowo, co po prostu wykorzystanie algorytmu LL - sprawdzałeś jakoś tę granicę?
No i mam wrażenie, że im większych liczb będziemy się tykać, tym ta granica będzie większa.

Wyniki, jakie zwracają programy (Task) - jak to czytać? Tzn. jakie tam mogę znaleźć istotne informacje? :) Np. czym są te dwie duże liczby na początku Stderr output, np:
"Begin computation
9663676416 78383153152" dla xtdt_139661_0
albo
"Begin computation
1073741824 10737418240" dla etdt_2222573_0
No i gdzie widać, czy przyczyniłem się pozytywnie (znaleziony dzielnik), czy też tylko stwierdziłem, że w danym obszarze dzielnika nie znaleziono?
Czy za znalezienie dzielnika zdobywa się więcej punktów? ;)

Jaki może być przykład "Error while computing", ponieważ mi się jeszcze nie zdarzyło i nie wiem z praktyki.

Problem w takiej postaci, w jakiej istnieje aż prosi się o wykorzystanie kart graficznych, gdzie każdy z procesorów mógłby zająć się podzielnością przez jeden z dzielników. Wydaje mi się, że horrendalnie wzrosłaby szybkość przetwarzania, gdyby karta graficzna także mogła brać udział w obliczeniach. Że są plany rozszerzenie aplikacji o tę możliwość, w to nie wątpię, ale w najbliższym czasie (jest to już tworzone), czy raczej w dalszej perspektywie?

Z jednej strony to może przesada, ale z drugiej... Liczba telefonów komórkowych, tabletów, iPadów i iPodów rośnie z każdym dniem, a zarazem zauważam tendencję, aby zastępować tym wszystkim PCty i Laptopy (choć to może tylko marzenia speców od marketingu? :P ). A o tym segmencie potencjalnie "chętnych do obliczeń" myślałeś? Procesory ma toto już prawie jak zwykłe komputery, więc zadania mogłyby być nawet podobne, włączone jest non-stop... Oczywiste wprawdzie, że podczas pracy na baterii nie mógłby działać BOINC, ponieważ nie jestem pewien, czy dobę by taki sprzęt wytrzymał, ale już chociażby podczas ładowania baterii - czemu nie? :)
Jak to od strony praktycznej wygląda? Potrzebne są z Twojej strony jakieś dodatkowe wersje programów, czy też wystarczy ściągnąć BOINCa, odpowiednio skonfigurować (praca na baterii jest chyba domyślnie zatrzymująca obliczenia) i jazda? :)


Że to ostatni zestaw pytań to wątpię, ale na pewno ostatni tak obszerny :)

Sebastian M. Bobrecki

@Nazwa plików odpowiada liczbie P, która jest w danym teście sprawdzana? A z kolei liczba po podkreślniku oznacza, który to jest z testów (o ile pamiętam - każdy ma być wykonywany dokładnie 2 razy)?

Tak: <aplikacj>_<p>_<numer_zadania> . Numer zadania standardowo 0 lub 1. Jeśli jest większy to znaczy że wystąpiła konieczność retransmisji (niezgodne wyniki, błędy, przerwane obliczenia, przekroczenie czasu).

@Algorytm LL - masz już jakiś pomysł na obejście tego, czy może właśnie dlatego jest to takie trudne, że trzeba na tych kosmicznie wielkich liczbach działać?

Nie, to po prostu trzeba policzyć.

@Spytam o zbyt duży szczegół, jeśli będę chciał znać zależność b1, b2 i b3 od p?

Ilość iteracji:
Tdt ~ 2^30
Etdt ~ 2^33
Xtdt ~ 2^36

@Przy sprawdzaniu podzielności przez 8 - robisz to na całej liczbie, czy na jej ostatnich 3 cyfrach?

To się robi za pomocą operacji obracania i testowania bitów, ponieważ operacje dzielenia są dosyć kosztowne.

@Czym jest m, bo nie kojarzę oznaczenia?

Użyłem luźnych oznaczeń. Chodziło mi tylko o zobrazowanie ogólnie znanego faktu.

@W związku z faktem, że i tak nie wychodzimy poza 3 pierwsze przedziały (które i tak obejmują w ponad 80% obszar liczb większych od dotychczasowej największej), myślałeś może nad ucięciem statystyk dla p=300,000,000 a z kolei te 3 pierwsze przedziały rozbić np. na 30 lub więcej? Kiedy "widać" zmiany, jest jakoś tak łatwiej i serce się bardziej cieszy ;)
Druga sprawa odnośnie tego samego - można by dodać ilość różnych liczb p, które przeszły wszystkie 3 testy i nadal "są podejrzewane o pierwszeństwo"?

Myślałem, ale tu dość istotna kwestią jest duży koszt operacji przeliczania tych statystyk. Może wrócę do tematu jak uda mi się jeszcze poprawić niektóre aspekty pracy serwera.

@Jeśli algorytm LL ma zabierać aż tak dużo czasu, można by się zastanowić, czy mimo wszystko nie wziąć się jeszcze za sprawdzenie dalszych dzielników d? W pewnym momencie będzie granica, że czas potrzebny na operacje odrzucania kolejnych liczb P i prawdopodobieństwo ich odrzucenia w danym przedziale będzie równie kosztowny obliczeniowo, co po prostu wykorzystanie algorytmu LL - sprawdzałeś jakoś tę granicę?

Tę granicę nie tak łatwo wyznaczyć bo w dużej mierze zależy od takich czynników jak budowa komputerów i oprogramowania. Tak samo dalsze poszukiwanie ewentualnych dzielników lepiej wykonać innymi algorytmami. Obecnie mam już testową wersję aplikacji dla testu RHO i P-1. Można też rozważyć użycie ECM Lenstry. Ale te metody mają większe zapotrzebowanie na pamięć itp. i w związku z tym zupełnie inne charakterystyki skalowania.

@No i mam wrażenie, że im większych liczb będziemy się tykać, tym ta granica będzie większa.

Zgadza się. Dlatego aplikacje mają określoną ilość iteracji i ona w połączeniu z p wyznacza granicę.

@Wyniki, jakie zwracają programy (Task) - jak to czytać? Tzn. jakie tam mogę znaleźć istotne informacje? :) Np. czym są te dwie duże liczby na początku Stderr output, np:

Stderr to jeden z podstawowych strumieni wejścia/wyjścia procesów w systemach typu unix (stdin - strumień standardowego wejścia, stdout - strumień standardowego wyjścia, stderr - strumień komunikatów błędów) i stąd tak też zostało to nazwane w boinc-u ale to nie jest wynik pracy programu a tylko dane diagnostyczne itp. które mogą być pomocne przy szukaniu przyczyn jak coś nie będzie działać prawidłowo. Wyniki są zapisywane do plików i odsyłane na serwer. Można je czasem znaleźć w katalogu projektu zanim zostaną odesłane.

@Czy za znalezienie dzielnika zdobywa się więcej punktów?

I tak i nie, w takim sensie że dostaje się za nie tyle samo punktów ale obliczenia szybciej się kończą ;)

@Jaki może być przykład "Error while computing", ponieważ mi się jeszcze nie zdarzyło i nie wiem z praktyki.

Zwykle jest to jakaś forma zawieszenia lub nawet niemożności uruchomienia programu.

@Problem w takiej postaci, w jakiej istnieje aż prosi się o wykorzystanie kart graficznych, gdzie każdy z procesorów mógłby zająć się podzielnością przez jeden z dzielników. Wydaje mi się, że horrendalnie wzrosłaby szybkość przetwarzania, gdyby karta graficzna także mogła brać udział w obliczeniach. Że są plany rozszerzenie aplikacji o tę możliwość, w to nie wątpię, ale w najbliższym czasie (jest to już tworzone), czy raczej w dalszej perspektywie?

Z tym niestety wiążą się pewne trudności. Procesory strumieniowe w GPU to bardzo proste konstrukcje które bardzo słabo sobie radzą ze skomplikowanymi algorytmami które są niezbędne do obsługi dużych liczb (operacje bitowe i duża ilość instrukcji warunkowych). Dobrym przykładem takiego stanu rzeczy są np. pakiety VLAR w Seti@home. Przy kombinacji danych które występują w tych pakietach proporcja ilości instrukcji sterujących (testowanie, skoki itp.) w stosunku do ilości instrukcji arytmetycznych staje się niekorzystna do tego stopnia że obliczenia CPU oblicza je sporo szybciej niż GPU. Podczas gdy dla pozostałych pakietów GPU jest kilka/kilkanaście razy szybsze od CPU.

Tu przyszłość bardziej bym widział w rozwiązaniach takich jak Terascale Intel-a które to ma zawierać duża ilość (dziesiątki może nawet setki) rdzeni podobnych do tych z procesorów pentium, czyli zwierających mechanizmy które pomagają w obsłudze tego typu instrukcji, takie jak przewidywanie skoków, obsługa bitów przeniesienia i pożyczki itp.

@Z jednej strony to może przesada, ale z drugiej... Liczba telefonów komórkowych, tabletów, iPadów i iPodów rośnie z każdym dniem, a zarazem zauważam tendencję, aby zastępować tym wszystkim PCty i Laptopy (choć to może tylko marzenia speców od marketingu? :P ). A o tym segmencie potencjalnie "chętnych do obliczeń" myślałeś? Procesory ma toto już prawie jak zwykłe komputery, więc zadania mogłyby być nawet podobne, włączone jest non-stop... Oczywiste wprawdzie, że podczas pracy na baterii nie mógłby działać BOINC, ponieważ nie jestem pewien, czy dobę by taki sprzęt wytrzymał, ale już chociażby podczas ładowania baterii - czemu nie? :)
Jak to od strony praktycznej wygląda? Potrzebne są z Twojej strony jakieś dodatkowe wersje programów, czy też wystarczy ściągnąć BOINCa, odpowiednio skonfigurować (praca na baterii jest chyba domyślnie zatrzymująca obliczenia) i jazda? :)

O widzisz, akurat kolega z naszej drużyny napisał klienta boinc dla androida i przeniósł aplikację projektu Enigma@home, więc zapewne dało by się przenieść i te aplikacje. Nie wiem tylko czy przy ograniczonych zasobach zarówno ludzkich jak i czasu nie jest jeszcze za wcześnie żeby zużywać je na takie migracje.
Kocham pracę, mogę na nią patrzeć godzinami.

Michu86

Dziękuję za wszystkie wyczerpujące odpowiedzi :)

Wprawdzie nasuwają się kolejne w związku z RHO, P-1 oraz ECM Lenstry, ale o to może zapytam, kiedy zacznie działać :)

Po odpowiedziach widzę, że poza użyczeniem komputera w niczym nie pomogę (bo połowy nie rozumiem ;) ), a więc tylko pozdrawiam i życzę powodzenia przy dalszym rozwijaniu projektu :)

Michu86

Witam

Miesiąc minął - nie wiem, czy to dużo, czy to mało, niemniej brak jakiejkolwiek informacji ze strony opiekuna jest trochę... Demotywujące? No w każdym razie, aby trochę ożywić temat postanowiłem się odezwać :) A przy okazji kilka pytań i spostrzeżeń:


Co do zaprzęgnięcia GPU do obliczeń, to jednak nadal będę starał się przekonać, gdyż nawet, gdyby ostatecznie obliczenia miały trwać dłużej niż na CPU, to zawsze jest to kolejna jednostka obliczeniowa, która byłaby wykorzystana do obliczeń, a nie leżała bezczynnie. Z drugiej strony ja mam na myśli tylko nowsze karty graficzne, w których jest już GPGPU, czyli możliwość wykorzystania kart graficznych do obliczeń ogólnego przeznaczenia, czyli dokładnie to, co byłoby tutaj wymagane.
Że to kolejny rodzaj platformy, że różne rodzaje kart graficznych (przede wszystkim podział nVidia i AMD) - to wstępnie można to napisać "byle jak" i korzystając z OpenCL, który zadziała na kartach obu firm. O ile wykorzystanie GPU do obliczania L-L mogłoby być kłopotliwe ze względu na ilość potrzebnej pamięci, o tyle do sprawdzania podzielności nadają się wręcz doskonale - dużo równoległych obliczeń.
Wręcz sam chciałem takie "byle co" napisać, byle by było, ale niestety za stary komp i karta graficzna jeszcze kilka epok przed GPGPU. Jednak poza ewentualnymi problemami czasowymi nie widzę żadnych przeciwskazań, aby pójść w kierunku wykorzystania GPU.


Proszę także o informację, jak tam wygląda sprawa z L-L ? Kiedy ruszą odpowiednie testy, tak że nasze komputery zajmą się faktycznym szukaniem liczb pierwszych, a nie odrzucaniem pozostałych? :) Wspominał też Pan coś o innych metodach - może któraś z nich ruszyła do przodu?


Zauważyłem też 2 "nowe" statusy:
- zawieszony (dobrze zgaduję, że po prostu komputer, od którego nie było odpowiedzi, w końcu tę odpowiedź dał?)
- Przetwarzany, wysoki priorytet (co oznacza ten wysoki priorytet, dlaczego się pojawił i jak wpływa na obliczenia, skoro i tak jeden procesor może obsłużyć tylko jedno zadanie w tym projekcie?)


No i trochę mniej pozytywnie, tzn. liczba osób i ilość zdobywanych przez projekt punktów - wprawdzie wcześniej (jestem w tym dopiero od półtora miesiąca) tego nie obserwowałem, ale jak dotąd zauważam jedynie spadki. Domyślam się, że jest to spowodowane "wyścigiem" na początku marca, niemniej dobrze by było zatrzymać po takim wyścigu jak najwięcej (krótkie statystyki można zobaczyć tutaj. Osobiście uważam, że może to być spowodowane dość małą ilością informacji z Pana strony (3 nowe wiadomości na stronie projektu, w tym ostatnia z połowy lutego). Przydałyby się choć krótkie, być może nic nie wnoszące, ale jakiekolwiek newsy, byleby tylko dać do zrozumienia, że projekt "się rusza". Mi też takie informacje są potrzebne, przy czym sam dbam o to, żeby je uzyskać poprzez wypytywanie na tym forum tutaj :) Gdyż na forum projektu także od miesiąca cisza (poza dzisiejszą/wczorajszą informacją o błędzie pewnej osoby). Moim zdaniem gdyby ludzie widzieli, że prawie ciągle coś się dzieje mieliby większą ochotę wziąć czynny udział w projekcie.
Z drugiej strony czytając oficjalne forum rozumiem pewien dyskomfort, gdzie prawie każdy tylko namawia, żeby to zostawić i podłączyć się do GIMPSa - to nie pomaga, ale nie przejmuj się nimi, a poprzez ciągły rozwój pokazuj, że dystans pomiędzy projektami się zmniejsza :)


Tylko wspomnę też ponownie o zmianie prezentowania Computation Progress - spisując statystyki widzę, że nawet gdyby ograniczyć się tylko do pierwszych 100mln, obejmowałoby to większość interesującego nas przedziału :>


No i kolejna propozycja pewnej zmiany - Tdt znacznie wyprzedza etdt i xtdt, tak iż w obecnej sytuacji nim xtdt dojdzie do liczb, które zostały przeszukane przez tdt minie pewnie z ... kilka lat?
W każdym razie proponowałbym, aby wysyłać same xtdt i etdt do wszystkich (wyjątek, jeśli ktoś sobie ustawi, że chce dostawać tylko tdt) - w ten sposób bardziej skupimy się na przedziale, który jest na tą chwilę bardziej interesujący.


Na razie nic więcej nie przychodzi mi do głowy ;) Proszę o odpowiedź w wolnym (albo "wolniejszym" :) ) czasie.

Pozdrawiam

krzyszp

Cytat: Michu86 w 12 Kwiecień 2012, 00:25
Zauważyłem też 2 "nowe" statusy:
- zawieszony (dobrze zgaduję, że po prostu komputer, od którego nie było odpowiedzi, w końcu tę odpowiedź dał?)
- Przetwarzany, wysoki priorytet (co oznacza ten wysoki priorytet, dlaczego się pojawił i jak wpływa na obliczenia, skoro i tak jeden procesor może obsłużyć tylko jedno zadanie w tym projekcie?)
Co do reszty pytań, to nie potrafię pomóc, ale "zawieszony" oznacza przerwanie działania aplikacji (zwykle z powodu przełączenia managera na inną), natomiast "Przetwarzany, wysoki priorytet" oznacza, że wg managera projekt musi dostać więcej czasu, aby próbka zdążyła się zakończyć przed "deadline" (czyli ostatecznym terminem zaraportowania).


Należę do drużyny BOINC@Poland
Moja wizytówka

Troll81

widzę że ostatnio wasza dyskusja miała miejsce 12 marca. Od tamtego czasu nie zadałes na forum nowych pytań, to i nie ma odpowiedzi :D Bobreckiego męcz na PW to pewnie ocknie się szybciej. Wiesz.... ludzie pracę mają, dom, dzieci... nie zawsze znajdują czas na hobby. Sam wiem ile tego sie zebrało jak kupiłem mieszkanie. Tona papierków do zrobienia a i tak jestem w plecy z niektórymi....

Sebastian M. Bobrecki

Fakt miesiąc minął a ja mam tyle na głowie że nawet tego nie zauważyłem.

Co do aplikacji GPU to ja nie mam obecnie zasobów żeby się tym zająć. Jeśli ktoś ma chęci, umiejętności i czas to ognia. Oczywiści mogę trochę pomóc czy doradzić w niektórych aspektach :)

W sprawie LL na razie sprawy nie posunęły się do przodu :( Nie ukończyłem też jeszcze aplikacji pozostałych testów :( Brakuje mi czasu do tego stopnia że ledwo opędzam kwestie administracyjne :(

Liczba stałych użytkowników, w prawdzie bardzo powoli ale rośnie. Wyścigi to taki już mają urok że ściągają masy tylko na chwilę. Nie mniej jednak po każdym pewien niewielki procent zostaje na dłużej :)

Na temat nowych wiadomości faktycznie ostatnio nie poświęciłem praktycznie ani minuty. Jest tego że jeśli już znalazłem trochę wolnego czasu wolałem go poświęcić na czynności, według mnie ważniejsze, związane z administracją i utrzymaniem. Pewne zdarzenia jednak miały miejsce (np. nowa wersja aplikacji etdt z 22 marca która powinna poprawiać wydajność o jakieś ~8%), ale jakoś mi uciekło żeby o tym napisać od razu a potem zapomniałem :( W tym temacie pewnie przydała by się pomoc.

Wskaźnik postępu myślę że dosłownie na dniach (lub nocach) zostanie zmodyfikowany.

Co do wyboru aplikacji to jest tak że serwer BOINC domyślnie wysyła zadania dla wszystkich dostępnych aplikacji (czyli tak jakby wszystkie były wybrane). Natomiast aplikacja tdt, co zrozumiałe ze względu na małe zapotrzebowanie na pamięć i krótki czas obliczeń, cieszy się największą popularnością. Jestem za pozostawieniem wolontariuszom pełnej swobody wyboru. Co więcej myślę że narzucanie lub ograniczanie wyboru mogło by zniechęcić niektórych ludzi.
Kocham pracę, mogę na nią patrzeć godzinami.

Troll81

to może klega tak zainteresowany zechciałby zostać współtwórcą projektu?

Michu86

Dziękuję za odpowiedź mimo niewielkiej ilości czasu :)

"Jestem za pozostawieniem wolontariuszom pełnej swobody wyboru. Co więcej myślę że narzucanie lub ograniczanie wyboru mogło by zniechęcić niektórych ludzi."
Jak najbardziej wybór niech będzie, ale na przykład ja nie zmieniałem nic, niczego nie wybierałem, czyli mam domyślnie wszystkie 4:
tdt
etdt
xtdt
LL
Chodzi mi o to, żeby rzadziej wysyłać tdt osobom, którym wisi, jakiego rodzaju dostają zadania - to miałem na myśli.


Co do wersji na GPU - naprawdę miałem ochotę już prawie zacząć pisać, ale... Nie posiadam kompa, na którym byłbym w stanie na bieżąco sprawdzać, czy mój kod działa, na którym mógłbym w ogóle ćwiczyć tego typu zagadnienia, więc niestety w obecnej chwili także nie pomogę, mimo że projektem się mocno interesuję. Pomyślę nad tym.


O tej nowej wersji napisz - krótko, ale żeby było cokolwiek ;) Jak wejdzie nowy wygląd, to też krótkie info, żeby tylko cokolwiek tam było :)

Troll81

A jakiego kompa byś potrzebował??

Michu86

Mam dwa laptopy, przy czym jeden ma 10 lat, a drugi 6 :> Na razie popytam się "w okolicy", może ktoś będzie miał coś nowszego do pożyczenia, to zacznę się uczyć programowania współbieżnego ;)

Troll81

u nas dsyć sporo było oddawania sprzętu ostatnio. Poszły jakies karty graficzne. Jakieś dwurdzeniówki też chyba... orientuj się to wyrwiesz coś ciekawego...

Michu86

Tylko widzisz, mieszkam z 3 kolegami w 2-pokojowym mieszkaniu, więc na stacjonarkę nie ma najzwyczajniej w świecie miejsca, a z kolei co do wymogów dotyczących laptopa, to mam je tak wygórowane, że aż szkoda czasu (mojego na pisanie, a Twojego na czytanie ;) ) - mam IBM T42 oraz IBM T60, a wcześniej jeszcze dwa inne (inny T42 i T40) - tak więc można się domyślić, z jakiej rodziny będzie kolejny ;)

Kolega ma 1 kompa, na którym zadziała OpenCL, teraz tylko trzeba wyłuskać trochę więcej czasu :)

Troll81

Za czasów studenckich mieszkałem w 2 pokojowym w 6 osób. A 4 osoby na 2 pokoje to był po prostu standard studencki. I wszyscy mieliśmy stacjonarki :D

Michu86

Hmmm...

Czy ktoś może wie, dlaczego ostatnimi czasy nie działa ten projekt?

PoznanskaPyra

Ostatnio dostałem próbki 4 miesiące temu.
WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

matszpk

Ja miałem trochę więcej szczęścia dostałem kilka WU po zaprzestaniu generowaniu WU. Mam nadzieję, że to tymczasowe. trochę szkodza (tak bardzo chciałem za pomocą mojego staruszka wejść do elity  :( ). teraz liczę NumberFields@Home. na forum projektu od kilku dni nic się ciekawego nie dzieje  :(.

Michu86

No ja ostatnie punkty dostałem 15 czerwca, a jedno wykonane zadanie nadal czeka na odesłanie ...

Myślę, że opiekun by się podzielił informacją, gdyby miał zamiar zakończyć projekt, więc liczę, że to po prostu usterka, która zostanie usunięta :) ... Z drugiej strony ciągłe narzekania na brak czasu :(

Tomasz R. Gwiazda

http://mersenneathome.net/forum_thread.php?id=103

Sebastianie co sie stalo ? nie chodzi o aspekt sprzetowo/finansowy chyba ? bo z tym by mogla pomoc Fundacja.
czy jest szansa na powrot kiedys projektu ?