Article View: pl.comp.programming
Article #217485Re: Jak zrobić test za pomocą PractRand?
From: osobli...
Date: Fri, 20 Aug 2021 18:45
Date: Fri, 20 Aug 2021 18:45
62 lines
6009 bytes
6009 bytes
> 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: "0101010101010001011110101010101011101001011111010110111110...01010101010101010010101010101001010101010100101010101011111" Po prostu pseudolosowy ciąg zer i jedynek, nic więcej.
Technical Details
Message-ID:
<f201e244-08b1-4ec6-977a-40aba70eac76n@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news.uzoreto.com!newsfeed.xs4all.nl!newsfeed9.news.xs4all.nl!feeder1.cambriumusenet.nl!feed.tweak.nl!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mailReferences:
<6a2d60cf-5d52-4f70-a0bb-67ac51f2ea47n@googlegroups.com> <0b0e0278-0506-4691-8051-1f73a327e87an@googlegroups.com> <1aabf0e1-8c01-4479-90fc-62d1026d221cn@googlegroups.com> <fcda7316-c8b0-445b-a5d5-2c8db0e2c939n@googlegroups.com> <59524bbe-00b1-4756-b359-19bb000e8641n@googlegroups.com> <2aec1845-1ec1-4e83-835a-ccc9aa089c23n@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 2002:ad4:4533:: with SMTP id l19mr3255707qvu.55.1629485123092; Fri, 20 Aug 2021 11:45:23 -0700 (PDT) X-Received: by 2002:a05:622a:84:: with SMTP id o4mr18849454qtw.174.1629485122891; Fri, 20 Aug 2021 11:45:22 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news.uzoreto.com!newsfeed.xs4all.nl!newsfeed9.news.xs4all.nl!feeder1.cambriumusenet.nl!feed.tweak.nl!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.programming Date: Fri, 20 Aug 2021 11:45:22 -0700 (PDT) In-Reply-To: <2aec1845-1ec1-4e83-835a-ccc9aa089c23n@googlegroups.com> Injection-Info: google-groups.googlegroups.com; posting-host=77.169.12.87; posting-account=5sNFBgoAAAAxlae8lv99mPyGsDs6ynwB NNTP-Posting-Host: 77.169.12.87 References: <6a2d60cf-5d52-4f70-a0bb-67ac51f2ea47n@googlegroups.com> <0b0e0278-0506-4691-8051-1f73a327e87an@googlegroups.com> <1aabf0e1-8c01-4479-90fc-62d1026d221cn@googlegroups.com> <fcda7316-c8b0-445b-a5d5-2c8db0e2c939n@googlegroups.com> <59524bbe-00b1-4756-b359-19bb000e8641n@googlegroups.com> <2aec1845-1ec1-4e83-835a-ccc9aa089c23n@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <f201e244-08b1-4ec6-977a-40aba70eac76n@googlegroups.com> Subject: Re: Jak zrobić test za pomocą PractRand? From: "osobli...@gmail.com" <osobliwy.nick@gmail.com> Injection-Date: Fri, 20 Aug 2021 18:45:23 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit