Menu

Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.

Pokaż wiadomości Menu

Wiadomości - mariotti

#201
Archiwum / red hat to debian?
09 Lipiec 2013, 18:26
Cytat: buninek w 09 Lipiec 2013, 18:10
apt-get install boinc-server-maker
Nie działa.
#202
Archiwum / red hat to debian?
09 Lipiec 2013, 18:25
Cytat: Troll81 w 09 Lipiec 2013, 18:08
po prostu doszkól się. To tak jak napisanie dokumentu nie wymaga wiedzy o instalowaniu drukarek w systemie.
Ale już wydrukowanie dokumentu może wymagać umiejętności instalacji drukarki w twoim systemie :D
Nie wiem w czym się doszkolić i z jakich materiałów. Z ostatnich
materiałów jakie mi polecono, wynikało żeby pobrać źródła, a teraz
że mam instalować binarkę - tak nikt nie jest w stanie się nauczyć.

W ogóle jakie jest uzasadnienie że Debian jest lepszy do BOINC
niż inne dystrybucje? Ale pytam o konkretne uzasadnienie.

Może ten Debian jest uszkodzony i dlatego nie mogę nawet PHP
zainstalować?

Pozdrawiam
#203
Archiwum / red hat to debian?
09 Lipiec 2013, 17:53
Cytat: buninek w 09 Lipiec 2013, 17:03
Na etabie budowania aplikacji, absolutnie Tobie to nie przeszkadza czy kernel jest współdzielony czy nie. Jakbyś planował wystawić serwer boincowy na "świat", to miałoby to istotne znaczenie.
Przeszkadza brak minimalnej wiedzy i doświadczenia w administrowaniu i użytkowaniu serwerów Linuxowych.
Może ja się do tego nie nadaję....
#204
Archiwum / red hat to debian?
09 Lipiec 2013, 16:40
Cytat: buninek w 09 Lipiec 2013, 14:25
VPS-owy hosting może również uzywać Xen-a, KVM-a, VMware, wtedy twój Debian będzie używał swojego kernela.
Jeśli jest to OpenVZ, Linux VServer, LXC, chroot to kernel jest współdzielony.
Pierwszy raz w życiu słyszę o: Xen, KVM, OpenVZ, VServer, LXC, chroot.
Czy muszę rozumieć co to wszystko oznacza, aby uruchomić szkieletową
aplikację?
Pozdrawiam
#205
Archiwum / red hat to debian?
09 Lipiec 2013, 14:03
Cytat: buninek w 09 Lipiec 2013, 13:28
Przecież to jest VPS. Ty nie używasz kernela swojego (Debiana) a masz współdzielony to jest na 99% OpenVZ. W tym wypadku nie kontrolujesz kernel space, a jedynie userspace.


Gdy na VPS był ubuntu, to w version był wpis ubuntu. Teraz niby jest debian, a we wpisie
figuruje red hat. Więc nawet nie wiem jaki mam OS na VPS.


Miałem oprzeć się na czymś, co ułatwia pisanie aplikacji do obliczeń rozproszonych, a
przez kilka tygodni nie zdołałem nawet uruchomić szkieletowej aplikacji :(


Cytat: buninek w 09 Lipiec 2013, 13:28
Zainstaluj na laptopie obok Centosa i zrób chroota z Debiana i wykonaj "unama -a".
Ojej, Centos używa kernela Debiana.
Lepiej nie robię, bo jeszcze sobie system na laptopie rozwalę.

Pozdrawiam
#206
Archiwum / red hat to debian?
09 Lipiec 2013, 11:32
Cytat: krzyszp w 09 Lipiec 2013, 11:16
Mi też to się wydaje podejrzane, ale
root@rbsoftware:/etc/boinc-client# cat /proc/version
Linux version 2.6.32-042stab076.8 (root@rh6-build-x64) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Tue May 14 20:38:14 MSK 2013

na moim Debianie 7...
Myślę, że maszyna na której stoi VPS jest na CentOS'ie ;)

Zalogowałem się na inny serwer na którym był instalowany Debian:

cat /proc/version
Linux version 2.6.32-5-amd64 (Debian 2.6.32-48squeeze1) (dannf@debian.org) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Mon Feb 25 00:26:11 UTC 2013

Więc chyba jednak Red Hat w version to jakaś pomyłka?

BTW teraz nie umiem nawet na tym całym red hacie debianowym
zainstalować PHP. Podmiana źródeł apt-get nie pomaga.

BTW2: Jakieś dwa lata temu instalowałem pierwszy raz w życiu linuxa - na
swoim laptopie. Wcześniej z linuxem miałem kontakt sporadyczny, więc w
trakcie instalacji byłem praktycznie zielony. Informacje doczytywałem na
bieżąco z przypadkowo wygooglowanych stron. I jakoś dałem radę wszystko
skonfigurować, a na tym linuxie bez reinstalacji pracuję do dziś. Mam na nim
Apache, różne bazy danych, sporo aplikacji graficznych, kilka języków
programowania, kilka środowisk i nie ma problemów. Dlaczego więc teraz
nie mogę 10% tej całej funkcjonalności odtworzyć na VPS to nie wiem.

Może Debiana da się jakoś z obrazu zainstalować na VPS?

Pozdrawiam
#207
Archiwum / red hat to debian?
09 Lipiec 2013, 11:01
Zainstalowałem Debiana. Sprawdzam wersję:
cat /proc/version
Linux version 2.6.32-274.el5.028stab093.2 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Tue Aug 23 16:46:17 MSD 2011
Ekspertem od dystrybucji Linux'a to ja nie jestem, ale wydaje mi się to podejrzane :D

Pozdrawiam

#208
Archiwum / mysql
08 Lipiec 2013, 20:00
Cytat: Rysiu w 08 Lipiec 2013, 19:56
Ja jednak polecam Debiana. Ubuntu może trochę namieszać.
Ok, przeinstaluję na Debiana. Ale to następnym razem jak znajdę wolny czas, bo dziś
już padam. Dzięki za wszelką pomoc i pozdrawiam.
#209
Archiwum / mysql
08 Lipiec 2013, 19:41
Cytat: krzyszp w 08 Lipiec 2013, 19:16
Po pierwsze - olej Ubuntu. Chyba wszystkie manuale dla serwera BOINC są pisane pod Debiana.
Po drugie - na laptopie miałeś inne pakiety instalowane wcześniej, a to, że ruszylo po czasie to pewnie efekt zmiany źródeł w GIT...
Po trzecie - dlaczego wszystko na siłę kompilujesz? Nie ma gotowych pakietów dla serwera BOINC w dystrybucji? Jak ostatnio patrzyłem, to się serwer stawiało kilkoma poleceniami, przerywanymi dłuuuugim oczekiwaniem na ściągnięcie wszystkiego, ale i tak było to może z pieć komend...
Po czwarte - w sources.list masz cztery adresy - pewnie wystarczą, ale ja z reguły dokładam adresy z edycji desktopowej....
Po piąte - adresy wskazują, że używasz Ubu11.10, to dość stara, w dodatku nie-LTS wersja... Masz jakiś powód szczególny, żeby (jak już Ubu) to nie używać 12.04LTS?

Nie umiem zmienić na 12.04. Na laptopie też mam 11.10 i działa.

W tutorialu który czytałem było napisane żeby ściągnąć źródła z GITa... Nic nie
pisali o instalacji wersji skompilowanej. Komenda
apt-get install boinc-server-maker
nie działa. Z kolei na stronie z opisem instalacji:

http://wiki.debian.org/BOINC/ServerGuide/Initialisation

Nie widzę co trzeba dodać do sources.
#210
Archiwum / mysql
08 Lipiec 2013, 19:03
Cytat: krzyszp w 08 Lipiec 2013, 16:26
Akurat Qt Creatora to ja bym za przykład nie stawiał...
Na Ubuntu 13.04 Server (ale z desktopem) nie kompiluje się żaden tutorial, Na Win7 64bit z MinGW (zainstalowanym wcześniej pod AVR) to samo, dopiero na VPS'ie na czystym Debianie poszło z marszu...
W ciągu ostatniego roku w QT + QTCreator napisałem ze 20 aplikacji. Nie
sprawdzałem, ale na oko mają razem ze 2MB kodu. Wszystkie te aplikacje,
bez żadnej poprawki na konkretną platformę,  działają na kilku wersjach
windowsa i linuxa, na różnych platformach sprzętowych, są skompilowane
różnymi kompilatorami.


Cytat: krzyszp w 08 Lipiec 2013, 16:26
Skoro na laptopie działa z bata,
Na laptopie nie działało. Nie aktualizowałem zupełnie żadnego pakietu, nowych
programów też nie instalowałem. Minął miesiąc i na laptopie zaczęło działać z bata.
Nie umiem tego wyjaśnić.

Cytat: krzyszp w 08 Lipiec 2013, 16:26
a na VPS'ie nie chce, to wina definitywnie stoi po stronie konfiguracji VPS'a... Ja obstawiam właśnie nie doinstalowanie niezbędnych bibliotek... Pytanie tygodnia - jak instalowałeś system na VPSie? Czasami nie z obrazów płyt dostawcy hostingu? Jeśli tak, to "na dzieńdobry" przeleć sources.list...
Nie znam się na administracji systemami :( Nie wiem co to znaczy przelecieć
sources.list. Na VPS mam takie źródła:

cat /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu oneiric main restricted universe
deb http://archive.ubuntu.com/ubuntu oneiric-updates main restricted universe
deb http://security.ubuntu.com/ubuntu oneiric-security main restricted universe multiverse
deb http://archive.canonical.com/ubuntu oneiric partner

Nie mam bladego pojęcia czy te wpisy są dobre, złe, kompletne, czy czegoś brakuje.
Może wezmę listę z laptopa... Ale na laptopie nie robiłem update chyba od jakiś
dwóch lat i działa. Np. wersje kompilatorów są te same i na VPS i na laptopie. Ten
kompilator na laptopie mam bardzo dobrze przetestowany, więc błąd kompilatora
raczej odpada.


Cytat: Karlik w 08 Lipiec 2013, 16:39
Tylko jak odpalasz od nowa configure to nie zmieniasz plików źródłowych tylko np. parametry kompilacji, więc make
może nie być w stanie rozpoznać czy dany plik da inny wynik czy nie.
Nie wiem, tam problem polegał na całkowitym braku plików, powinien dobudować.

Pozdrawiam
#211
Archiwum / mysql
08 Lipiec 2013, 16:15
Cytat: Karlik w 08 Lipiec 2013, 15:50
No cóż... pierwszy link w google kieruje mnie na http://boinc.berkeley.edu/trac/wiki/ServerIntro gdzie na dole masz wylistowane najważniejsze paczki, które powinieneś mieć zainstalowane.
Wszystkie wymienione tam paczki mam. Spróbowałem jeszcze raz i jeszcze i dupa i
dupa, a na laptopie działa bez problemu. Dałem w końcu

make clean

I niby się zainstalowało. Ale teraz po wejściu na stronę users mam pustą stronę, a po
wejściu na www admina mam internal serwer error. Oczywiście na laptopie działa
bez zarzutu i strona userów i admina.


Cytat: Karlik w 08 Lipiec 2013, 15:50
Nie do końca rozumiem co masz na myśli  pod "badziewnie zrobiony"  - autoconfy i configure/make to dość standardowy sposób dostarczania źródeł i kompilacji w przypadku wolnego oprogramowania.
A link ze strony powyżej, gdzie masz więcej szczegółowych inforamcji o zależnościach: http://boinc.berkeley.edu/trac/wiki/SoftwarePrereqsUnix

Badziewnie - czyli zmusza programistę do odgadywania kalamburów zamiast
pozwolić mu się skupić na pracy nad aplikacją. Inne pakiety oprogramowania
też mają skomplikowane zależności i nie stwarzają problemów których nie
można rozwiązać przez kilka tygodni czasu. Takiego qtcreatora ściągam,
instaluję, wpisuję kod i aplikacje kompilują się na kilku platformach.
Skąd mam wiedzieć że coś się w projekcie porąbało i muszę uruchomić
make clean? Przecież istotą programu make było to, aby nie używać clean, a
kompilować tylko to co ostatnio zmienione. Jeśli z używaniem API też są takie
problemy, to ja za rok nie będę miał gotowego projektu...

Kiedyś np. w QT też miałem zerowe doświadczenie. Wybrałem z aplikacji
przykładowych najbardziej podobną do mojej. Co nie było oczywiste, to
doczytałem w dokumentacji. Naniosłem niezbędne zmiany do programu,
sprzedałem i zapomniałem. A tutaj jakoś tak się nie da. Zastanawiam się,
żeby użyć jakiegoś normalnego narzędzia do programowania, może właśnie
biblioteki QT. Możliwe, że w QT jakąś prostą wersję tej aplikacji już bym
miał gotową, na wiele platform z telefonami włącznie. Przy użyciu BOINC
nie mam nawet szkieletu aplikacji.

#212
Archiwum / mysql
08 Lipiec 2013, 15:21
Cytat: Karlik w 08 Lipiec 2013, 15:05
configure praktycznie zawsze jeżeli czegoś szuka to szuka nagłówków i/lub bibliotek do zlinkowania.
Po prostu musisz doinstalować jakąś paczkę devel ;)
Gdzie szukać informacji o tym jakie paczki są potrzebne?

Nie kumam czemu BOINC jest tak badziewnie zrobiony.
Jeszcze trochę się wnerwię i zrobię im konkurencję :)

Pozdrawiam
#213
Archiwum / mysql
08 Lipiec 2013, 15:01
W jaki sposób skrypt configure szuka mysqla? Pytam, bo mam zainstalowany
serwer mysql, a srypt conigure go nie widzi. Oczywiście taki problem mam na
VPS, na moim laptopie ten problem nie występuje.

Fragment konsoli:

configure: WARNING:  mysql not found.
======================================================================
WARNING: trying to build BOINC-server, but MYSQL was not be found.
If you dont want to build the server you should use --disable-server.

I am continuing now as if --disable-server had been specified.

======================================================================


Pozdrawiam
#214
Archiwum / co za.....
07 Lipiec 2013, 20:05
Cytat: krzyszp w 07 Lipiec 2013, 19:48
Ubuntu miesza trochę w ścieżkach w porównaniu do Debiana, nieduże tych nieścisłości jest, ale mogłeś akurat na coś takiego trafić...
Może spróbuj na czystym Debianie na maszynie wirtualnej?
Jak się nie da w inny sposób, to spróbuję jak piszesz. Przeinstaluję na Debiana i zacznę
od zera, ale to ostateczność, bo jednak już trochę zrobiłem i nie chcę wszystkiego
jeszcze raz przechodzić od początku. Dziwne jest to, że nagle na moim laptopie zadziałało praktycznie
bez żadnego wysiłku. Tylko pobrałem z GITa, autosetup, configure, make, potem
make_projekt i gotowe. Zajęło mi to wszystko (nie licząc czasu na czytanie że tak
trzeba zrobić) może z dwie godziny. A na VPS męczę się już któryś dzień, co jeden
problem rozwiążę, to pojawia się drugi.

Pozdrawiam
#215
Archiwum / co za.....
07 Lipiec 2013, 19:39
Cytat: krzyszp w 07 Lipiec 2013, 14:45
Tak tylko dla pewności - stawiasz na Debianie?
Wszystkie trzy instalacje o których mówiłem były/są na ubuntu.
Pozdrawiam
#216
Archiwum / co za.....
07 Lipiec 2013, 07:25
Cytat: krzyszp w 07 Lipiec 2013, 01:18
failed to copy ../tools/dir_hier_path to /home/test/www/bin/dir_hier_path
Przecież widać, że ścieżki masz nie ustawione - "/dir_hier_path "...
Ja nic takiego nie widzę :)
Jak się ustawia te ścieżki?
Nie widzę u siebie plików źródłowych, nie wiem czemu ich nie ma. Podobny
problem jak z crytp_program?

Pozdrawiam

[edit]
Nie rozumiem o co chodzi z tymi ścieżkami. Zajrzałem jeszcze do
dokumentacji skryptu make_project:
make_project
Chyba problem leży w czym innym, ale niczego nie jestem pewny :/
Stawiam pusty serwer boinca trzeci raz:
1) na laptopie - nie udało się
2) po miesiącu przerwy na tym samym laptopie - udało się
3) na VPS - nie udaje się
Za każdym razem robię wszystko tak samo a efekt całkiem inny.
Na VPS mam ten sam system operacyjny, na laptopie nie
doinstalowywałem żadnych pakietów ani nie robiłem update.
Masakra :/

Pozdrawiam
#217
Archiwum / co za.....
06 Lipiec 2013, 22:00
Masakra z tym BOINCiem, nic nie chce po prostu działać. Teraz nie ma czegoś
do mysqla (choć baza jest, wyśmienicie działa zarówno z programu mysql jaki i z poziomu
php) i brak masy plików.

Creating directories
Generating encryption keys
Copying files
failed to copy /home/test/boinc/sched/cgi to /home/test/www/cgi-bin/cgi
failed to copy /home/test/boinc/sched/file_upload_handler to /home/test/www/cgi-bin/file_upload_handler
failed to copy /home/test/boinc/sched/adjust_user_priority to /home/test/www/bin/adjust_user_priority
failed to copy /home/test/boinc/sched/antique_file_deleter to /home/test/www/bin/antique_file_deleter
failed to copy /home/test/boinc/sched/census to /home/test/www/bin/census
failed to copy /home/test/boinc/sched/db_dump to /home/test/www/bin/db_dump
failed to copy /home/test/boinc/sched/db_purge to /home/test/www/bin/db_purge
failed to copy /home/test/boinc/sched/delete_file to /home/test/www/bin/delete_file
failed to copy /home/test/boinc/sched/feeder to /home/test/www/bin/feeder
failed to copy /home/test/boinc/sched/file_deleter to /home/test/www/bin/file_deleter
failed to copy /home/test/boinc/sched/get_file to /home/test/www/bin/get_file
failed to copy /home/test/boinc/sched/make_work to /home/test/www/bin/make_work
failed to copy /home/test/boinc/sched/put_file to /home/test/www/bin/put_file
failed to copy /home/test/boinc/sched/sample_assimilator to /home/test/www/bin/sample_assimilator
failed to copy /home/test/boinc/sched/sample_bitwise_validator to /home/test/www/bin/sample_bitwise_validator
failed to copy /home/test/boinc/sched/sample_dummy_assimilator to /home/test/www/bin/sample_dummy_assimilator
failed to copy /home/test/boinc/sched/sample_trivial_validator to /home/test/www/bin/sample_trivial_validator
failed to copy /home/test/boinc/sched/sample_work_generator to /home/test/www/bin/sample_work_generator
failed to copy /home/test/boinc/sched/show_shmem to /home/test/www/bin/show_shmem
failed to copy /home/test/boinc/sched/single_job_assimilator to /home/test/www/bin/single_job_assimilator
failed to copy /home/test/boinc/sched/size_regulator to /home/test/www/bin/size_regulator
failed to copy /home/test/boinc/sched/transitioner to /home/test/www/bin/transitioner
failed to copy /home/test/boinc/sched/update_stats to /home/test/www/bin/update_stats
failed to copy /home/test/boinc/vda/vda to /home/test/www/bin/vda
failed to copy /home/test/boinc/vda/vdad to /home/test/www/bin/vdad
failed to copy ../tools/cancel_jobs to /home/test/www/bin/cancel_jobs
failed to copy ../tools/create_work to /home/test/www/bin/create_work
failed to copy ../tools/dir_hier_move to /home/test/www/bin/dir_hier_move
failed to copy ../tools/dir_hier_path to /home/test/www/bin/dir_hier_path
failed to copy ../tools/sign_executable to /home/test/www/bin/sign_executable
Setting up database
/home/test/boinc/py/Boinc/database.py:276: Warning: Can't drop database 'perft'; database doesn't exist
  cursor.execute("drop database if exists %s"%config.db_name)
Writing config files
Linking CGI programs
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/ming.ini on line 1 in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/sqlite.so' - /usr/lib/php5/20090626/sqlite.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/ming.ini on line 1 in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/sqlite.so' - /usr/lib/php5/20090626/sqlite.so: cannot open shared object file: No such file or directory in Unknown on line 0
update_translations finished
Done installing default daemons.

Done creating project.  Please view
/home/test/www/perft.readme
for important additional instructions.

#218
Archiwum / crypt_prog
06 Lipiec 2013, 20:41
Chyba zadziałała kompilacja takim poleceniem

g++ -o crypt_prog crypt_prog.cpp -I.. -L/usr/lib/x86_64-linux-gnu/ -L. libboinc_crypt_la-crypt.o -lboinc -lssl -lcrypto

mam program, ale jeszcze nie wiem czy działa.

Pozdrawiam
#219
Archiwum / crypt_prog
06 Lipiec 2013, 19:49

g++ -o crypt_prog crypt_prog.cpp -I.. libboinc_crypt.a libboinc.a -lssl -lcrypto
g++ -o crypt_prog crypt_prog.cpp -I.. -lboinc_crypt -lboinc -lssl -lcrypto

U mnie nie działają ani dokładnie przepisane komendy, ani w kilku wariacjach
jakich próbowałem. Nie wiem w jakich bibliotekach są jakie funkcje. Jak to
sprawdzać?


test@x:~/boinc/lib$ g++ -o crypt_prog crypt_prog.cpp -I.. libboinc_crypt.a libboinc.a -lssl -lcrypto
g++: error: libboinc_crypt.a: No such file or directory



g++ -o crypt_prog crypt_prog.cpp -I.. -lboinc_crypt -lboinc -lssl -lcrypto     
/usr/bin/ld: cannot find -lboinc_crypt
/usr/bin/ld: cannot find -lboinc



test@x:~/boinc/lib$ g++ -o crypt_prog -I.. -lssl -lcrypto crypt_prog.cpp libboinc.a libboinc_crypt_la-crypt.o
/tmp/ccmfiCbh.o: In function `main':
crypt_prog.cpp:(.text+0x1bd): undefined reference to `RSA_generate_key'
crypt_prog.cpp:(.text+0xc6f): undefined reference to `OPENSSL_add_all_algorithms_noconf'
crypt_prog.cpp:(.text+0xc74): undefined reference to `ERR_load_crypto_strings'
crypt_prog.cpp:(.text+0xc79): undefined reference to `ENGINE_load_builtin_engines'
crypt_prog.cpp:(.text+0xc97): undefined reference to `BIO_new_fp'
crypt_prog.cpp:(.text+0xca3): undefined reference to `BIO_s_file'
crypt_prog.cpp:(.text+0xcab): undefined reference to `BIO_new'
crypt_prog.cpp:(.text+0xcdc): undefined reference to `BIO_ctrl'
crypt_prog.cpp:(.text+0xd18): undefined reference to `RSA_new'
crypt_prog.cpp:(.text+0xdfe): undefined reference to `PEM_write_RSAPrivateKey'
crypt_prog.cpp:(.text+0xedd): undefined reference to `PEM_write_RSA_PUBKEY'
crypt_prog.cpp:(.text+0xefb): undefined reference to `ERR_print_errors'
..........................................


Pozdrawiam
#220
Archiwum / crypt_prog
06 Lipiec 2013, 13:36
Pobrałem świeże źródła BOINC z repozytorium GIT. Doinstalowałem niezbędny soft, skonfigurowałem,
skompilowałem - wszystko poszło bez błędów i bez większych problemów. Jednak nie mogę utworzyć
nowego projektu bo nie mam programu jak w temacie crypt_prog. Próbowałem go kompilować
ręcznie, ale nie udaje się. W pliku make nie mogę znaleźć polecenia kompilującego - prawdopodobnie
skrypt configure w trakcie budowania make w ogóle nie dodał kompilacji crypt_prog.

Zrzut z kompilacji:

test@x:~/boinc/lib$ g++ -O2 -I.. -o crypt_prog crypt_prog.cpp
crypt_prog.cpp: In function 'unsigned int random_int()':
crypt_prog.cpp:111:31: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
/tmp/ccIBj1hJ.o: In function `main':
crypt_prog.cpp:(.text.startup+0x8d): undefined reference to `scan_key_hex(_IO_FILE*, KEY*, int)'
crypt_prog.cpp:(.text.startup+0xc9): undefined reference to `sign_file(char const*, R_RSA_PRIVATE_KEY&, DATA_BLOCK&)'
crypt_prog.cpp:(.text.startup+0xdd): undefined reference to `print_hex_data(_IO_FILE*, DATA_BLOCK&)'
crypt_prog.cpp:(.text.startup+0x155): undefined reference to `RSA_generate_key'
crypt_prog.cpp:(.text.startup+0x16f): undefined reference to `openssl_to_keys(rsa_st*, int, R_RSA_PRIVATE_KEY&, R_RSA_PUBLIC_KEY&)'
crypt_prog.cpp:(.text.startup+0x1b8): undefined reference to `print_key_hex(_IO_FILE*, KEY*, int)'
crypt_prog.cpp:(.text.startup+0x1cd): undefined reference to `print_key_hex(_IO_FILE*, KEY*, int)'
crypt_prog.cpp:(.text.startup+0x233): undefined reference to `scan_key_hex(_IO_FILE*, KEY*, int)'
crypt_prog.cpp:(.text.startup+0x274): undefined reference to `scan_hex_data(_IO_FILE*, DATA_BLOCK&)'
crypt_prog.cpp:(.text.startup+0x295): undefined reference to `md5_file(char const*, char*, double&)'
crypt_prog.cpp:(.text.startup+0x2c2): undefined reference to `check_file_signature(char const*, R_RSA_PUBLIC_KEY&, DATA_BLOCK&, bool&)'
crypt_prog.cpp:(.text.startup+0x31e): undefined reference to `scan_key_hex(_IO_FILE*, KEY*, int)'
crypt_prog.cpp:(.text.startup+0x33f): undefined reference to `generate_signature(char*, char*, R_RSA_PRIVATE_KEY&)'
crypt_prog.cpp:(.text.startup+0x39d): undefined reference to `scan_key_hex(_IO_FILE*, KEY*, int)'
crypt_prog.cpp:(.text.startup+0x3d1): undefined reference to `scan_key_hex(_IO_FILE*, KEY*, int)'
crypt_prog.cpp:(.text.startup+0x43e): undefined reference to `encrypt_private(R_RSA_PRIVATE_KEY&, DATA_BLOCK&, DATA_BLOCK&)'
crypt_prog.cpp:(.text.startup+0x483): undefined reference to `decrypt_public(R_RSA_PUBLIC_KEY&, DATA_BLOCK&, DATA_BLOCK&)'
crypt_prog.cpp:(.text.startup+0x4fa): undefined reference to `scan_hex_data(_IO_FILE*, DATA_BLOCK&)'
crypt_prog.cpp:(.text.startup+0x51b): undefined reference to `check_validity(char const*, char const*, unsigned char*, char*)'
crypt_prog.cpp:(.text.startup+0x5e6): undefined reference to `scan_raw_data(_IO_FILE*, DATA_BLOCK&)'
crypt_prog.cpp:(.text.startup+0x60f): undefined reference to `print_hex_data(_IO_FILE*, DATA_BLOCK&)'
crypt_prog.cpp:(.text.startup+0x6a6): undefined reference to `OPENSSL_add_all_algorithms_noconf'
crypt_prog.cpp:(.text.startup+0x6b1): undefined reference to `ERR_load_crypto_strings'
crypt_prog.cpp:(.text.startup+0x6b6): undefined reference to `ENGINE_load_builtin_engines'
crypt_prog.cpp:(.text.startup+0x6c4): undefined reference to `BIO_new_fp'
crypt_prog.cpp:(.text.startup+0x6cc): undefined reference to `BIO_s_file'
crypt_prog.cpp:(.text.startup+0x6d4): undefined reference to `BIO_new'
crypt_prog.cpp:(.text.startup+0x6ea): undefined reference to `BIO_ctrl'
crypt_prog.cpp:(.text.startup+0x701): undefined reference to `RSA_new'
crypt_prog.cpp:(.text.startup+0x73c): undefined reference to `scan_key_hex(_IO_FILE*, KEY*, int)'
crypt_prog.cpp:(.text.startup+0x756): undefined reference to `private_to_openssl(R_RSA_PRIVATE_KEY&, rsa_st*)'
crypt_prog.cpp:(.text.startup+0x786): undefined reference to `PEM_write_RSAPrivateKey'
crypt_prog.cpp:(.text.startup+0x7d1): undefined reference to `scan_hex_data(_IO_FILE*, DATA_BLOCK&)'
crypt_prog.cpp:(.text.startup+0x7fa): undefined reference to `print_raw_data(_IO_FILE*, DATA_BLOCK&)'
crypt_prog.cpp:(.text.startup+0x849): undefined reference to `PEM_read_RSAPrivateKey'
crypt_prog.cpp:(.text.startup+0x86d): undefined reference to `openssl_to_private(rsa_st*, R_RSA_PRIVATE_KEY*)'
crypt_prog.cpp:(.text.startup+0x899): undefined reference to `print_key_hex(_IO_FILE*, KEY*, int)'
crypt_prog.cpp:(.text.startup+0x8d2): undefined reference to `scan_key_hex(_IO_FILE*, KEY*, int)'
crypt_prog.cpp:(.text.startup+0x904): undefined reference to `public_to_openssl(R_RSA_PUBLIC_KEY&, rsa_st*)'
crypt_prog.cpp:(.text.startup+0x90f): undefined reference to `PEM_write_RSA_PUBKEY'
crypt_prog.cpp:(.text.startup+0x91f): undefined reference to `ERR_print_errors'
crypt_prog.cpp:(.text.startup+0x93f): undefined reference to `PEM_read_RSA_PUBKEY'
crypt_prog.cpp:(.text.startup+0x970): undefined reference to `openssl_to_keys(rsa_st*, int, R_RSA_PRIVATE_KEY&, R_RSA_PUBLIC_KEY&)'
crypt_prog.cpp:(.text.startup+0x980): undefined reference to `public_to_openssl(R_RSA_PUBLIC_KEY&, rsa_st*)'
crypt_prog.cpp:(.text.startup+0x9a8): undefined reference to `print_key_hex(_IO_FILE*, KEY*, int)'
crypt_prog.cpp:(.text.startup+0x9e9): undefined reference to `ERR_print_errors'
crypt_prog.cpp:(.text.startup+0xa41): undefined reference to `ERR_print_errors'
collect2: ld returned 1 exit status

Nie mogę wygooglać w jakich bibliotekach znajdują się brakujące funkcje i nie wiem z czym
zlinkować. Ku ścisłości: kilka wygooglałem, ale włączenie ich nie pomagało.

Pozdrawiam
#221
Rozmowy nieBOINCowane / To co? Bawimy się? :D
30 Czerwiec 2013, 08:07
Wracając stricte do tematu BOINC.
Skonfigurowałem VPS, założyłem sub-domeny, wygląda na to że
ta część działa poprawnie:
http://test.computers-chess.com/.

Pobrałem z repozytorium źródła serwera BOINC:

git clone git://boinc.berkeley.edu/boinc-v2.git boinc


Zainstalowałem mysqla i wszystkie biblioteki o jakie krzyczał.

Następnie dałem polecenie make_project i jest błąd:

FATAL ERROR: Command failed: /home/test/boinc/lib/crypt_prog -genkey 1024 /home/test/www/keys/upload_private /home/test/www/keys/upload_public >/dev/null


Szukam w googlach rozwiązania, ale nadal nie wiem dlaczego nie mam programu crypt_prog.
Błąd jest w pliku Makefile i go nie kompiluje w ogóle?

Pozdrawiam
#222
Rozmowy nieBOINCowane / To co? Bawimy się? :D
29 Czerwiec 2013, 22:09
Cytat: Dario666 w 29 Czerwiec 2013, 19:58
Kiedyś jak testowałem OC na Phenom II x4 i wyciągnąłem z niego 4,6 GHz to miernik energii pokazywał 310 W. Grzała była niesamowita. Na std. zegarze i obniżonym napięciu max. pobór całego komputera (z integrą) wynosił 95 W. Z tego co piszesz to masz PhII x6 i jakoś nie chce mi się wierzyć, że wydajność spadła ci tylko o 10-15%. U mnie spadła o 25-30%
Wszystko zależy od tego, jak się ustawi taktowanie zegara. Jeśli się zmniejszy dwa razy, to
wydajność też spada około 2 razy. Nie znam się na takich szczegółach, ale możliwe że
mniej niż 2 razy, bo jest mniej oczekiwań na dane z RAM. PhenomII X6 ma 6 fizycznych rdzeni.
W moim przypadku wydajność w aplikacjach wielowątkowych spadła o niecały jeden rdzeń. W
jednowątkowych spadła bardziej, bo nie dość że zmniejszyłem zegar, to jeszcze wyłączyłem turbo.
Pozdrawiam

BTW
Zobaczcie na ten procesor:
http://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i7-3770T+%40+2.50GHz&id=898
TDP 45watt, w rankingu 8452 punktów, cena 300USD. Może to najlepszy wybór na domowy klaster?

#223
Rozmowy nieBOINCowane / To co? Bawimy się? :D
29 Czerwiec 2013, 22:00
Cytat: krzyszp w 29 Czerwiec 2013, 14:40
Robi się...
Podać zawartość test1.txt i test2.txt?
Super, dzięki. Widzę już, że jest dobrze :)
Pozdrawiam
#224
Rozmowy nieBOINCowane / To co? Bawimy się? :D
28 Czerwiec 2013, 22:00
Cytat: mariotti w 28 Czerwiec 2013, 11:08
Wieczorem dam lepsze i ważniejsze testy niż tamten skrypt, ino niech się zakończą
na moim kompie :)

Test jest w pełni automatyczny. Rozpakowujemy do jakiegoś katalogu i uruchamiamy
skrypt ./go.sh. W plikach test1.txt i test2.txt powinna być identyczna zawartość. Przed
zakończeniem testu, te pliki mogą mieć różną długość, ale poza tym powinny być
identyczne. Można je porównać poleceniem
diff test1.txt test2.txt
Test trwa dość długo, u mnie trwał kilka godzin. Nie trzeba koniecznie czekać do końca :)

Pozdrawiam


#225
Rozmowy nieBOINCowane / To co? Bawimy się? :D
28 Czerwiec 2013, 11:08
Cytat: krzyszp w 28 Czerwiec 2013, 09:23
Później odpalę skrypt, teraz muszę lecieć do pracy.
Wieczorem dam lepsze i ważniejsze testy niż tamten skrypt, ino niech się zakończą
na moim kompie :)


Cytat: krzyszp w 28 Czerwiec 2013, 09:23
Natomiast co do zestawu, to też mnie dziwi, ale mam cały czas podczepiony miernik i ni cholery nie chce pokazać pow. 105W :)
Faktem jest, że POEM nie obciąża sprzętu na 100%, a Ati 7770 nie należą do zbyt prądożernych.
Wg Core Temp proc podczas pracy bierze ok. 35W.
Ciekawe jakie są możliwości zmniejszania częstotliwości zegara w i7. Mój phenom na
płycie z jakąś zintegrowaną grafiką, pobiera w stresie do 300W. Co ciekawe, w aplikacjach
jednowątkowych pobiera więcej, bo się włącza opcja turbo. Jednak gdy zmniejszyłem
częstotliwość i voltage, to pobór mocy spadł do takiej wartości jak u Ciebie, czyli do 105W.
Wydajność z tego tytułu spadła o jakieś 10-15%, więc na ówczesne czasy ten procesor
okazał się optymalnym wyborem. Nowe i7 zwykle mają TDP=130. Może po zmniejszeniu
częstotliwości o 15% pobór mocy też by spadł o 60%.

Pozdrawiam
#226
Rozmowy nieBOINCowane / To co? Bawimy się? :D
28 Czerwiec 2013, 03:52
Cytat: krzyszp w 27 Czerwiec 2013, 15:58
1. U mnie program się nie wysypał do dzisiaj rana, kiedy go wyłączyłem, nadal był na etapie "2x500k@.
Zadanie jest ciężkie, ale powinien wykonać. Jeśli masz ochotę, to zobacz jeszcze taki skrypt:

g++ -O3 -omit-frame-pointers -march=native -o test_csuniq main.cpp
mkdir -p tmp
RAM=1000000

rows=(100000, 200000, 500000, 1000000, 2000000, 5000000, 10000000, 20000000, 50000000, 100000000, 200000000)

for i in "${rows[@]}"
do
echo "rows $i"
time ./test_csuniq len_min=500  len_max=1000  rows=$i uniq=5000 seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
done

Na moim lapku i3 takie czasy są:

rows 100000,
5000

real    0m1.496s
user    0m1.472s
sys     0m0.236s
rows 200000,
5000

real    0m3.130s
user    0m3.072s
sys     0m0.472s
rows 500000,
5000

real    0m8.593s
user    0m8.457s
sys     0m1.168s
rows 1000000,
5000

real    0m18.846s
user    0m18.029s
sys     0m2.904s
rows 2000000,
5000

real    1m3.013s
user    0m38.874s
sys     0m7.000s
rows 5000000,
5000

real    4m27.217s
user    1m40.978s
sys     0m17.437s
rows 10000000,
5000

real    9m25.056s
user    3m25.029s
sys     0m35.310s
rows 20000000,
5000

real    19m2.746s
user    6m50.070s
sys     1m6.800s






Cytat: krzyszp w 27 Czerwiec 2013, 15:58
2. Obadaj jednak RAM'y, często są przyczyną "dziwnych" problemów.
To test perft by też nie działał. On bardzo intensywnie korzysta z RAM.


Cytat: krzyszp w 27 Czerwiec 2013, 15:58
3. Co do kompa, polecam składniki jakie sam zamontowałem:
Mobo - Gigabyte Z77-D3H
CPU Xeon 1230v2
Zestaw powyżej dopalony 2 x 7770, 5 x HDD,1 x SDD, 2 x 4GB RAM "pożera" 105W w stresie (stres = 8WU POEM na raz). Do zestawy chcę dołożyć jeszcze 8GB RAM, bo mi niestety lubi zabraknąć :)
O jaki fajny zestaw! Tyle przeglądałem procesory, a jakoś nie zauważyłem, że ten procesor
ma tylko 69TDP
http://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+E3-1230+V2+%40+3.30GHz&id=1189

W tym rankingu ma aż 8884 punktów.
http://www.cpubenchmark.net/cpu_list.php

Dziwi mnie że zestaw z dwoma kartami grafiki bierze zaledwie 105wat - ale to dobrze :)

Pozdrawiam
#227
Rozmowy nieBOINCowane / To co? Bawimy się? :D
27 Czerwiec 2013, 12:13
Cytat: Troll81 w 27 Czerwiec 2013, 11:35
podaj to pogłówkujemy..... może jakiś bibliotek brak? może któraś konkretna apka wykrzacza wyniki.... z kryształowej kuli nie umiem wróżyć....
Niezręcznie się czuję. Z jednej strony głupio mi odrzucić pomoc, a z drugiej podejrzewam, że
wnioski do jakich dojdziemy, nie będą warte tej całej pisaniny. Na razie dążę do postawienia
wersji testowej, więc generowanie na laptopie wystarczy. Potem... nie wiem... może kupię
płytę główną, procesor i pamięć, zainstaluję linuxa, włączę test, jak nie zadziała, to zaniosę
kompa na gwarancję i powiem że źle działa :D

Właściwe to można pogłówkować apropo sprzętu z pożytkiem dla wszystkich. Jaki warto
kupić zestaw "płyta, procesor, pamięć" żeby miał maksymalny współczynnik:
wydajność / (cena zakupu + cena energii * 2 lata ciągłych obliczeń ) ?

Pozdrawiam
#228
Rozmowy nieBOINCowane / To co? Bawimy się? :D
27 Czerwiec 2013, 11:14
Cytat: Troll81 w 27 Czerwiec 2013, 08:16
podaj dokładną specyfikację swego kompa oraz laptopa. Może coś nie kuku ze sprzętem?
Ale jak wytłumaczyć fakt, że inne programy działają, a zliczanie wierszy żadną z
trzech (różnych) metod nie działa? Ku ścisłości: działa z prawdopodobieństwem
równym około 50%. To jest dość typowe zachowanie dla programów z UB, ale
ten który testowaliśmy UB nie ma, bo na wszystkich innych kompach działa poprawnie.

Pozdrawiam
#229
Rozmowy nieBOINCowane / To co? Bawimy się? :D
27 Czerwiec 2013, 01:52
Cytat: krzyszp w 27 Czerwiec 2013, 01:00
U mnie na razie wynik identyczny, ale niech mieli (jeśli ma to sens).
Sam nie jestem pewny czy jest sens. Programik jest prosty. Na kilku
systemach/kompilatorach/komputerach/RNG zadziałał poprawnie. Na jednym
kompie nie działa. Chyba mamy już prawie pewność, że jakieś cuda
z moim stacjonarnym kompem się dzieją. Raczej wystarczy, dziękuję :)

Pozdrawiam
#230
Rozmowy nieBOINCowane / To co? Bawimy się? :D
27 Czerwiec 2013, 01:49
Cytat: sknd w 27 Czerwiec 2013, 00:19
po dwudziestu kilku minutach zrobiło mi się szkoda dysku;)
Dzięki serdeczne :)

Wygląda na to, że w programie nie ma błędów, a z jakiś niejasnych
powodów program nie chce działać na moim stacjonarnym kompie.
Jakby stacjonarny się zepsuł, to bym kupił po prostu nowy, ale ja z
niego od czasu do czasu korzystam i wszystko działa bardzo dobrze.
Co jest grane to nie wiem. Najgorsze jest to, że przez takie problemy
traci się wiele dni czasu.

Trzeba przyjąć jakiś plan działania... Na razie chyba zadowolę się
generowaniem/optymalizowaniem WU na laptopie. Powiedzmy że
generowanie i optymalizowanie jest średnio przetestowane. Więc
mogę na wirtualu postawić BOINC i dalej się uczyć konfiguracji i
dodania work-units.

Pozdrawiam
#231
Rozmowy nieBOINCowane / To co? Bawimy się? :D
26 Czerwiec 2013, 23:49
Cytat: sknd w 26 Czerwiec 2013, 23:30
Cytat: krzyszp w 26 Czerwiec 2013, 23:12
Koniec off-topa... Jak długo program powinien się wykonywać?
o właśnie, też mnie interesuje odpowiedź, bo nie wiem czy jest sens to dzisiaj zapuszczać
Program można zabić po wyczerpaniu cierpliwości, np. po 5-15 minutach :)
Pozdrawiam
#232
Rozmowy nieBOINCowane / To co? Bawimy się? :D
26 Czerwiec 2013, 23:21
Cytat: krzyszp w 26 Czerwiec 2013, 23:12
Spokojnie, nie takie rzeczy widzialem...
Wierz mi, że kompilatory potrafią cuda narobić, a zwłaszcza w sytuacji, gdy nieświadomie, podczas ich instalacji np. włączysz optymalizację dla którejś wersji sse...
Wierzę, ale dlaczego reszta programów działa?

Cytat: krzyszp w 26 Czerwiec 2013, 23:12
Osobny temat (rzeka) to .net w tym względzie...
Koniec off-topa... Jak długo program powinien się wykonywać?
Dwadzieścia pierwszych testów powinno w kilka minut wyskoczyć. Pozostałe mogą trwać bardzo
długo. Jak wyświetlił wyniki z 20 testów, to już jest miarodajne i można ubić przez ctrl+c.

Pozdrawiam
#233
Rozmowy nieBOINCowane / To co? Bawimy się? :D
26 Czerwiec 2013, 23:09
Cytat: krzyszp w 26 Czerwiec 2013, 22:52
Robi się, aktualnie mam drugi raz 500k na ekranie.
Dziękuję wszystkim. To jest prosty program, ale wpadam w paranoję, że narobiłem
jakiś błędów, bo sytuacja jest dziwna. Dziwność jej polega na tym, że
jakbym miał błędy na dysku przenośnym, to by też na laptopie nie działało.
Jakbym miał uszkodzoną pamięć RAM, to by nie działał Linux, a już
na pewno by nie działał tam program perft, który korzysta z hash-table o
rozmiarze 6GB RAM. Jednak to wszystko działa i wiele innych programów
też działa. Błąd kompilatora też nie wchodzi w grę, bo jak przenoszę
program skompilowany na laptopie, to na PC nadal nie działa. Jak
długo chodzę po tej planecie, czegoś takiego nie widziałem. No chyba
że jednak znajdziecie błąd w tym prostym programie :)

Pozdrawiam
#234
Rozmowy nieBOINCowane / To co? Bawimy się? :D
25 Czerwiec 2013, 05:28
Mam wielką prośbę do Was o przeprowadzenie pewnego testu. Na stacjonarnym komputerze
mam losowe wyniki, nie wiem czy ja narobiłem błędów, czy coś źle ze sprzętem lub systemem.
Cały program perft jest wielki, więc napisałem mały substytut o nazwie test_csuniq.
Substytut generuje wiersze, w tym pewną ilość unikalnych wierszy. Jeśli test się nie powiedzie,
to będziemy mieli 100% pewności, że jest błąd w jednym z członów:
1) błąd w programie test_csuniq
2) błąd sprzętu
3) błąd systemu operacyjnego w szczególności narzędzi systemowych
4) błąd kompilatora, bibliotek dostarczonych z kompilatorem
Zrobiłem na laptopie około 10 testów i zakończyły się powodzeniem. Na stacjonarnym 50% kończy
się błędem.

Jak uruchomić program? Można przykładową komendą:

./test_csuniq len_min=5 len_max=20 rows=30 uniq=5 seed=0

Tak uruchomiony program wygeneruje 30 wierszy (rows=30), w
tym 5 unikalnych (unq=5), o długości z przedziału od 5 do 20 znaków.
Wiersze będą zawierały (prawie) losowe znaki ascii. Sposób losowania
można kontrolować nadając parametrowi seed wartości powyżej zero.

Test polega na przekierowaniu programu do sort, uniq i wc, aby sprawdzić czy
ilość unikalnych wierszy jest taka jak wartość parametru uniq. Poniższe
uruchomienie powinno dać w wyniku wartość 50tys.

./test_csuniq len_min=7 len_max=70 rows=200000 uniq=50000 seed=0 | sort | uniq | wc -l


Jak ktoś nie chce wnikać w szczegóły, to najlepiej pobrać źródło programu i
zapisać je jako plik 'main.cpp' w jakimś katalogu:

#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <ctime>

typedef int ityp;
typedef const int cityp;
typedef unsigned int utyp;
typedef const utyp cutyp;


static void help() {
printf("using:test_csuniq len_min=uint len_max=uint rows=uint uniq=uint seed=uint\n");
abort();
}


struct Args {
utyp len_min;
utyp len_max;
utyp rows;
utyp uniq;
utyp seed;
};


static void parseArgs(int argc, char *argv[], Args &args) {
memset( &args , 0 , sizeof(args) );
args.seed = 0;
for( int i=1 ; i<argc ; i++ ) {
if( strncmp( "len_min=" , argv[i] , 8 ) == 0 ) {args.len_min = (utyp)atol( argv[i]+8 ); }
if( strncmp( "len_max=" , argv[i] , 8 ) == 0 ) {args.len_max = (utyp)atol( argv[i]+8 ); }
if( strncmp( "rows="    , argv[i] , 5 ) == 0 ) {args.rows    = (utyp)atol( argv[i]+5 ); }
if( strncmp( "uniq="    , argv[i] , 5 ) == 0 ) {args.uniq    = (utyp)atol( argv[i]+5 ); }
if( strncmp( "seed="    , argv[i] , 5 ) == 0 ) {args.seed    = (utyp)atol( argv[i]+5 ); }
}
if( args.len_max < args.len_min ) help();
if( args.rows < args.uniq ) help();
if( args.len_min == 0 ) help();
if( args.len_max == 0 ) help();
if( args.rows == 0 ) help();
if( args.uniq == 0 ) help();
if( args.seed == 0 ) args.seed = time(NULL);
}


char rndChar() {
const static char rndc[] = "-=!@#$%^&*()_+qqweertyuiop[[]]]\\QWERTYUIOP{}|asdfghjkl;'ASDFGHJKL:\"zxcvbnm,./ZXCVBNM<>?`~";
return rndc[ rand() % (sizeof(rndc)-1) ];
}

void rndString( cutyp len_min, cutyp len_max , char string[] , utyp nr ) {
utyp len = rand() % ( len_max - len_min + 1 ) + len_min;
string[len] = 0;
while( len && nr ) {
string[--len] = '0' + (nr%10);
nr /= 10;
}
while( len )
string[--len] = rndChar();
}

int main(int argc, char *argv[]) {
Args args;
parseArgs( argc , argv , args );
srand(args.seed);

char **strings = new char*[args.uniq];
utyp *counts = new utyp[args.uniq];
char *string = new char[args.len_max+1];

for( utyp i=0 ; i<args.uniq ; i++ ) {
rndString( args.len_min , args.len_max , string , i+1 );
strings[i] = strdup( string );
counts[i] = 1;
}


utyp r = rand();
for( utyp i=0 ; i<args.rows-args.uniq ; i++ ) {
r = (r + rand())%args.uniq;
counts[r] ++ ;
}

{
utyp uniq = args.uniq;
while( uniq ) {
r = (r + rand()) % uniq;
printf("%s\n",strings[r]);
if( --counts[r] == 0 ) {
free( strings[r] );
strings[r] = strings[uniq-1];
counts[r] = counts[uniq-1];
uniq--;
}
}
}



delete[] string;
delete[] counts;
delete[] strings;

return 0;
}



Następnie w tym samym katalogu trzeba zapisać skrypt powłoki:

g++ -O3 -omit-frame-pointers -march=native -o test_csuniq main.cpp
mkdir -p tmp
RAM=$1

./test_csuniq len_min=10  len_max=20  rows=20000    uniq=5000    seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
./test_csuniq len_min=50  len_max=100  rows=20000    uniq=5000    seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
./test_csuniq len_min=500  len_max=1000  rows=20000    uniq=5000    seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
./test_csuniq len_min=10  len_max=20  rows=20000    uniq=5000    seed=0  | sort -T'./tmp' -S$RAM --compress-program=gzip | uniq | wc -l
./test_csuniq len_min=50  len_max=100  rows=20000    uniq=5000    seed=0  | sort -T'./tmp' -S$RAM --compress-program=gzip | uniq | wc -l
./test_csuniq len_min=500  len_max=1000  rows=20000    uniq=5000    seed=0  | sort -T'./tmp' -S$RAM --compress-program=gzip | uniq | wc -l


./test_csuniq len_min=10  len_max=20  rows=200000   uniq=50000   seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
./test_csuniq len_min=50  len_max=100  rows=200000   uniq=50000   seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
./test_csuniq len_min=500  len_max=1000  rows=200000   uniq=50000   seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
./test_csuniq len_min=10  len_max=20  rows=200000   uniq=50000   seed=0  | sort -T'./tmp' -S$RAM --compress-program=gzip | uniq | wc -l
./test_csuniq len_min=50  len_max=100  rows=200000   uniq=50000   seed=0  | sort -T'./tmp' -S$RAM --compress-program=gzip | uniq | wc -l
./test_csuniq len_min=500  len_max=1000  rows=200000   uniq=50000   seed=0  | sort -T'./tmp' -S$RAM --compress-program=gzip | uniq | wc -l


./test_csuniq len_min=10  len_max=20  rows=2000000  uniq=500000  seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
./test_csuniq len_min=50  len_max=100  rows=2000000  uniq=500000  seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
./test_csuniq len_min=500  len_max=1000  rows=2000000  uniq=500000  seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
./test_csuniq len_min=10  len_max=20  rows=2000000  uniq=500000  seed=0  | sort -T'./tmp' -S$RAM --compress-program=gzip | uniq | wc -l
./test_csuniq len_min=50  len_max=100  rows=2000000  uniq=500000  seed=0  | sort -T'./tmp' -S$RAM --compress-program=gzip | uniq | wc -l
./test_csuniq len_min=500  len_max=1000  rows=2000000  uniq=500000  seed=0  | sort -T'./tmp' -S$RAM --compress-program=gzip | uniq | wc -l


./test_csuniq len_min=10  len_max=20  rows=20000000 uniq=5000000 seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
./test_csuniq len_min=50  len_max=100  rows=20000000 uniq=5000000 seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
./test_csuniq len_min=500  len_max=1000  rows=20000000 uniq=5000000 seed=0  | sort -T'./tmp' -S$RAM | uniq | wc -l
./test_csuniq len_min=10  len_max=20  rows=20000000 uniq=5000000 seed=0  | sort -T'./tmp' -S$RAM --compress-program=gzip | uniq | wc -l
./test_csuniq len_min=50  len_max=100  rows=20000000 uniq=5000000 seed=0  | sort -T'./tmp' -S$RAM --compress-program=gzip | uniq | wc -l
./test_csuniq len_min=500  len_max=1000  rows=20000000 uniq=5000000 seed=0  | sort -T'./tmp' -S$RAM --compress-program=gzip | uniq | wc -l


Skrypt sam:
- skompiluje program
- założy katalog tymczasowy dla polecenia sort
- no i przeprowadzi testy.

Jako parametr skryptu podajemy ilość pamięci w kilobajtach. Gdy skrypt zapisaliśmy
jako plik 'go.sh', to uruchomienie dla 3GB RAM wygląda tak:

./go.sh 3000000


Jeśli test przebiegnie pomyślnie, to program wyświetli  6 razy: 5tys, 50tys, 500tys i 5mln, czyli
razem 24 liczby. Ostatnie testy zajmują dużo czasu i wymagają dużo miejsca na dysku, więc
jak ktoś straci cierpliwość, to po wyświetleniu 20 początkowych liczb można program ubić.

Program losuje sobie zarodek liczb losowych z czasu systemowego, więc każde uruchomienie to
trochę inny test, można program uruchomić kilka razy.

Pozdrawiam
#235
Rozmowy nieBOINCowane / To co? Bawimy się? :D
25 Czerwiec 2013, 03:53
Cytat: krzyszp w 24 Czerwiec 2013, 23:52
CytatCzyżby powyższe spostrzeżenie prowadziło do wniosku, że w materiałach jakie mam, ktoś
robiący badania uznał, że w takich pozycjach należy usunąć informację o przyzwoleniach, bowiem
i tak i tak nie można wykonać roszady, a ponadto takie pozycje pojawiają się raptem dwie wśród 12milionów
Ciężko ocenić, nie znając materiałów na których się opierasz (być może informacja o tym jest w tekście)...
Pogrzebałem jeszcze trochę w sieci.
Tutaj jest z trójką na końcu (9417683) .
A tutaj z jedynką (9417681)
Piszą, że różnica wynika z tego, iż bicie w przelocie jest (czasami) nielegalne. Przyczyna
różnicy jest podobna jak opisałem powyżej, jednak myliłem się że względem roszady. Nielegalność
oznacza, że po wykonaniu bicia w przelocie król (król strony wykonującej to bicie) będzie
szachowany. Skoro to nielegalny ruch, to można informację o nim usunąć. Jeśli się usunie, to
układów będzie mniej. Trochę dziwne, że przy przeszukiwaniu na głębokość sześciu
ruchów, są tylko dwie takie sytuacje, ale widocznie tak jest.

Program z tą "usterką" zadziałałby poprawnie, po prostu dwa układy brałby za różne, gdy
można je wziąć za takie same. Jednak widzę sens wprowadzenia zmiany do programu.
Po zmianie będzie można sprawdzić, czy ilość unikalnych układów zgadza się z podaną
ilością w tamtych wynikach. Program szybciej będzie przetestowany, odpadnie wiele testów z
poziomu serwera boinc.

Pozdrawiam

P.S.
Tam chyba pełny test perft do depth <= 13
perft <= 13
#236
Rozmowy nieBOINCowane / To co? Bawimy się? :D
24 Czerwiec 2013, 23:30
Dotarłem do zdumiewającego etapu :D

Jest sobie ten program perft w kilku wersjach, a wersje czasami są jeszcze w kilku
odmianach.  Generalnie wersje dzielą się na dwie grupy. Jedna grupa to
siłowe zliczanie/przeszukiwanie. Do drugiej grupy należą wersje zapamiętujące częściowe
wyniki. Wersje z obu grup były długo testowane. Testy polegały na ustawieniu
tysiąca pozycji początkowych i przeszukaniu tych pozycji na głębokość 4-6 ruchów. Wyniki były
porównywane pomiędzy wersjami, a także były porównywane z innymi,
całkowicie niezależnymi programami. Wszystkie testy zakończyły się pozytywnie.
Jak było testowane przeszukiwanie z pozycji początkowej to najlepiej sami
wiecie, bo sami testowaliście - wyniki na głębokość 9-10 ruchów były zawsze
dokładne.

Na bazie tak przetestowanej wersji napisałem program, który nie tylko
przeszukuje, ale także wyrzuca układy na standardowe wyjście.
Ilość wszystkich wyrzuconych układów jest poprawna. Natomiast ilość
unikalnych jest poprawna tylko do głębokości 5 ruchów. Przy głębokości 6
ruchów, ilość unikalnych układów jest o 2 za duża.

Mało tego, mam napisany drugi program do zliczania unikalnych układów.
Ten drugi też podaje o 2 więcej niż wynika z dostępnych
materiałów. Zasada działania drugiego programu jest zupełnie inna, gdyż zlicza
on tylko wartości funkcji skrótu. Może warto podkreślić, że jakby błąd był w funkcji
skrótu, to z powodu kolizji byłoby za mało układów - a jest o te 2 układy za dużo.

To jeszcze nie koniec. Obecnie program napisany jest tak, że generuje sobie
sam pod-zadania. Gdy ma przeszukać na głębokość np. 10 ruchów, to
najpierw przeszukuje na 3-4 ruchy. Zapamiętuje unikalne układy z tych
3-4 ruchów. Następnie po kolei ustawia kolejne układy i przeszukuje każdy
układ na 7-6 ruchów, tak aby łączna głębokość wynosiła założone 10 ruchów.
Przez chwilę pomyślałem, że błąd jest właśnie w generowaniu/formatowaniu
układów. No ale nie może tam być błędu, bo generowanie jest wykorzystywane
także w zwykłym przeszukiwaniu, a więc było też przetestowane.

Patrzyłem dziś w różne miejsca kodu i nie wiem co się dzieje. Wygląda to tak,
jakby jeden i ten sam element raz działał, a drugi raz nie. W dodatku
dwa różne algorytmy dają taki sam błąd. Wszelka logika zawodzi. 
Może jakiś element programu nie był tak dokładnie przetestowany jak mi się
wydaje, ale to raczej bym wiedział. 

Zastanawiam się czy może być błąd w materiałach jakie znalazłem, ale taką
możliwość chyba też trzeba odrzucić. Zakładam że jak ktoś przygotowywał
takie czy inne materiały, to jakoś zweryfikował wyniki.


W trakcie pisania tego posta, naszło mnie pewne spostrzeżenie. Program perft4
ma problem z wygenerowaniem unikalnych układów na głębokości równej sześć.
Nie jestem dobrym szachistą, interesuję się tylko szachami komputerowymi, a
samemu nie gram, ale jeśli się nie mylę, to na tej samej głębokości zaczynają
mieć znaczenie "przyzwolenia" do roszad. Przykład widać na pozycji 1 poniżej:
białe i czarne wyjeżdżają skoczkiem i laufrem i mogą wykonać małe roszady:
pozycja 1
Pojawia się w tym kontekście pewna ciekawostka. W sześciu ruchach można także
dojść do takiego układu:
pozycja 2
Białe nie wykonały żadnego ruchu ani królem, ani wieżą, jest wolna przestrzeń
pomiędzy królem i wieżą, więc mają "przyzwolenie" do roszady. Jednak roszady
wykonać w siódmy ruchu nie mogą, bo jest atakowane pole na drodze króla.


Z punktu widzenia programu do zliczania wszystkich pozycji powyższy niuans
nie ma znaczenia, gdyż program i tak i tak nie wykona roszady wbrew zasadom gry, a
więc pozycji po jej wykonaniu nie uwzględni w zliczaniu. Natomiast w przypadku
zliczania unikalnych pozycji mamy dwuznaczność. Gdy zignorujemy "przyzwolenia", to
jest wszystko w porządku, bo i tak i tak nie możemy roszady wykonać. Gdy nie zignorujemy,
to też jest wszystko w porządku - po prostu mamy dodatkową informację o tym, że król i
wieża nie była do tej pory ruszana. Przyzwolenia będą ważne w ruchach następnych, ale w tej
pozycji równie dobrze możemy o nich pamiętać jak i nie.

Czyżby powyższe spostrzeżenie prowadziło do wniosku, że w materiałach jakie mam, ktoś
robiący badania uznał, że w takich pozycjach należy usunąć informację o przyzwoleniach, bowiem
i tak i tak nie można wykonać roszady, a ponadto takie pozycje pojawiają się raptem dwie wśród 12milionów
pozycji, a więc w wynikach ma o te dwie pozycje mniej niż ja?  :boing: Brzmi nieprawdopodobnie, dosłownie
nie mogę uwierzyć, ale na tę chwilę nie mam lepszego wyjaśnienia.

Pewne natomiast jest to, że ja nie mogę z work-units usunąć informacji o przyzwoleniach, bo będzie ona
potrzebna w dalszym przeszukiwaniu drzewa gry, konkretnie w tym przeszukiwaniu jakie będą wykonywały aplikacje
klienckie.

Jakby ktoś coś dorzucił do moich rozważań, to za wszelkie inspirację będę wdzięczny.
Pozdrawiam








#237
Rozmowy nieBOINCowane / To co? Bawimy się? :D
21 Czerwiec 2013, 08:35
Problem optymalizacji work-units rozwiązany. Opisany kilka postów wyżej
algorytm ( ten z jednym zbiorem w RAM i drugim na dysku) jest bardzo szybki.
Dla depth=7 generuje w niecałe dwie godziny na tanim dysku zewnętrznym
na usb 2. Jeśli ktoś jest zainteresowany kodem źródłowym, to udostępnię. 

Szkoda że rozwiązanie tego zadania nie oznacza w ogóle końca kłopotów.
Pojawiły się następne problemy - no ale to zwykła praktyka tworzenia
systemów. Muszę przeznaczyć następne dwa-trzy dni w całości na inny
projekt, a potem wracam do dalszych prac i testów.

Pozdrawiam.
#238
Rozmowy nieBOINCowane / To co? Bawimy się? :D
20 Czerwiec 2013, 17:57
Cytat: Rysiu w 20 Czerwiec 2013, 17:31
Dyski SSD raczej nie nadają się do serwerów baz danych. W profesjonalnych sprzętach stosuje się SAS i SCSI.

Dysk SSD przy takiej bazie o której tutaj mówimy najprawdopodobniej za długo by nie przetrwał (przecież tutaj mamy maksymalny io wait). Takich twardzieli właśnie z takich względów nie ustawia się na swap - przy normalnej eksploatacji komputera po pół roku sprzęt idzie na szrot. Pół roku przy normalnej eksploatacji to nie wiem ile by wyszło dla maksymalnego io wait - miesiąc?

Może i SSD są i coraz lepsze ale tutaj potrzeba jakiejś profesjonalnej macierzy. Ktoś oszacował ile ta baza będzie zajmowała? Jeżeli jest to rząd wielkości mierzony w TB to nie wiem czy warto kombinować, bo może okazać się, że zapytania będą szły zbyt wolno aby
zgrać to w jakiś realny skrypt. Zależy co tam będzie robione.
Nie jestem ekspertem od dysków SSD, zwłaszcza od tych najdroższych. Takie mam
zasłyszane informacje, ze one bardzo dobrze sprawują się w losowym odczycie/zapisie.
Podobno te nowe i drogie są wielokrotnie bardziej żywotne od talerzowych. Ale koszt
jednego dysku to 10tys usd i więcej.

Cytat
Jestem sceptycznie nastawiony ale myślę, że mogę pomóc ale musisz mariotti oszacować jakiego sprzętu potrzebujesz (jaka pojemność, jaka prędkość odczytu/zapisu) i na jak długo.
Jeszcze trochę powalczę na swoim sprzęcie, a nóż się uda. Jak się nie uda, to
wielkiego problemu nie będzie, po prostu work-units będą mniej zoptymalizowane.
Teraz nie potrafię powiedzieć jakie wymagania są potrzebne co do ram i pojemności
dysków - każdy algorytm ma inne. Za jakiś czas dokładnie zastanowimy się czy warto
szukać macierzy dyskowej na to zadanie.


Pozdrawiam
#239
Rozmowy nieBOINCowane / To co? Bawimy się? :D
20 Czerwiec 2013, 17:39
Cytat: Karlik w 20 Czerwiec 2013, 17:09
Właśnie nie jest to takie pewne. Ogólnie dużo zależałoby od samej konstrukcji drzewa (kolejności napływających danych). Węzły drzewa często wykorzystywane (blisko korzenia) byłyby cały czas w pamięci operacyjnej - prawdopodobnie w ogóle nie byłyby zrzucane na swapa. Pytanie tylko jak mocno rozrzucone są dane napływające, jeśli byłyby długie sekwencje podobnych (w sensie wspólnej ścieżki w drzewie) danych to mogłoby być całkiem nieźle.
W bazach danych są drzewa b-tree i nie zadziałało zbyt dobrze. Drzewa AVL, Red-Black, itd
gorzej sprawują się na dyskach niż b-tree. Ale cóż... skłamałbym, jakbym powiedział, że jestem
pewny na 100% :)
Pozdrawiam

#240
Rozmowy nieBOINCowane / To co? Bawimy się? :D
20 Czerwiec 2013, 16:44
Cytat: Karlik w 20 Czerwiec 2013, 14:06
Jak mamy dość pamięci dyskowej to już lepiej by było zrobić dużego swapa i wszystko wrzucać do jakiegoś drzewka (może być samodzielnie napisane albo set STLowy). W sumie to aż sam jestem ciekawy jak takie rozwiązanie by sobie poradziło :D
Odpisałem dokładnie na powyższe, ale znowu wcięło tekst. W skrócie: zadziała wolno. Każdy dostęp
do drzewka będzie wymagał nastawienia głowicy i wczytania/zapisania 4kb danych na dysku. Może
być lepiej gdy się swap ustawi na dysku ssd.
Pozdrawiam