-
Data: 2021-08-20 18:14:52
Temat: Re: Jak zrobić test za pomocą PractRand?
Od: "o...@g...com" <o...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]> Odnośnie C++ właśnie wkleiłem kluczową linię kodu:
> fwrite( buf, 1, sizeof(buf), stdout );
> Lina ta wywala binarnie bufor na standardowe wyjście, wcześniej trzeba go zapełnić
binarnymi danymi. W pliku do którego
> dałem link jest pełny przykład.
>
> Odnośnie Practrand ta linia jest kluczowa:
> { time ./$prog | ./../../PractRand/RNG_test stdin -singlethreaded -tlmax 360000s >
$test; } 2> $time
> Przekierowuje ona standardowe wyjście programu do programu PractRand, reszta to
opcje, pomiar czasu, przekierowanie wyników.
>
> W skrócie, jeśli PractRand jest w tym samym katalogu co program, uruchamia się to
tak:
> ./Program | ./PractRand stdin [tu wpisz opcje PractRand]
Wydaje mi się, że prędzej, niż ogarnę C++ zrobię odpowiedni plik. Przepisanie kodu z
Pythona do C++ musiałbym raczej komuś zlecić. Także chyba z pisaniem programu w C++
dam sobie spokój (tym bardziej, że mój program wykonuje operacje na liczbach
128-bitowych, a C++ takich nie obsługuje, zaś zainstalowanie odpowiedniej biblioteki
do obsługi tak dużych liczb, to już jest dla mnie zadanie na długie tygodnie, może
miesiące, bez gwarancji sukcesu - gdy próbowałem zrobić to lata temu nie udało się).
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?
Dieharder przykładowo potrzebował 32-bitowe liczby wypisane jedna pod drugą w ilości
blisko 50 GB (których zapisanie do pliku i wygenerowanie trwało kilka godzin), ż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".
> Jeśli dane są w pliku binarnym to tak:
> cat dane_binarne.bin | ./PractRand stdin [tu wpisz opcje PractRand]
Jak utworzyć plik .bin? Mam 50GB danych binarnych, to jest zera i jedynki w formie
.txt. Ale pliki .bin to chyba coś innego?
> Jeśli w są w tekstowym, to np. tak (nie wiem czy można prościej, by musiała być
odpowiednia
> opcja PractRand i odpowiedni format danych tekstowych - może jest):
> cat dane_tekstowe.txt | ./zamien_na_binarne | ./PractRand stdin [tu wpisz opcje
PractRand]
> Ale program który poprawnie zamieni Twoje dane tekstowe na dane binarne musisz
napisać sobie sam.
Tutaj piszą:
https://www.researchgate.net/publication/340214294_A
_Practical_Approach_to_Testing_Random_Number_Generat
ors_in_Computer_Algebra_Systems
że:
"For testing data from a file, the fol-lowing command can be used:
cat file.data | RNG_test stdin64
The data in the file must be binary; text files are not supported."
Że pliki tekstowe nie są akceptowane, więc, czy na pewno można to tak zrobić i to
zadziała poprawnie? Same testy mi się wykonały, ale mam dużo FAILI:
rng=RNG_stdin, seed=0x8117bdda
length= 256 megabytes (2^28 bytes), time= 2.9 seconds
Test Name Raw Processed Evaluation
BCFN(2+0,13-2,T) R=+27538479 p = 0 FAIL !!!!!!!!
BCFN(2+1,13-2,T) R=+13016562 p = 0 FAIL !!!!!!!!
BCFN(2+2,13-3,T) R=+8037376 p = 0 FAIL !!!!!!!!
BCFN(2+3,13-3,T) R=+3903883 p = 0 FAIL !!!!!!!!
BCFN(2+4,13-3,T) R=+1911999 p = 0 FAIL !!!!!!!!
BCFN(2+5,13-4,T) R=+1199616 p = 0 FAIL !!!!!!!!
BCFN(2+6,13-5,T) R=+746903 p = 0 FAIL !!!!!!!!
BCFN(2+7,13-5,T) R=+370686 p = 0 FAIL !!!!!!!!
BCFN(2+8,13-6,T) R=+228593 p = 0 FAIL !!!!!!!!
BCFN(2+9,13-6,T) R=+113862 p = 0 FAIL !!!!!!!!
BCFN(2+10,13-7,T) R=+69095 p = 0 FAIL !!!!!!!!
BCFN(2+11,13-8,T) R=+40957 p = 0 FAIL !!!!!!!!
BCFN(2+12,13-8,T) R=+20441 p = 1e-5188 FAIL !!!!!!!!
BCFN(2+13,13-9,T) R=+11734 p = 8e-2638 FAIL !!!!!!!!
BCFN(2+14,13-9,T) R= +5853 p = 3e-1316 FAIL !!!!!!!!
DC6-9x1Bytes-1 R=+13379089 p = 0 FAIL !!!!!!!!
Gap-16:A R=+5676902 p = 0 FAIL !!!!!!!!
Gap-16:B R=+25156958 p = 0 FAIL !!!!!!!!
FPF-14+6/16:(0,14-0) R=+9523586 p = 0 FAIL !!!!!!!!
FPF-14+6/16:(4,14-1) R=+11217844 p = 0 FAIL !!!!!!!!
FPF-14+6/16:all R=+16607352 p = 0 FAIL !!!!!!!!
FPF-14+6/16:cross R=+56967921 p = 0 FAIL !!!!!!!!
BRank(12):128(4) R= +4568 p~= 2e-2430 FAIL !!!!!!!!
BRank(12):256(4) R= +9390 p~= 6e-4995 FAIL !!!!!!!!
BRank(12):384(1) R= +7106 p~= 3e-2140 FAIL !!!!!!!!
BRank(12):512(2) R=+13459 p~= 1e-4052 FAIL !!!!!!!!
BRank(12):768(1) R=+14339 p~= 1e-4317 FAIL !!!!!!!!
BRank(12):1K(2) R=+27098 p~= 2e-8158 FAIL !!!!!!!!
BRank(12):1536(1) R=+28805 p~= 2e-8672 FAIL !!!!!!!!
BRank(12):2K(1) R=+38450 p~= 0 FAIL !!!!!!!!
[Low1/8]BCFN(2+0,13-4,T) R= +4290 p = 2e-1874 FAIL !!!!!!!!
[Low1/8]BCFN(2+1,13-4,T) R= +4280 p = 4e-1870 FAIL !!!!!!!!
[Low1/8]BCFN(2+2,13-5,T) R= +5376 p = 1e-2104 FAIL !!!!!!!!
[Low1/8]BCFN(2+3,13-5,T) R= +5322 p = 1e-2083 FAIL !!!!!!!!
[Low1/8]BCFN(2+4,13-5,T) R= +5216 p = 4e-2042 FAIL !!!!!!!!
[Low1/8]BCFN(2+5,13-6,T) R= +6417 p = 4e-2198 FAIL !!!!!!!!
[Low1/8]BCFN(2+6,13-6,T) R= +6363 p = 1e-2179 FAIL !!!!!!!!
[Low1/8]BCFN(2+7,13-7,T) R= +7512 p = 4e-2260 FAIL !!!!!!!!
[Low1/8]BCFN(2+8,13-8,T) R= +8494 p = 1e-2156 FAIL !!!!!!!!
[Low1/8]BCFN(2+9,13-8,T) R= +7611 p = 1e-1932 FAIL !!!!!!!!
[Low1/8]BCFN(2+10,13-9,T) R= +7064 p = 2e-1588 FAIL !!!!!!!!
[Low1/8]BCFN(2+11,13-9,T) R= +4936 p = 3e-1110 FAIL !!!!!!!!
[Low1/8]DC6-9x1Bytes-1 R=+391.8 p = 4.9e-263 FAIL !!!!!!
[Low1/8]FPF-14+6/16:(0,14-0) R= +56.6 p = 1.0e-51 FAIL !!!!
[Low1/8]FPF-14+6/16:(1,14-1) R= +39.1 p = 1.9e-34 FAIL !!!
[Low1/8]FPF-14+6/16:(2,14-2) R= +24.1 p = 7.6e-21 FAIL !
[Low1/8]FPF-14+6/16:(3,14-2) R= +11.6 p = 6.6e-10 very suspicious
[Low1/8]FPF-14+6/16:all R= +80.5 p = 4.7e-75 FAIL !!!!
[Low1/8]FPF-14+6/16:all2 R= +1234 p = 8.7e-437 FAIL !!!!!!!
[Low1/8]FPF-14+6/16:cross R=+347.9 p = 4.3e-274 FAIL !!!!!!
[Low4/32]BCFN(2+0,13-4,T) R=+5636982 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+1,13-4,T) R=+2664412 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+2,13-5,T) R=+1609820 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+3,13-5,T) R=+781907 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+4,13-5,T) R=+382945 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+5,13-6,T) R=+233930 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+6,13-6,T) R=+115740 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+7,13-7,T) R=+69900 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+8,13-8,T) R=+41294 p = 0 FAIL !!!!!!!!
[Low4/32]BCFN(2+9,13-8,T) R=+20560 p = 6e-5219 FAIL !!!!!!!!
[Low4/32]BCFN(2+10,13-9,T) R=+11783 p = 1e-2648 FAIL !!!!!!!!
[Low4/32]BCFN(2+11,13-9,T) R= +5870 p = 4e-1320 FAIL !!!!!!!!
[Low4/32]DC6-9x1Bytes-1 R=+2399367 p = 0 FAIL !!!!!!!!
[Low4/32]Gap-16:A R=+756848 p = 0 FAIL !!!!!!!!
[Low4/32]Gap-16:B R=+4597397 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:(0,14-0) R=+1007012 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:(4,14-3) R=+1156867 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:(8,14-6) R=+1083851 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:(12,14-9) R=+1027154 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:all R=+1913749 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:all2 R=+1775316442517 p = 0 FAIL !!!!!!!!
[Low4/32]FPF-14+6/16:cross R=+10872050 p = 0 FAIL !!!!!!!!
[Low4/32]BRank(12):128(4) R= +3922 p~= 8e-2087 FAIL !!!!!!!!
[Low4/32]BRank(12):256(2) R= +5696 p~= 1e-1715 FAIL !!!!!!!!
[Low4/32]BRank(12):384(1) R= +6094 p~= 1e-1835 FAIL !!!!!!!!
[Low4/32]BRank(12):512(2) R=+11541 p~= 2e-3475 FAIL !!!!!!!!
[Low4/32]BRank(12):768(1) R=+12294 p~= 6e-3702 FAIL !!!!!!!!
[Low4/32]BRank(12):1K(1) R=+16427 p~= 3e-4946 FAIL !!!!!!!!
[Low1/32]BCFN(2+0,13-5,T) R= +1333 p = 5.0e-522 FAIL !!!!!!!
[Low1/32]BCFN(2+1,13-5,T) R= +1309 p = 1.3e-512 FAIL !!!!!!!
[Low1/32]BCFN(2+2,13-6,T) R= +1678 p = 4.5e-575 FAIL !!!!!!!
[Low1/32]BCFN(2+3,13-6,T) R= +1603 p = 1.6e-549 FAIL !!!!!!!
[Low1/32]BCFN(2+4,13-6,T) R= +1599 p = 6.2e-548 FAIL !!!!!!!
[Low1/32]BCFN(2+5,13-7,T) R= +1945 p = 1.3e-585 FAIL !!!!!!!
[Low1/32]BCFN(2+6,13-8,T) R= +2317 p = 6.9e-589 FAIL !!!!!!!
[Low1/32]BCFN(2+7,13-8,T) R= +2195 p = 5.7e-558 FAIL !!!!!!!
[Low1/32]BCFN(2+8,13-9,T) R= +2337 p = 2.7e-526 FAIL !!!!!!!
[Low1/32]BCFN(2+9,13-9,T) R= +2193 p = 6.4e-494 FAIL !!!!!!!
[Low1/32]DC6-9x1Bytes-1 R=+126.7 p = 8.2e-67 FAIL !!!!
[Low1/32]FPF-14+6/16:(0,14-2) R= +22.0 p = 4.9e-19 FAIL !
[Low1/32]FPF-14+6/16:(1,14-2) R= +12.1 p = 2.1e-10 VERY SUSPICIOUS
[Low1/32]FPF-14+6/16:(2,14-3) R= +9.0 p = 1.1e-7 suspicious
[Low1/32]FPF-14+6/16:(3,14-4) R= +6.8 p = 1.8e-5 unusual
[Low1/32]FPF-14+6/16:all R= +29.9 p = 1.0e-26 FAIL !!
[Low1/32]FPF-14+6/16:all2 R=+151.1 p = 3.4e-53 FAIL !!!!
[Low1/32]FPF-14+6/16:cross R= +95.9 p = 4.0e-78 FAIL !!!!
...and 36 test result(s) without anomalies
Co więcej w ten sposób PractRand przyjął też plik z wypisanymi liczbami 32-bitowymi
jedna pod drugą w formacie dziesiętnym i też pokazał jakieś FAILE. Pytanie co program
testuje, skoro plik był w nieodpowiednim formacie. Mam podejrzenia, że nie robi
testów w sposób poprawny.
Następne wpisy z tego wątku
- 20.08.21 18:57 o...@g...com
- 20.08.21 19:26 M.M.
- 20.08.21 20:45 o...@g...com
- 20.08.21 22:32 M.M.
- 20.08.21 23:56 o...@g...com
- 21.08.21 00:11 M.M.
- 21.08.21 00:20 o...@g...com
- 21.08.21 00:27 o...@g...com
- 21.08.21 00:49 M.M.
- 21.08.21 01:55 o...@g...com
- 21.08.21 11:40 M.M.
- 21.08.21 13:27 M.M.
- 21.08.21 16:53 o...@g...com
- 21.08.21 17:18 M.M.
- 21.08.21 17:51 o...@g...com
Najnowsze wątki z tej grupy
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-11-16 Łódź => Frontend Engineer (Three.js) <=
- 2024-11-16 Warszawa => Expert Recruiter 360 <=
- 2024-11-16 Żerniki => Starszy specjalista ds. księgowości/ Samodzielny księgo
- 2024-11-16 Pruszków => Team Leader (PHP+React) <=
- 2024-11-16 Warszawa => Senior Cloud Consultant (AWS) <=
- 2024-11-16 Warszawa => Sitecore Developer <=
- 2024-11-16 Akta sprawy Kajetan Poznański
- 2024-11-16 Warszawa => OpenText ECM Specialist <=
- 2024-11-16 Warszawa => Account Manager - Sprzedaż Usług Rekrutacyjnych <=
- 2024-11-16 Warszawa => Account Manager - Usługi rekrutacyjne <=
- 2024-11-15 Google Play
- 2024-11-15 Szybcy i wściekli
- 2024-11-16 Opis produktu z Aliexpress
- 2024-11-15 No proszę, a śmialiście się z hindusów.
- 2024-11-14 Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800