eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJak zrobić test za pomocą PractRand? › Re: Jak zrobić test za pomocą PractRand?
  • X-Received: by 2002:a05:6214:144e:: with SMTP id b14mr22391763qvy.8.1629491574804;
    Fri, 20 Aug 2021 13:32:54 -0700 (PDT)
    X-Received: by 2002:a05:6214:144e:: with SMTP id b14mr22391763qvy.8.1629491574804;
    Fri, 20 Aug 2021 13:32:54 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erj
    e.net!feeder.erje.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!
    peer.ams1.xlned.com!news.xlned.com!peer01.iad!feed-me.highwinds-media.com!news.
    highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!goo
    gle-groups.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Fri, 20 Aug 2021 13:32:54 -0700 (PDT)
    In-Reply-To: <f...@g...com>
    Injection-Info: google-groups.googlegroups.com; posting-host=37.128.16.171;
    posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
    NNTP-Posting-Host: 37.128.16.171
    References: <6...@g...com>
    <0...@g...com>
    <1...@g...com>
    <f...@g...com>
    <5...@g...com>
    <2...@g...com>
    <f...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <4...@g...com>
    Subject: Re: Jak zrobić test za pomocą PractRand?
    From: "M.M." <m...@g...com>
    Injection-Date: Fri, 20 Aug 2021 20:32:54 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    X-Received-Bytes: 7464
    Xref: news-archive.icm.edu.pl pl.comp.programming:215503
    [ ukryj nagłówki ]

    On Friday, August 20, 2021 at 8:45:23 PM UTC+2, o...@g...com wrote:
    > > Jeśli dane są w pliku binarnym to tak:
    > > cat dane_binarne.bin | ./PractRand stdin [tu wpisz opcje PractRand]
    > Jakie są te opcje PractRand? Ja uruchamiam to w ten sposób:
    >
    > cat plik.data | ./RNG_test stdin
    >
    > Niestety zwiększenie rozmiaru pliku do 230 GB nie pomogło, a więcej nie zmieści mi
    się na dysku. Wciąż dziwią mnie te oblane testy, podczas, gdy wszystkie testy
    Dieharder ten generator zdawał. Albo PractRand jest o tyle bardziej wymagający, albo
    nadal coś jest nie tak.
    > > > Wydaje mi się, że prędzej, niż ogarnę C++ zrobię odpowiedni plik.
    > > Można ,ale dobre testowanie wymaga dużo danych. Osobiście testowałem generatory
    minimum
    > > godzinę, maksimum (o ile pamiętam) dwa tygodnie na jednym wątku. Przez ten czas,
    szczególnie
    > > przez dwa tygodnie, generator jest w stanie wygenerować sporo liczb i program
    testowy sporo skonsumować.
    > > Liczby z dwóch tygodni nie wiem czy zmieszczą się na dysku.
    > Na pewno się nie zmieszczą. Już osiągnąłem limit. Z jakichś powodów zresztą bardzo
    szybko udało mi się to wygenerować i zapisać do pliku (godzina z hakiem), tak jakby
    liczby w formacie binarnym zapisywały się szybciej. 50 GB liczb 32-bitowych w
    formacie dziesiętnym zapisywało mi się kilka godzin.
    >
    > Ile GB w takim przetestowałeś, skoro robiłeś testy nawet 2 tygodnie?
    > > > Przepisanie kodu z Pythona do C++ musiałbym raczej komuś zlecić.
    > > Co tam konkretnie jest do napisania? Może coś podobnego jest to gotowe pod
    linkami które podałem?
    > Przykładowy program:
    >
    > https://pastebin.com/K164URZQ
    >
    > Liczby 128-bitowe są tam ładowanie po prostu do listy allstream, ale oczywiście
    można to zaaranżować inaczej.
    > > > Pytanie, czy będę w stanie wygenerować odpowiedni plik w odpowiednim czasie (bo
    pomimo, że generatory, które testuję są
    > > > jednymi z najszybszych na świecie, co do zasady są podobne do PCG generators,
    to Python nie dość, że bywa 50-100 razy
    > > > wolniejszy niż C++, to jeszcze do tego sam zapis do pliku trwa długo i jak
    szybki nie byłby generator - nie da się tego procesu
    > > > przyspieszyć). Ile PractRand potrzebuje danych?
    > > Zapis całego dużego dysku to np. jedna doba, ale zależy jaki szybki/duży dysk,
    może być godzina, może być tydzień. Trudno
    > > bez testów powiedzieć czy wolniejszy będzie zapis czy powolne generowanie
    najszybszym generatorem na świecie. PractRand
    > > tym lepiej testuje im więcej danych otrzyma.
    > Ja zapisałem cały dysk w godzinę z hakiem.
    > > > żeby generator nie oblewał testów (gdy danych było za mało plik był zawijany i
    do testów był brane w kółko te same liczby, do
    > > > powodowało oblewanie testów). A i tak zawijał niektóre próbki, tzw. "
    rewounds".
    > > Temat jest trudniejszy, może generator na małych zapętlonych danych przechodzić
    test, na na długich oblewać.
    > W każdym razie wszystkie testy przy odpowiedniej ilości danych zdawał. Wystarczyło
    50 GB danych, zapisanych w formacie dziesiętnym jako liczby 32-bitowe.
    > > Chyba najlepiej odtworzyć te same dane losowe co były użyte w programie, aby mieć
    pewność że program
    > > pracował na losowych danych które przechodzą testy statystyczne.
    > Używam tych samych danych. A mimo to w PractRand pełno testów jest niezdanych.
    > > Zadziała, ale jeśli tester nie wspomaga plików tekstowych, to trzeba samemu
    napisać program który zamieni dane tekstowe na binarne.
    > > Potem dam przykładowy kod w C++, może dziś wieczorem, to kilka linijek.
    > Wygenerowałem plik .data. Zapisałem tam liczby w formacie binarnym. Wszystko
    wskazuje na to, że to powinno działać. Może po prostu generator nie zdaje testów. Z
    drugiej jednak strony, jeśli Ty piszesz, że testowałeś generator nawet kilka dni, to
    jest nic w porównaniu z danymi, które ja dostarczyłem do testów, wygenerowanymi
    zaledwie w godzinę. Może po prostu jest ich za mało. Ale, czy 230 GB to za mało?
    > > Teraz nie mogę, potem dam kod program który przekonwertuje plik tekstowy do
    binarnego. Proszę, pokaż ( i jeśli trzeba to opisz )
    > > jak wygląda oryginalny plik tekstowy.
    > Jeżeli zapisuję dane to pliku .txt, to wygląda to tak:
    >
    > "010101010101000101111010101010101110100101111101011
    0111110...010101010101010100101010101010010101010101
    00101010101011111"
    >
    > Po prostu pseudolosowy ciąg zer i jedynek, nic więcej.

    Ok.

    Pobierz ten plik źródłowy i skompiluj konwerter.
    https://github.com/mmarszik/01ToBin/blob/main/main.c
    pp

    Potem uruchom tak:

    TwójGeneratorZerIJedynek | ./01ToBin | ./PractRand stdin

    Albo gorzej tak:

    cat PlikZerIJedynek | ./01ToBin | ./PractRand stdin

    Nie testowałem, jak nie zadziała, to będzie trzeba sprawdzić czy konwerter nie ma
    jakiś błędów

    Pozdrawiam




Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: