Aktualności:

Nowy polski projekt BOINC - Universe@Home

Menu główne
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

#121
Archiwum / serwer na windows?
22 Lipiec 2013, 12:06
Cytat: Karlik w 22 Lipiec 2013, 12:04
Cytat: mariotti w 22 Lipiec 2013, 10:10Chyba pliki z wynikami zapisuje sobie na lokalnej maszynie, aby potem co jakiś czas próbować odesłać.
Dokładnie tak jest (w końcu nie każdy komputer musi mieć stale dostęp do internetu). Z loga wynika, że nie potrafi poprawnie tego wysłać na serwer (bardzo prawdopodobne, że błąd leży po stronie serwera).
Nom, szkoda tylko że nie wiem jaki to błąd. I pytanie: czy po rozwiązaniu tego błędu, znowu
będzie się pojawiał błąd z dwiema kropkami :)
#122
Archiwum / serwer na windows?
22 Lipiec 2013, 10:10
Cytat: Karlik w 22 Lipiec 2013, 09:25
W logu, który podałeś w ogóle nie ma informacji, że próbował odesłać, może na coś czeka? Tak samo próbki nie zostały zaraportowane
Swoją drogą zamiast finda w takiej postaci możesz użyć "grep -r wzorzec ." :)
Raz te błędy z uploadem są, drugi raz ich nie ma. Wczoraj były błędy z dwiema kropkami w nazwie.
Ja nie wiem o co chodzi. Ostatni log wygląda tak:

pon, 22 lip 2013, 00:21:35 | perft | update requested by user
pon, 22 lip 2013, 00:21:36 | perft | Sending scheduler request: Requested by user.
pon, 22 lip 2013, 00:21:36 | perft | Not reporting or requesting tasks
pon, 22 lip 2013, 00:21:37 | perft | Scheduler request completed
pon, 22 lip 2013, 00:22:37 | perft | update requested by user
pon, 22 lip 2013, 00:22:42 | perft | Sending scheduler request: Requested by user.
pon, 22 lip 2013, 00:22:42 | perft | Not reporting or requesting tasks
pon, 22 lip 2013, 00:22:44 | perft | Scheduler request completed
pon, 22 lip 2013, 03:18:07 | perft | Started upload of test22_1_0
pon, 22 lip 2013, 03:18:07 | perft | Started upload of test22_0_0
pon, 22 lip 2013, 03:18:08 | perft | Temporarily failed upload of test22_1_0: transient upload error
pon, 22 lip 2013, 03:18:08 | perft | Backing off 1 hr 39 min 15 sec on upload of test22_1_0
pon, 22 lip 2013, 03:18:08 | perft | Temporarily failed upload of test22_0_0: transient upload error
pon, 22 lip 2013, 03:18:08 | perft | Backing off 1 hr 10 min 53 sec on upload of test22_0_0


Chyba pliki z wynikami zapisuje sobie na lokalnej maszynie, aby potem
co jakiś czas próbować odesłać.

Pozdrawiam
#123
Archiwum / serwer na windows?
22 Lipiec 2013, 07:54
Cytat: TJM w 22 Lipiec 2013, 06:58
Jeśli nie ma w katalogu upload, zostały pewnie przeniesione gdzieś przez assimilator, może do sample_results ?
W "zwykłej" postaci nie ma rezultatów nigdzie, może są gdzieś skompresowane, może w bazie
danych, nie wiem. W zwykłej nie ma nigdzie, ponieważ przeszukałem cały katalog grep'em:

perft@x:~/www$ find . -name "*" -print | xargs grep "AABB"
perft@x:~/www$ find . -name "*" -print | xargs grep "aAbB"
./download/2cc/in0:aAbBcCdddasdeDEasd
./download/1af/in2:aAbBcCdddasdeDEasd
./download/3e9/in:aAbBcCdddasdeDEasd
./templates/in:aAbBcCdddasdeDEasd

Program upper-case ma zamienić małe litery na duże. Jak widać
pliki wejściowe w kilku kopiach znalazł. Gdy użyłem dużych liter jako
wzorca, to żadnego pliku nie znalazł.

Teraz prawdopodobnie klient nie odsyła wyników. Trochę mnie to
dziwi, bo nic nie zmieniałem w szablonach, a wcześniej był inny
błąd, albo z autoryzacją, albo z tymi dwiema kropkami w nazwie pliku.

Pozdrawiam
#124
Archiwum / serwer na windows?
22 Lipiec 2013, 00:08
A teraz tak jakby w logach nie było błędu, ale nigdzie nie mogę znaleźć odesłanych
plików z wynikami:

pon, 22 lip 2013, 00:00:12 | perft | Sending scheduler request: To fetch work.
pon, 22 lip 2013, 00:00:12 | perft | Requesting new tasks for CPU
pon, 22 lip 2013, 00:00:13 | perft | Scheduler request completed: got 2 new tasks
pon, 22 lip 2013, 00:00:15 | perft | Starting task test_b_00_1 using uc1 version 1
pon, 22 lip 2013, 00:00:15 | perft | Starting task test_b_00_0 using uc1 version 1
pon, 22 lip 2013, 00:00:23 | perft | Sending scheduler request: To fetch work.
pon, 22 lip 2013, 00:00:23 | perft | Requesting new tasks for CPU
pon, 22 lip 2013, 00:00:24 | perft | Scheduler request completed: got 0 new tasks
pon, 22 lip 2013, 00:00:24 | perft | Project has no tasks available
pon, 22 lip 2013, 00:00:37 | perft | Computation for task test_b_00_1 finished
pon, 22 lip 2013, 00:00:38 | perft | Computation for task test_b_00_0 finished


Pozdrawiam
#125
Archiwum / serwer na windows?
21 Lipiec 2013, 23:52
Cytat: TJM w 21 Lipiec 2013, 23:39
Klient ma opcję podglądania, co dzieje się nie tak przy uploadzie.
Jest od tego wpis w cc_config.xml bodajże http_debug albo to całe http_xfer_debug http://boinc.berkeley.edu/wiki/Client_configuration

Oprócz tego po stronie serwera masz file_upload_handler.log w którym też może co nieco się znaleźć.
W katalogu projekt/upload apacz musi mieć prawa do zapisu.

Do web serwera leci takie zapytanie POST:

IP.IP.IP.IP - - [22/Jul/2013:01:46:02 +0400] "POST /perft_cgi/file_upload_handler HTTP/1.1" 200 186 "604"  "-" "BOINC client (x86_64-pc-linux-gnu 6.10.58)"  <<>>  929

Program file_upload_handler jest na miejscu:
perft@x:~/www/cgi-bin$ ls -l
total 5244
-rwxr-xr-x 1 perft www-data 4338900 Jul 16 04:39 cgi
-rwxr-xr-x 1 perft www-data 1010233 Jul 16 04:39 file_upload_handler


Katalog upload ma dla prawa dla grupy rwx

perft@x:~/www$ ls -l
total 84
drwxrws---  2 perft www-data 4096 Jul 16 04:39 upload


Pliku file_upload_handler.log nie znalazłem u siebie.

Pozdrawiam

#126
Archiwum / serwer na windows?
21 Lipiec 2013, 23:29
Dodałem 20zadań, od test_a_00 do test_a_19.
Pozdrawiam
#127
Archiwum / serwer na windows?
21 Lipiec 2013, 23:26
Cytat: TJM w 21 Lipiec 2013, 23:17
Część od samej aplikacji w odpowiedzi schedulera wygląda ok.
Jedyne co tam rzuca się w oczy, to że nazwałeś plik po prostu 'uc1' podczas gdy BOINCowa tradycja narzucała formę nazwa_wersja_platforma - ale to chyba nie jest wymagane od czasu AppVersionNew http://boinc.berkeley.edu/trac/wiki/AppVersionNew
Z tego też względu myślałem, że jest to plik od zadania, a nie aplikacja.

Części reply od zadania nie udało mi się przejrzeć, bo nie dałem rady zassać żadnego zadania. Wygeneruj ich trochę więcej, może uda się jakieś łyknąć. Albo wklej swój sched_reply z momentu jak dostajesz zadania.
Mam wrażenie że zachowanie jest losowe. Teraz wygląda na to, jakby wszystko było w
porządku aż do czasu odesłania wyników. Czyli aplikację pobrał poprawnie, zadanie
do serwera dodane poprawnie, pobrany plik wejściowy poprawnie, obliczenia poprawne(!),
ale odesłanie wyników się wykrzaczyło - przynajmniej ja te logi tak rozumiem:

nie, 21 lip 2013, 23:19:14 | perft | Started download of in
nie, 21 lip 2013, 23:19:15 | perft | Finished download of in
nie, 21 lip 2013, 23:19:15 | perft | Starting task test22_1 using uc1 version 1
nie, 21 lip 2013, 23:19:15 | perft | Starting task test22_0 using uc1 version 1
nie, 21 lip 2013, 23:19:23 | perft | Sending scheduler request: To fetch work.
nie, 21 lip 2013, 23:19:23 | perft | Requesting new tasks for CPU
nie, 21 lip 2013, 23:19:25 | perft | Scheduler request completed: got 0 new tasks
nie, 21 lip 2013, 23:19:25 | perft | Project has no tasks available
nie, 21 lip 2013, 23:19:39 | perft | Computation for task test22_1 finished
nie, 21 lip 2013, 23:19:40 | perft | Computation for task test22_0 finished
nie, 21 lip 2013, 23:19:41 | perft | Started upload of test22_1_0
nie, 21 lip 2013, 23:19:42 | perft | Temporarily failed upload of test22_1_0: transient upload error
nie, 21 lip 2013, 23:19:42 | perft | Backing off 11 min 31 sec on upload of test22_1_0
nie, 21 lip 2013, 23:19:42 | perft | Started upload of test22_0_0
nie, 21 lip 2013, 23:19:43 | perft | Temporarily failed upload of test22_0_0: transient upload error
nie, 21 lip 2013, 23:19:43 | perft | Backing off 12 min 56 sec on upload of test22_0_0


Zadania zaraz dodam i wyłączę mojego klienta, bo je szybko konsumuje.
Pozdrawiam

#128
Archiwum / serwer na windows?
21 Lipiec 2013, 22:55
Cytat: TJM w 21 Lipiec 2013, 22:39
Wygeneruj więcej zadań, żeby można było samemu zobaczyć.
Wygenerowałem łączne 21, w tym przed chwilą 10.
Po tym u mnie pojawiły się takie logi:

nie, 21 lip 2013, 22:44:54 | perft | update requested by user
nie, 21 lip 2013, 22:44:55 | perft | Sending scheduler request: Requested by user.
nie, 21 lip 2013, 22:44:55 | perft | Requesting new tasks for CPU
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
nie, 21 lip 2013, 22:44:57 | perft | Scheduler request completed: got 10 new tasks
nie, 21 lip 2013, 22:44:57 | perft | [error] State file error: missing file
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't handle task test3_4 in scheduler reply
nie, 21 lip 2013, 22:44:57 | perft | [error] State file error: missing file
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't handle task test_1 in scheduler reply
nie, 21 lip 2013, 22:44:57 | perft | [error] State file error: missing file
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't handle task test3_5 in scheduler reply
nie, 21 lip 2013, 22:44:57 | perft | [error] State file error: missing file
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't handle task test4_4 in scheduler reply
nie, 21 lip 2013, 22:44:57 | perft | [error] State file error: missing file
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't handle task test4_5 in scheduler reply
nie, 21 lip 2013, 22:44:57 | perft | [error] State file error: missing file
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't handle task test5_2 in scheduler reply
nie, 21 lip 2013, 22:44:57 | perft | [error] State file error: missing file
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't handle task test5_3 in scheduler reply
nie, 21 lip 2013, 22:44:57 | perft | [error] State file error: missing file
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't handle task test6_2 in scheduler reply
nie, 21 lip 2013, 22:44:57 | perft | [error] State file error: missing file
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't handle task test6_3 in scheduler reply
nie, 21 lip 2013, 22:44:57 | perft | [error] State file error: missing file
nie, 21 lip 2013, 22:44:57 | perft | [error] Can't handle task test10_0 in scheduler reply




Cytat: TJM w 21 Lipiec 2013, 22:39
Według mnie masz gdzieś problem w template, albo w create_work i przez to po stronie klienta powstaje 'nadrzędny' błąd "can't parse scheduler reply". Dopóki tego nie naprawisz, na 100% nic nie zadziała. Jest jeszcze opcja błędnej nazwy aplikacji. Jak w ogóle dodawałeś aplikację - zostawiłeś to, co serwer sam robi przy setupie ?
Dodawałem według tutoriala. Najpierw wpis do project.xml

    <app>
        <name>uc1</name>
        <user_friendly_name>upper case 1</user_friendly_name>
    </app>

Potem aplikacja bin/xadd

Potem to drzewko aplikacji:
cd apps/uc1/0.01/x86_64-pc-linux-gnu/
uc1          uc1.sig      version.xml 

at version.xml
<version>
  <file>
    <physical_name>uc1</physical_name>
    <logical_name>upper case 1</logical_name>
  </file>
</version>


Podpisałem aplikację kluczem keys/code_sign_private

Na koniec program bin/update_version. Nie wyrzuciło żadnego
błędu i aplikacja licząca jest po stronie klienta - więc tutaj nie
podejrzewam żadnych problemów.

Pozdrawiam




Cytat: TJM w 21 Lipiec 2013, 22:39
W logu nie widać żadnego ściągania aplikacji, tylko plik od niej, który jest kasowany w momencie jak zadanie nie może być przetworzone. Dlatego go potem nie ma.
Tak czy inaczej, teraz aplikacja leży pobrana po stronie klienta.


Cytat: TJM w 21 Lipiec 2013, 22:39
P.S. Zadań testowych nigdy nie żałuj, łatwo później się ich pozbyć przez panel 'ops', a quotę po stronie testowych hostów łatwo wyzerować.
Szybko się zużywają, bo jak błąd, to aplikacja woła o następne.

Pozdrawiam

#129
Archiwum / serwer na windows?
21 Lipiec 2013, 22:40
Cytat: buninek w 21 Lipiec 2013, 22:37
Może na 24-48h odpuścić, bo poziom frustracji tylko wzrasta. Podejść ponownie z chłodną głową. Popełniasz gdzieś banalny, a być może kardynalny błąd.
Tyle to wiem, ale ciekawe jaki to błąd i czy do końca roku się uporam :D

#130
Archiwum / serwer na windows?
21 Lipiec 2013, 22:30
Cytat: krzyszp w 21 Lipiec 2013, 22:27
No dobra...
Wybierz z menu Advenced -> Event Log
W managerze, w zakładce Projects wybierz swój projekt i kliknij "Update". obserwuj co wyświetla w Event log. podaj tutaj. (Inne projekty w tym czasie spauzuj).
Gdy podawałem logi z menadżera to zawsze robiłem tak jak piszesz. Podam zaraz po nowym WU.
Pozdrawiam

Po dodaniu nowego WU takie logi są w menadżerze

nie, 21 lip 2013, 22:31:04 | perft | update requested by user
nie, 21 lip 2013, 22:31:09 | perft | Sending scheduler request: Requested by user.
nie, 21 lip 2013, 22:31:09 | perft | Not reporting or requesting tasks
nie, 21 lip 2013, 22:31:10 | perft | Scheduler request completed
nie, 21 lip 2013, 22:31:19 | perft | update requested by user
nie, 21 lip 2013, 22:31:20 | perft | Sending scheduler request: Requested by user.
nie, 21 lip 2013, 22:31:20 | perft | Not reporting or requesting tasks
nie, 21 lip 2013, 22:31:22 | perft | Scheduler request completed



Po usunięciu projektu z menadżera i ponownym dodaniu, aplikacja licząca
została pobrana. Czyli jednak poprzednio prawdopodobnie sam skasował, jak
nie było work-units. Pobieranie działa dobrze.

Po usunięciu i ponowny dodaniu projektu, mam takie logi, niewiele z nich
rozumiem:

nie, 21 lip 2013, 22:34:30 | perft | Resetting project
nie, 21 lip 2013, 22:34:30 | perft | Detaching from project
nie, 21 lip 2013, 22:35:11 | perft | Master file download succeeded
nie, 21 lip 2013, 22:35:16 | perft | Sending scheduler request: Project initialization.
nie, 21 lip 2013, 22:35:16 | perft | Requesting new tasks for CPU
nie, 21 lip 2013, 22:35:17 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
nie, 21 lip 2013, 22:35:17 | perft | Scheduler request completed: got 1 new tasks
nie, 21 lip 2013, 22:35:17 | perft | [error] State file error: missing file
nie, 21 lip 2013, 22:35:17 | perft | [error] Can't handle task test_0 in scheduler reply
nie, 21 lip 2013, 22:35:19 | perft | Started download of uc1


Pozdrawiam
#131
Archiwum / serwer na windows?
21 Lipiec 2013, 22:29
Cytat: krzyszp w 21 Lipiec 2013, 22:22
A Ty na pewno dodałeś projekt w managerze? Ile WU wygenerowałeś, może inni ściągnęli Twoje testowe WU zanim Ty zdążyłeś?
Na pewno dodałem projekt. Mam logi z menadżera z tytułem "perft". Najświeższe:

nie, 21 lip 2013, 22:20:07 | perft | update requested by user
nie, 21 lip 2013, 22:20:10 | perft | Sending scheduler request: Requested by user.
nie, 21 lip 2013, 22:20:10 | perft | Not reporting or requesting tasks
nie, 21 lip 2013, 22:20:12 | perft | Scheduler request completed
nie, 21 lip 2013, 22:20:26 | perft | update requested by user
nie, 21 lip 2013, 22:20:27 | perft | Sending scheduler request: Requested by user.
nie, 21 lip 2013, 22:20:27 | perft | Not reporting or requesting tasks
nie, 21 lip 2013, 22:20:28 | perft | Scheduler request completed


Za każdym razem gdy dodawałem jeden WU, to po logach w menadżerze
wnioskowałem że dwa razy próbował go pobrać i dwa razy zakończyło
się błędem. Potem już nie pobierał. Zaraz dodam kolejny WU, zobaczymy...

Pozdrawiam

#132
Archiwum / serwer na windows?
21 Lipiec 2013, 22:23
Cytat: krzyszp w 21 Lipiec 2013, 22:22
Dopóki nie usuniesz projektu z managera, dopóty wszystko w katalogu "projects" zostaje, więc to nie to...
NIE pobiera Ci aplikacji z serwera...
No dobra, dlaczego nie pobiera? Dlaczego nie mam logu że nie może pobrać?
Pozdrawiam

#133
Archiwum / serwer na windows?
21 Lipiec 2013, 22:19
Cytat: krzyszp w 21 Lipiec 2013, 22:13
No i widzisz - w ogóle nie ściąga aplikacji liczącej z serwera...
Może ściągnął i skasował? Widziałem kilka razy jakiś log, że ją pobiera.

Co trzeba zrobić żeby ściągał? Aplikację na serwerze dodałem. Potem
podpisałem wersję i dodałem wersję.

Pozdrawiam

#134
Archiwum / serwer na windows?
21 Lipiec 2013, 22:09
Cytat: Szopler w 21 Lipiec 2013, 21:33
Szukaj w /var/lib/boinc-client
Tam nie mam błędu że nie udało się rozwiązać nazwy pliku, pasują tylko
jakieś pliki binarne z innych projektów.

root@biglaptop:/var/lib/boinc-client# find . -name "*" -print | xargs grep "resolved"
Plik binarny ./projects/boinc.bakerlab.org_rosetta/minirosetta_3.46_x86_64-pc-linux-gnu pasuje do wzorca
Plik binarny ./projects/asteroidsathome.net_boinc/period_search_10100_x86_64-pc-linux-gnu pasuje do wzorca
root@biglaptop:/var/lib/boinc-client#


Nie wiem czy to jest slot projektu perft, ale jeśli tak, to jest on pusty:

root@biglaptop:/var/lib/boinc-client/projects/perft.computers-chess.com# ls -l
razem 0


Plików które mają w ścieżce "perft" trochę jest

root@biglaptop:/var/lib/boinc-client# find . -name "*perft*"
./statistics_perft.computers-chess.com.xml
./notices/feeds_perft.computers-chess.com.xml
./notices/perft.computers-chess.com_notices.php.xml
./notices/archive_perft.computers-chess.com_notices.php.xml
./projects/perft.computers-chess.com
./sched_request_perft.computers-chess.com.xml
./master_perft.computers-chess.com.xml
./account_perft.computers-chess.com.xml
./sched_reply_perft.computers-chess.com.xml


Przejrzałem niektóre, nie widzę nic interesującego.
Pozdrawiam
#135
Archiwum / serwer na windows?
21 Lipiec 2013, 21:29
Cytat: krzyszp w 21 Lipiec 2013, 19:07
Pisałem chyba dwa razy, żebyś ściągnął źródła aplikacji radioaktywnego... tam właśnie jest tworzony error log (a właściwie log aplikacji, nie tylko błedy) od początku... Przypominam
Exit status pokazuje, że aplikacja zakończyła się porażką, dopisz error log'a w aplikacji i zajrzyj do odpowiedniego "slot" w momencie rozpoczęcia liczenia na kliencie...
Ignorujesz rady, to jak chcesz dojść do czegoś...
Tak, do obejrzenia fragment:
if(err != 0)
    {
if (err != *error) {
fprintf(stderr, "Could not find any of the devices listed in sensors.xml: %s\n", usbErrorMessage(err));
*error = err; //rewriting the "local" error to the global var
}
        return NULL;
    }

Mogę ściągnąć, ale taki sam sposób logowania ma upper-case. Też
wysyła przy pomocy fprintf na stderr:

fprintf(stderr, "%s Couldn't find input file, resolved name %s.\n", boinc_msg_prefix(buf, sizeof(buf)), input_path );


Nie wiem gdzie te logi są zapisywane i co
je przechwytuje. Co to jest odpowiedni slot? W menadżerze nie
mam logu:  "%s Couldn't find input file, resolved name %s.\n".

Czyli albo problem nie polega na tym, że aplikacja nie może znaleźć input file, albo
nie wiem gdzie szukać tych logów. Nie mam katalogu /var/logs/client-boinc.

Pozdrawiam
#136
Archiwum / serwer na windows?
21 Lipiec 2013, 18:46
Cytat: Szopler w 21 Lipiec 2013, 15:37
sob, 20 lip 2013, 09:14:02 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
Nadal występuje?
Właśnie nie występował, a ostatnio jak próbowałem dodać następne WU to znowu się
pojawił. Dodaję zawsze tak samo.


Cytat: Szopler w 21 Lipiec 2013, 15:37
Może '..' oznacza tyle, że nie są podane pełne ścieżki do plików tylko program widzi coś takiego "../nazwa_pliku" zamiast "/home/user/inputfiles/nazwa_pliku"?
Tak na początku zrozumiałem, bo by mi do głowy nawet nie przyszło, żeby w nazwie
plików wejściowych używać dwóch kropek. No ale pisze wyraźnie, że to nazwa
pliku ma dwie kropki.

Pozdrawiam
#137
Archiwum / serwer na windows?
21 Lipiec 2013, 18:43
Cytat: Karlik w 21 Lipiec 2013, 15:11
Ja nie wymagam, żebyś wiedział dokładnie co się dzieje w samym kliencie i/lub serwerze, ale ja czytając tylko ten jeden komunikat z loga Twojego klienta doszedłem do tego, że się niepoprawnie ściąga workunit, więc siłą rzeczy aplikacja licząca nie ma swojego pliku wejściowego (lub nie może się do niego poprawnie odwołać) - więc ostatecznie zwraca -1 (czy też inny kod błędu). Jak dla mnie błąd leży gdzieś w konfiguracji serwera (szeroko rozumianej), więc w sumie masz rację, developera aplikacji liczącej nie obchodzi jak to działa od środka (bo w chwili obecnej bardzo prawdopodobne, że masz działającą aplikację), po prostu nie dostał wejścia, za to administrator ma tu pole do popisu.
Tak właśnie uważam. Problem w tym, że nie wiem co ze strony administratora jeszcze trzeba
zrobić, albo co zrobić lepiej. Podejrzewam że źle dodaję WU, ale to podejrzenie też jest
słabe, bo jednak WU jest na serwerze i program dodający nie zwraca żadnych błędów.

Cytat: Karlik w 21 Lipiec 2013, 15:11
Nie wiem jak to wygląda od środka aż tak dokładnie, może faktycznie create_work powinien mieć jakąś walidację przed dodaniem work-unita, ale wg mnie napisanie czegoś takiego graniczy z cudem ze względu na liczbę kombinacji różnych ustawień plików (bo w końcu create_work może nie mieć dostępu do pewnych plików, bo jest uruchamiany lokalnie, ale już po podpięciu pod całość klient ma dostęp - bo przykładowo coś się wygeneruje "w locie" - nie wiem czy to możliwe, ale nie widzę powodów, żeby miało być niemożliwe, teraz trochę gdybam).
Z tego co zauważyłem, to ma walidację bardzo dobrą. Zanim udało mi się
"poprawnie" dodać WU, to create_work informował mnie całkiem precyzyjnie
co zrobiłem źle.

Cytat: Karlik w 21 Lipiec 2013, 15:11
Nie wiem jakie były powody wybrania cgi,
CGI to po prostu dowolny program po stronie serwera, wraz z protokołami
uruchamiania, przekazywania parametrów, itd. To jest rozszerzenie
statycznych plików HTML. Każda strona w PHP to też jest CGI.

Cytat: Karlik w 21 Lipiec 2013, 15:11
ale na pewno bym odpuścił pisanie frame-worka, który korzysta bezpośrednio z gniazd. HTTP zazwyczaj jest przepuszczane bez większych problemów przez domyślne konfiguracje większości firewalli/routerów. Za to jak byś chciał mieć własny protokół to już może być większy problem, szczególnie jakby użytkownik musiał zezwolić na ruch na dziwnych portach, a jak puścisz na porcie 80 coś innego niż http to też część urządzeń może to odfiltrować. Rozwiązanie fajne dla kogoś kto wie o czym mowa, dla przeciętnego użytkownika, który nie ma władzy nad podsiecią w której jest może spowodować niemożność liczenia.
Hmmm. Czyli jak transfer leci po http czy https to więcej routerów przepuszcza... Dobry
argument.

Pozdrawiam
#138
Archiwum / serwer na windows?
21 Lipiec 2013, 18:23
Cytat: krzyszp w 21 Lipiec 2013, 11:05
Dlaczego po prostu nie sprawdzisz, co dzieje się z Twoją aplikacją po stronie klienta?
Ponieważ nie umiem. Jak mam sprawdzić?

Cytat: krzyszp w 21 Lipiec 2013, 11:05
Czy powstaje plik out?
Gdzie go szukać? Jaką ma nazwę? Kiedy powinien powstać, a kiedy jest automatycznie
usuwany? Nie mam logu "created out file".


Cytat: krzyszp w 21 Lipiec 2013, 11:05
Czy WU jest ściągane w ogóle?
Wiem na ten temat tyle samo co Ty :D Widziałeś te same logi co ja :D Intuicja
podpowiada, że jakby powstał błąd na etapie ściągania, to serwer uznałby to za
zwykłą sytuację, bo błędy sieci są częste, więc nie oznaczałby WU jako
Computation error [3]  z exit code -1.


Cytat: krzyszp w 21 Lipiec 2013, 11:05
Dlaczego nie dopiszesz error loga do aplikacji? - "Nie mogę znaleźć pliku" więcej mówi niż exit code -1...
Bo to jest dopisane do aplikacji, nie wiem tylko gdzie to się powinno wyświetlać. W menadżerze
nie wyświetla się. Jakieś inne miejsce?
O tu jest dopisane:

    boinc_resolve_filename(INPUT_FILENAME, input_path, sizeof(input_path));
    infile = boinc_fopen(input_path, "r");
    if (!infile) {
        fprintf(stderr,
            "%s Couldn't find input file, resolved name %s.\n",
            boinc_msg_prefix(buf, sizeof(buf)), input_path
        ); // Tutaj dokładnie
        exit(-1);
    }


Cytat: krzyszp w 21 Lipiec 2013, 11:05
Własny framework? Ok, ale zdajesz sobie sprawę, jaki to ogrom pracy, aby było to uniwersalne i atrakcyjne dla "ludu"? Przecież to nie tylko implementacja serwera i klienta, to także strona projektu, może forum, punktacja/prezentacja wyników, może wygaszacz... czyli... BOINC :)
Nakład pracy mnie nie martwi. Można rozbić na etapy. Podstawowa wersja raczej by
się pojawiła szybko. Boję się czegoś innego - że niewielu ludzi będzie chciało tego używać i
że nie powstanie na tym żaden inny projekt poza moim.

Cytat: krzyszp w 21 Lipiec 2013, 11:05
Dalej uważam, że zabierasz się trochę dziwnie do tego i nie są właściwe Twoje argumenty, że coś z BOINC jest nie tak - ponad 100 projektów świadczy o tym, że się da...
Wiem że inne projekty działają. Ale mała to pociecha, bo u mnie nie działa
najprostsza aplikacja. I nie wiem co zrobić. Co mam myśleć? WU dodaje
się bez błędów. Używam wzorcowej aplikacji klienckiej. Inne aplikacje
liczące działają. Wzorcowa nie działa. W logach m.in. mam że nazwa pliku
jest pusta albo zawiera kropki - a nie jest prawdą ani jedno, ani drugie.
Ja nie wiem co dalej zrobić, jak ktoś ma jakiś pomysł, to chętnie zrobię.
Ale na części pierwsze na pewno nie będę rozbierał  BOINCa, bo to
może zająć więcej czasu niż napisanie swojego prostego frame-worka.

Pozdrawiam
#139
Archiwum / serwer na windows?
21 Lipiec 2013, 02:54
Cytat: Karlik w 21 Lipiec 2013, 01:39
Sam podałeś fragment logu klienta w którym się uaktywnił błąd. Późniejszy zwrot 255 jest zupełnie wtórny.
Przekopiowałem to co widać w menadżerze, nie mam pojęcia co się dostaje do menadżera, czy
wszystkie logi się dostają, czy są to logi identyczne, czy może jest jeszcze jakaś warstwa pośrednia.
Po prostu jest to element którego nie chcę rozumieć. Ja chcę tylko wrzucić dane na serwer i
potem mieć je dostępna na kliencie. Nic więcej nie powinno mnie interesować.

Do serwera trafia exit code 0xff. Piszesz że jest wtórny, nie wiem co to znaczy że jest wtórny. Po
prostu jakoś tam się dostaje ta wartość -1. Mechanizm przekazywania exit code jest pewnie
bardzo skomplikowany. Na pewno najpierw aplikacja robi z funkcji main return 0xff. Potem tę
wartość dostaje aplikacja która monitoruje/nadzoruje aplikację liczącą. Potem pewnie leci
zapytanie do web serwera. Web serwer odbiera zapytanie, dekoduje SSL, dekoduje parametry
CGI. W końcu web serwer odpala aplikację CGI, chyba to jest ten binarny programik dostarczyny
z serwerem BOINC, ale może to też być najzwyklejszy plik PHP. W tle po stronie serwera
pracują demony BOINC, może program CGI jakoś się komunikuje z tymi demonami. Albo program
CGI, albo demony łączą się z bazą MYSQL. W końcu do bazy danych trafia jakiś wpis. Potencjalnie
na każdym z powyższych etapów może stać się coś, w skutek czego do bazy trafi exit code = 0xff.

Ja nie wiem gdzie i co się stało, i wiedzieć nie chcę. Rozbiór tego mechanizmu na części pierwsze
zajmie mi za dużo czasu. Za to są odpowiedzialni autorzy BOINC. Programista aplikacji liczącej chce z
zestawu plików zrobić zestaw work-units, a następnie oczekuje, że w sposób przezroczysty work-units
znajdą się po stronie aplikacji liczącej. I koniec. Jeśli nie działa, to albo BOINC ma problem, albo z
dokumentacji nie umiem wywnioskować jak to się poprawnie robi. Ale jeśli źle wywnioskowałem, to
dlaczego program dodaje work-unit do bazy i nie wywala błędów? I dlaczego na stronie serwera widać
że jest dodany work-unit? Raczej dodanie przebiega poprawnie. Problem jest w innym miejscu. Ale
w jakim, skoro używam wzorcowej aplikacji po stronie klienta?


Cytat: Karlik w 21 Lipiec 2013, 01:39
Sprawdzałeś w ogóle co się ściągnęło do folderu projektu w kliencie? Próbowałeś uruchomić zadanie bez przetwarzania (w sensie - klient przygotowuje slot i kopiuje/generuje odpowiednie pliki, ale nie uruchamia aplikacji)?
Nie sprawdzałem. Nie wiem jaki to folder, nie wiem jak długo dane są tam trzymane, nie
wiem czy są zaszyfrowane/skompresowane, nie wiem jakie meta-dane są doklejane
do danych, nie wiem czy w trakcie działania aplikacji liczącej dane ulegają zmianie..
Po to jest warstwa abstrakcji, żeby autorzy boinc mogli przechowywać dane w
zupełnie dowolny sposób.


Cytat: Karlik w 21 Lipiec 2013, 01:39
Jak chcesz pisać własny framework to nikt Ci chyba nie broni.
Potrzebuję jakiegoś wsparcia na etapie popularyzowania. Zastanawiam się na
głos, co by musiało się stać, alby:
1) ludzie korzystali z takich narzędzi,
2) wolontariusze ściągali aplikacje liczące i chętnie/licznie wspierali naukowców.
Mogę taki frame-work zrobić tylko na potrzeby tej jednej aplikacji szachowej, ale
nie wiem czy ktoś będzie chciał wspomagać obliczenia, a co dopiero napisać
swoją aplikację, choćby taką o charakterze edukacyjnym.



Cytat: Karlik w 21 Lipiec 2013, 01:39
Tylko musiałoby to mieć naprawdę dużą elastyczność/konfigurowalność, żeby mogło się przyjąć wg mnie,
bo każdy ma inne potrzeby i zasoby (jako twórcy projektów).
W tym aspekcie jestem raczej optymistą. Generalnie każde obliczenia mogą wyglądać tak:
1) wprowadzenie danych wejściowych
2) wykonanie obliczeń
3) odesłanie danych wyjściowych.
Można całkowicie wyeliminować web-serwer i protokół CGI. Cała transmisja bezpośrednio
na gniazdkach z ssl. Zapewni to dużą wydajność. Generalnie programista dostanie
funkcję zwrotną, np. taką:
void compute( inputs , output ) {
}
W tej funkcji będzie mógł robić co chce, a na końcu wyniki wpisze do output. Klient zapisze
outputs na dysku i będzie próbował co jakiś czas odesłać je do serwera.



Cytat: Karlik w 21 Lipiec 2013, 01:39
Co do GUI to akurat najmniej istotny element całego oprogramowania do obliczeń.
No może minimalny konfigurator dla użytkownika mógłby się przydać, bo ludzie lubią widzieć "pasek postępu" i
móc przeklikać wszystko zamiast wpisywać długie komendy i/lub edytować pliki konfiguracyjne ;)
Chociaż mi tam wystarczyłaby aplikacja konsolowa jeśli projekt by mnie zainteresował :arrr:
Aplikacje konsolowe mają swoje zalety, graficzne swoje. Aplikację konsolową łatwiej odpalić gdzieś na
jakimś starszym komputerze, nie trzeba instalować środowiska GUI, łatwiej zrobić na niej przetwarzanie
wsadowe.  Natomiast w graficznej czasami można uzyskać taki efekt, że użytkownik choćby
chciał źle skonfigurować, to mu GUI na to nie pozwoli.

Podstawową konfigurację widzę w ten sposób, że ktoś wskazuje katalogi z plikami. Przy
każdym katalogu oznacza czy są to pliki trwałe czy ulotne. Pliki trwałe klient będzie
próbował zachować do późniejszych obliczeń. Po wczytaniu wszystkich plików do
bazy, będzie trzeba zbudować work-units. Każdy lubi inne narzędzia do tego celu.
Jedni wolą napisać jakiś insert w sqlu, drudzy jakiś plik xml/csv, jeszcze inni wolą
napisać procedurę w jakimś języku programowania - można dać kilka możliwości.

Od razu po zbudowaniu work-unit, na aplikacjach klienckich by się wywoływała
funkcja zwrotna z danymi. Itd itd... znaczną część projektu mam w głowie, a
przynajmniej tak mi się wydaje.

Pozdrawiam
P.S.
Dla pewności zalogowałem się jeszcze do Asteroids i działa u
mnie bez zarzutu. Więc instalację po stronie klienta mam poprawną.


#140
Archiwum / serwer na windows?
21 Lipiec 2013, 01:02

A może to nie jest tak głupi pomysł, żeby utworzyć nowego, skrajnie prostego frame-worka
do obliczeń rozproszonych? Może by się udało go jakoś spopularyzować i tym samym
ułatwić życie naukowcom chcącym wykonywać obliczenia rozproszone? Ktoś jakiś czas
temu pisał (chyba Rysiu) że droga do działającego projektu jest długa - wnioskuję z
tego, że nie tylko ja mam masę problemów.

Na pewno jestem w stanie napisać nowoczesny zestaw narzędzi do budowania
projektów bardzo podobnych do BOINC. Mało tego, jestem w stanie napisać to
wszystko tak, żeby potem developer nie musiał się martwić o szereg drobiazgów.
Np. GUI by się programowało tak samo jak w QT, a QT jest dobrze udokumentowane.

Do tego byśmy zrobili kilka przykładowych programów, jakąś stronę www projektu i
może chętni do korzystania by się znaleźli? Problem widzę jedynie w spopularyzowaniu
tego. Musiałby powstać na tym jakiś jeden ważny projekt - pozostałe by się przyłączyły
lawinowo.

Pozdrawiam

#141
Archiwum / serwer na windows?
21 Lipiec 2013, 00:34
Cytat: krzyszp w 20 Lipiec 2013, 21:31
To jednak może zainstaluj lokalnie managera, podłącz się pod kilka projektów, nawet non-cpu (WuProp, radioaktywny), zobacz jak w praktyce pliki są rozłożone, podejrzyj logi. To może co nieco rozjaśnić.
Nie rozjaśni. Podaje się w resolve_filename plik z sekcji file_ref. Pliki na każdym komputerze
mogą być rozmieszczone inaczej, w każdej wersji mogą być rozmieszczone inaczej.
Nawet jeśli dzięki temu otworzę pliki wejściowe, to na nowym kliencie projekt może się
wysypać.



Cytat: krzyszp w 20 Lipiec 2013, 21:31
I jeszcze sprawa  boinc_resolve_filename(INPUT_FILENAME, input_path, sizeof(input_path)); - co podajesz jako argumenty? Może nic?
Nie zmieniałem programu, czyli podaję:

#define CHECKPOINT_FILE "upper_case_state"
#define INPUT_FILENAME "in"
#define OUTPUT_FILENAME "out"


W szablonie mam właśnie "in" jako file_ref:

<input_template>
    <file_info>
        <number>0</number>
    </file_info>
    <workunit>
        <file_ref>
            <file_number>0</file_number>
            <open_name>in</open_name>
        </file_ref>
    </workunit>
</input_template>


Pozdrawiam
#142
Archiwum / serwer na windows?
20 Lipiec 2013, 19:33
Cytat: buninek w 20 Lipiec 2013, 18:12
@mariotti
Mam takie może zaskakujące pytanie. Czy brałeś już udział jako aktywny uczestnik jakiegokolwiek projektu BOINC?
Może warto zacząć od tego. Wbrew pozorom, wiedza o tym, czym kierują się uczestnicy i jak to wszystko działa po stronie klienta jest wskazana, a nawet niezbędna.
Ściągnąłem kiedyś rosetę, policzyłem, odesłałem i mądrzejszy nie jestem. Nie wiem
nada co robię źle.
Pozdrawiam

#143
Archiwum / serwer na windows?
20 Lipiec 2013, 18:25
Cytat: Karlik w 20 Lipiec 2013, 15:36
Cytat: mariotti w 20 Lipiec 2013, 15:13Używam wzorcowej aplikacji z przykładów dostarczonych wraz z BOINC. Chyba ona nie ma błędów? Problem jest z podaniem plików do tej aplikacji.
No tak, tylko nie wiem czemu w takim razie piszesz o możliwych miejscach wystąpienia exit(-1) i podajesz fragmenty kodu aplikacji liczącej skoro błąd jest na poziomie klient-serwer a nie klient-aplikacja.
Ponieważ do bazy danych trafił wpis exit(0xff). Może to przypadek, może coś innego zwróciło -1.
Po prostu ta sama wartość jest w tamtym miejscu w kodzie co w bazie. W sumie to nie wiem
na jakim poziomie jest błąd. Może błąd jest na poziomie klient-serwer, ale uaktywnia się dopier
na poziomie aplikacji liczącej. Nie wiem.
Pozdrawiam
#144
Archiwum / serwer na windows?
20 Lipiec 2013, 15:13
Cytat: Karlik w 20 Lipiec 2013, 12:04
Nie wiem jak masz to skonfigurowane, ale ja bym po prostu zobaczył co dostaje klient i dlaczego zachowuje się tak a nie inaczej. Może jakoś wireshark pomoże? Z tego co piszesz to debugujesz nie w tym miejscu co trzeba. Klient sam Cię informuje, że nie ma jakiegoś pliku/nie może ściągnąć (może coś z konfiguracją?) a Ty próbujesz rozwiązywać problem w aplikacji liczącej. To tak jakby próbować rozwiązać problem suszy przez lepsze naostrzenie sierpu.
Używam wzorcowej aplikacji z przykładów dostarczonych wraz z BOINC. Chyba ona
nie ma błędów? Problem jest z podaniem plików do tej aplikacji.

Cytat: mariotti w 20 Lipiec 2013, 02:38Aplikacja licząca działa na innym komputerze niż
są zakładane pliki, więc na pewno nie znajdzie plików tam gdzie były zakładane.
http://sjp.pwn.pl/szukaj/zak%C5%82ada%C4%87 <= 8. znaczenie
[/quote]
Ok, rozumiem. Ale odpowiedź jest taka sama jak wyżej: nie działa wzorcowa aplikacja,
nic nie mogłem w niej skopać, bo jej nie zmieniałem.

Pozdrawiam
#145
Archiwum / serwer na windows?
20 Lipiec 2013, 09:08
Cytat: krzyszp w 20 Lipiec 2013, 08:07
Nie wiem, czy upper case jest łatwiejszy - pierwsza wersja app dla radioaktywnego używała... 2 (słownie dwóch) funkcji BOINC...
Więc może upper-case jest trudniejszy. Tak czy inaczej, rozumiem kod upper-case. Skoro bez
dokumentacji doszedłem do tego, że ten exit status w panelu administracyjnym ma taką samą
wartość co zwracana w upper-case, to chyba rozumiem go całkiem nieźle.

Problem leży w czym innym. Task się dodaje. Klient ten task pobiera. A aplikacja nie
rozwiązuje nazwy pliku wejściowego z tego tasku. Task chyba dodaję poprawnie,
bo po pierwsze jest w systemie, po drugie program create_work nie zwraca
żadnego błędu, po trzecie task jest pobierany przez klienta. Po prostu aplikacja
licząca nie może otworzyć pliku wejściowego. Prawdopodobnie wywala się
w tym miejscu:


    boinc_resolve_filename(INPUT_FILENAME, input_path, sizeof(input_path));
    infile = boinc_fopen(input_path, "r");
    if (!infile) {
        fprintf(stderr,
            "%s Couldn't find input file, resolved name %s.\n",
            boinc_msg_prefix(buf, sizeof(buf)), input_path
        );
        exit(-1);
    }

Czyli kod jest banalnie prosty. O poprawność powinien dbać klient, powinien ściągnąć
pliki w takie miejsce żeby boinc_fopen mogła bez problemu go otwierać.

Pozdrawiam
[edit]

Takie mam logi w menadżerze:

sob, 20 lip 2013, 09:13:58 | perft | update requested by user
sob, 20 lip 2013, 09:14:01 | perft | Sending scheduler request: Requested by user.
sob, 20 lip 2013, 09:14:01 | perft | Requesting new tasks for CPU
sob, 20 lip 2013, 09:14:02 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
sob, 20 lip 2013, 09:14:02 | perft | [error] Can't parse file info in scheduler reply: file name is empty or has '..'
sob, 20 lip 2013, 09:14:02 | perft | Scheduler request completed: got 2 new tasks
sob, 20 lip 2013, 09:14:02 | perft | [error] State file error: missing file
sob, 20 lip 2013, 09:14:02 | perft | [error] Can't handle task test4_0 in scheduler reply
sob, 20 lip 2013, 09:14:02 | perft | [error] State file error: missing file
sob, 20 lip 2013, 09:14:02 | perft | [error] Can't handle task test4_1 in scheduler reply


Nazwa pliku nie jest ani pusta ani nie zawiera kropek.

#146
Archiwum / serwer na windows?
20 Lipiec 2013, 04:39
Cytat: krzyszp w 20 Lipiec 2013, 04:24
Nie wiem, jak w praktyce to wygląda, ale generalnie boinc_resolve_filename() podaje Ci rzeczywistą ścieżkę do plików
To samo wywnioskowałem czytając źródła przykładowego programu upper case.

Cytat: krzyszp w 20 Lipiec 2013, 04:24
- wszak faktycznie próbki są ściągane do katalogów "slot" (slot0, slot1, slot2, itd)
Ok, ale skoro jest funkcja boinc_resolve_filename, to ja rozumiem że boinc developera to
zupełnie nie interesuje i zamieszczanie tej informaji w tutorialu jest jest zbędne.



Cytat: krzyszp w 20 Lipiec 2013, 04:24
i mogą być w różnych miejscach na komputerze użytkownika i zawsze w innym miejscu niż sama aplikacja (która jest w katalogu "projects").
Mogą być w różnych miejscach, poza sytuacją gdy się ustawi atrybut copy. Atrybut copy jest
specjalnie dla tych aplikacji które są bez źródeł i nie można ich dostosować do BOINC - ale
to inne zagadnienie.


Cytat: krzyszp w 20 Lipiec 2013, 04:24
Dlatego, jak rozumiem:
1. Aplikacja wykonuje boinc_resolve_filename() aby dostać ścieżkę do WU - więc nie powinieneś używać ścieżek względnych/bezwzględnych.
Rozumiem tak samo i nie używam, ba... ja używam gotowego przykładowego programu w
którym nie zmieniłem ani jednego znaku.


Cytat: krzyszp w 20 Lipiec 2013, 04:24
2. Nie powinieneś zakładać dodatkowych folderów (ale tego nie jestem już pewien).
Też nie wiem czy można. Na razie próbuję uruchomić upper-case bez żadnych
modyfikacji.


Cytat: krzyszp w 20 Lipiec 2013, 04:24
Jeżeli chcesz zobaczyć jak ma to rozwiązane radioaktywny, to ściągnij sobie źródła, najlepiej jak najwcześniejszej wersji - pierwsze były naprawdę proste.
Nie wiem czy to dobry pomysł. Program upper-case chyba jest prostszy i dostarczony jako
wzorcowy przykład.


Pozdrawiam
P.S.
Zacząłem pisać swój frame-work do obliczeń rozproszonych. Idzie mi
szybciej niż konfigurowanie BOINCa. Coś czuję że projekt perft jednak
będzie musiał stanąć na moim frame-worku. Trochę mnie to smuci, bo nie tak
miało być. Z drugiej strony, jeśli mój frame-work ułatwi komuś stawianie
jakiejś aplikacji obliczeniowej, to tylko się cieszyć.

#147
Archiwum / cd. work units
20 Lipiec 2013, 04:07
Nie mogę za nic w świecie doszukać się błędu w swoim dodawaniu work-units.
Więc myślę sobie, dodam przy pomocy API, a nie przy pomocy gotowych
narzędzi - może sposób trudniejszy okaże się łatwiejszy?

Wchodzę na stronę z przykładem:
http://boinc.berkeley.edu/trac/wiki/WorkGeneration

Przykład nie wydaje się trudny, aczkolwiek dziwne jest to, że
funkcja create_work otrzymuje na wejście dwa razy ten sam
plik: szablon wyjścia. Więc wchodzę do dokumentacji API:
http://boinc.berkeley.edu/doxygen/api/html/index.html

Przykład inkluduje plik nagłówkowy:
#include "boinc_db.h"
Rozwijam drzewko "file_list", ale pliku boinc_db nie ma. Samej
funkcji create_work też nie widzę tam.  Dlaczego?

Pozdrawiam


#148
Archiwum / serwer na windows?
20 Lipiec 2013, 02:38
Cytat: Karlik w 20 Lipiec 2013, 01:59
Pewnie są jeszcze inne powody, ale mi przychodzą takie:
1. aplikacja licząca występuje fizycznie w postaci jednej binarki i nie jest za każdym razem kopiowana do slotów
2. dane wejściowe mogą być wspólne dla wielu instancji aplikacji liczącej
3. pliki wyjściowe mogą w ten sposób być lepiej skonfigurowane - zapisywane ostatecznie w folderze projektu (i stamtąd uploadowane), w slotach są tylko tymczasowo
Przepraszam, ale w żadnym z tych punktów nie widzę związku z problemem. Dla mnie to jest
jedynie jakaś zbędna i koszmarna komplikacja. Celem jest bardzo prosta rzecz: Na serwerze
umieszczamy pliki. Pliki umieszczamy raz na starcie projektu (albo piszemy program który będzie
je generował - na jedno wychodzi). Pliki w zadaniach mogą się powtarzać, więc definiujemy zadanie
jako zestaw plików, a pliki które się powtarzają w różnych zadaniach, oznaczamy jako no_delete. Aplikacja
licząca spodziewa się że będą dostępne pliki pod określonymi nazwami. Więc w definicji zadania, obok każdej
nazwy pliku na serwerze, definiujemy jeszcze nazwę pliku pod jaką to nazwą aplikacja licząca znajdzie ten plik.
Żeby zapewnić jeszcze większą elastyczność, to aplikacja nie używa nazw bezpośrednio, ale używa funkcji API
do przetranslatowania nazw spodziewanych na ścieżki w systemie. Aplikacja wypluwa dane wyjściowe, więc w
definicji tasku powinna być jeszcze nazwa pliku wyjściowego.

Administrator/developer BOINC musi znać odpowiedzi na raptem trzy pytania:
1) Jak w tasku podać ścieżki do plików?
2) Jak ścieżki skojarzyć z nazwami po stronie klienta?
3) Jak w tasku zdefiniować ścieżkę do pliku wyjściowego?
Z taką wiedzą można postawić całkiem zaawansowaną aplikację. Pozostałe
opcje mogą służyć jedynie poprawieniu wydajności czy bezpieczeństwa.
Dlaczego nie mogę opanować tak prostej rzeczy, to nie wiem. Przecież na
co dzień robię na komputerze rzeczy 100 razy trudniejsze.


Cytat: Karlik w 20 Lipiec 2013, 01:59
To jest po prostu ostrzeżenie, żebyś nie używał bezwzględnych ani względnych ścieżek do swoich plików wejściowych/wyjściowych, bo możesz ich nie znaleźć tam gdzie zakładałeś. Po to masz te funkcje rozwiązujące nazwy.
Hmmm... czy na pewno chodzi o taki banał? Aplikacja licząca działa na innym komputerze niż
są zakładane pliki, więc na pewno nie znajdzie plików tam gdzie były zakładane.


Pozdrawiam
#149
Archiwum / serwer na windows?
20 Lipiec 2013, 01:30
Cytat: krzyszp w 20 Lipiec 2013, 01:14
Cytat: mariotti w 20 Lipiec 2013, 01:10
Czytam sobie fragment tutoriala:
Each job executes in its own slot directory (slots/0, etc.). The slot directory contains links to the job's input and output files.
Piszesz o kliencie, nie o serwerze.
Czyli nic z tego nie rozumiem. W czym to jest pomocne? Aplikacja licząca ma tylko otworzyć pliki wejściowe, a
klient ma zadbać tylko o to, aby pliki były przygotowane do otwarcia. Dlaczego mam wiedzieć coś o jakiś
slotach po stronie aplikacji klienckiej? Po stronie serwera to bym rozumiał, tam masę plików trzeba rozmieścić
optymalnie w podkatalogach.
Pozdrawiam
#150
Archiwum / serwer na windows?
20 Lipiec 2013, 01:10
Czytam sobie fragment tutoriala:

Each job executes in its own slot directory (slots/0, etc.). The slot directory contains links to the job's input and output files. The name of each link is a logical name. (These links aren't symbolic or hard links, because Windows doesn't have them; rather, they're XML files containing the path of the file in the project directory). Applications call a BOINC API function boinc_resolve_filename() to map logical names to physical names prior to opening them.

Jeśli dobrze rozumiem ten angielski tekst, to rezygnację z łączy uzasadniają tym, że Windows ich nie ma. Jestem
pewny, że w jakimś tutorialu czytałem, iż na windowsa nie ma serwera boinc. Poza tym coś mi się kojarzy, że windows
ma jakiś odpowiednik linków. Jest junction point, shortcut, polecenie mklink...

Pozdrawiam
#151
Archiwum / ile czasu?
20 Lipiec 2013, 00:52
Z czystej ciekawości chciałem zapytać, ile czasu zajęła Wam konfiguracja
własnych projektów? Nie chodzi mi o wykonanie aplikacji, gdyż to zależy
od jej skomplikowania. Pytam o czas przeznaczony na konfigurowanie i
opanowywanie tajników BOINCa.

Pozdrawiam
#152
Archiwum / Intel OpenCL
19 Lipiec 2013, 16:31
Cytat: tito w 03 Lipiec 2013, 17:07
Collatz ma aplikację solo na Intel Open CL IB. Na chwilę obecną był testowany tylko na kartach z CPU I7. Wydajność koło... nie pamiętam. Poszukajcie sobie na ich forum (jak wstanie).
Jak działa ten Collatz na BOINCu? Montecarlo, jakiś systematyczny przegląd, czy jeszcze coś innego?
Z tego co pamiętam, udowodniono dla jakiś zbiorów wejść, że cyklu nie będzie.
Pozdrawiam
#153
Archiwum / własny frame-work?
17 Lipiec 2013, 16:26
Cytat: mariotti w 17 Lipiec 2013, 13:51
Cytat: Rysiu w 17 Lipiec 2013, 13:46
Mariotti o wszystkim pisze na forum - to w sumie nawet lepiej bo pozostaje na przyszłość dla potomnych.
Ja mógłbym coś spróbować zrobić ale raczej potrzebowałbym zdalnie zalogować się na hosta z projektem i tam pogrzebać.
Na hoście nic nie ma poza BOINC, mogę dać bez problemu dane dostępowe.
Pozdrawiam
Z drugiej strony, dlaczego ktoś ma robić moją robotę za mnie. Chętnie wszystko
zrobię sam. Moim problemem jest tylko to, że nie mam dobrej, zrozumiałej i
kompletnej instrukcji. Może ktoś by napisał z jedną stronę dobrego tekstu na
temat dodawania zadań?

Mamy przykładową aplikację liczącą upper case. Napisaliśmy sobie ręcznie z
10 plików tekstowych, o nazwach in_0,in_1,...in_9. Chcemy te pliki przesłać do
aplikacji liczącej, aby ona zwróciła out_0, out_1, out_2, itd.

Aplikacja kliencka używa funkcji z API BOINC boinc_resolve_filename do
ustalenia nazw plików in i out. Co teraz trzeba zrobić, żeby:
1) pliki in umieścić na serwerze,
2) serwer je wysłał do aplikacji liczących,
3) klient odesłał je z powrotem na serwer.

Korzystałem z tego tutoriala:
http://boinc.berkeley.edu/trac/wiki/WorkGeneration
I jeszcze z jakiegoś z opisem templatów.

Niestety albo coś nie tak z tymi tutorialami, albo dla mnie są niezrozumiałe.

Pozdrawiam



#154
Archiwum / własny frame-work?
17 Lipiec 2013, 13:51
Cytat: Rysiu w 17 Lipiec 2013, 13:46
Mariotti o wszystkim pisze na forum - to w sumie nawet lepiej bo pozostaje na przyszłość dla potomnych.
Ja mógłbym coś spróbować zrobić ale raczej potrzebowałbym zdalnie zalogować się na hosta z projektem i tam pogrzebać.
Na hoście nic nie ma poza BOINC, mogę dać bez problemu dane dostępowe.
Pozdrawiam

#155
Archiwum / własny frame-work?
17 Lipiec 2013, 13:48
Cytat: krzyszp w 17 Lipiec 2013, 12:19
Mariotti - popełniasz podstawowy błąd - nie korzystasz z możliwej pomocy...
Wystarcy przed rozpoczęciem zmagań wejść na nasz kanał IRC, praktycznie stale jest tam obecny TJM i Rysiu, którzy serwer projektu mają "obstukany". Zwłaszcza TJM, adminujący dwóm serwerom BOINC i to już od długiego czasu.
Wejdź na irc i po prostu na bieżąco informuj, co idzie źle, zapewne chłopaki Ci z marszu problem rozwiążą...
Sam na wirtualce postawiłem z ich pomocą serwer w pół godziny (choć oczywiście nie dodawałem żadnych projektów, na tym etapie zwątpiłem)...
Spróbuję, ale na kilka dni muszę odstawić BOINC, bo już mam zaległości w innych
projektach. Niemniej własna platforma też mnie kusi, taka której głównym atutem
byłaby prostota administrowania i prostota pisania aplikacji liczących.

Pozdrawiam
#156
Archiwum / work units
17 Lipiec 2013, 05:41
Cytat: sesef w 17 Lipiec 2013, 02:03
Na 100% problem jest z nazwą pliku wejściowego, INPUT_FILENAME musi mieć dokładnie taką samą wartość jak wartość atrybutu <open_name> w input job template (http://boinc.berkeley.edu/trac/wiki/JobTemplates) na podstawie którego zostały stworzone zadania do policzenia.
Masakra, a ja wziąłem INPUT_FILENAME za jakąś stałą z API BOINC :/ Niemniej przez przypadek
mój plik nazywa się akurat tak samo jak INPUT_FILENAME, czyli "in". Więc przyczyna problemu
jest inna :/


Cytat: sesef w 17 Lipiec 2013, 02:03
w source boinc/sched jest kilka przykładowych apek między innymi sample work generator. Wyedytuj sobie ten plik wedle swoich potrzeb skompiluj wrzuć do nazwa_projektu/bin potem dopisz do configu do sekcji daemons (http://boinc.berkeley.edu/trac/wiki/ProjectConfigFile) odpal przez bin/start
To jest chyba najprostsza metoda bo edytując gotowe daemony ciężko coś zepsuć tutaj praktycznie jedyna ważna rzecz to dobrze ustawić input i output job template, żeby poprawnie zadania wygenerowało.
Chyba robię jeszcze prościej. Testuję na przykładowej aplikacji upper case i zupełnie nic w
niej nie zmieniałem. Po prostu chcę dodać jeden jedyny plik do work unit, żeby aplikacja kliencka otrzymała go
na wejście. Jeśli upper case zadziała to przerobię ją na dowolny inny program.

Pozdrawiam
#157
Archiwum / work units
16 Lipiec 2013, 22:21
Cytat: mariotti w 16 Lipiec 2013, 13:48
Nie mogę do serwera dodać jednego pliku tekstowego przez tydzień czasu, a to
miało uprościć obliczenia rozproszone :)
W załączniku ostatni błąd, nie mam pojęcia czym jest spowodowany.

Widać tam pomocną informację. Exit status: 255 (0xff) Unknown error number.
Przeglądam kod aplikacji liczącej i widzę:

    // open the input file (resolve logical name first)
    //
    boinc_resolve_filename(INPUT_FILENAME, input_path, sizeof(input_path));
    infile = boinc_fopen(input_path, "r");
    if (!infile) {
        fprintf(stderr,
            "%s Couldn't find input file, resolved name %s.\n",
            boinc_msg_prefix(buf, sizeof(buf)), input_path
        );
        exit(-1);
    }


i drugi fragment:

        if (boinc_time_to_checkpoint()) {
            retval = do_checkpoint(out, nchars);
            if (retval) {
                fprintf(stderr, "%s APP: upper_case checkpoint failed %d\n",
                    boinc_msg_prefix(buf, sizeof(buf)), retval
                );
                exit(retval);
            }
            boinc_checkpoint_completed();
        }


Tylko w tych dwóch miejscach jest od który może zwracać wartość minus jeden. Dla tych
którzy nie wiedzą: wartość minus jeden to czasami to samo co 255 i 0xFF. W innych
miejscach nie doszukałem się kodu który może zwracać wartość -1 (no chyba że
jest totalne UB i exit(-1) jest dziełem bliżej nie określonego przypadku - ale to chyba
możemy pominąć).

Czyli problem sprawia albo inicjacja aplikacji boinc, albo prośba o nazwę pliku (funkcja
API boinc_resolve_filename). To drugie bardziej prawdopodobne. I niby do czegoś
doszedłem, ale znowu głową walę w mur, nie wiem dlaczego przykładowa aplikacja
dostarczona wraz z platformą BOINC nie działa. Przecież z niej ludzie mają się
uczyć...

Pozdrawiam

#158
Archiwum / własny frame-work?
16 Lipiec 2013, 21:01
Cytat: Troll81 w 16 Lipiec 2013, 19:51
nie zdobył by takiej rzeszy liczydłowych. Patrz na Folding@home.
osobna platforma. Liczydłowych mniej. A cel wszak szczytny.
To nie wiem co zrobić. Coś jest nie tak. Zajęło mi trzy tygodnie czasu
uruchomienie pustej aplikacji, tydzień dodanie aplikacji liczącej, a ostatni
tydzień nie wystarczył na dodanie jednego pliku tekstowego :/

BOINC jest napisane w stylu w jakim się programowało 20lat temu - w
takim stylu można napisać bardzo dobrą aplikację, ale zarządzanie nią,
rozwijanie i ponowne używanie może być koszmarem. Ta platforma
zdecydowanie potrzebuje świeżego oddechu.

Wracając do konfiguracji serwera BOINC, czy ktoś potrafi wymienić wszystkie kroki
jakie trzeba po kolei wykonać, żeby dodać do serwera jeden (lub więcej) tasków z dwoma
plikami IO, których nazwy otrzyma aplikacja licząca po wywołaniu funkcji API
boinc_resolve_filename? Pewnie znowu coś robię źle. Sam nie odgadnę czy mam
złą dystrybucję linuxa, czy trafiłem na błąd zacommitowany w kodzie, czy może programy
narzędziowe nie działają poprawnie na VPS, czy źle zrozumiałem tekst turoriala, a
może turorial był nieaktualny, czy kropki w nazwie ścieżki są nieobsługiwane przez
program, itd.

Pozdrawiam
#159
Archiwum / własny frame-work?
16 Lipiec 2013, 18:58
Co myślicie o tym, aby napisać własny frame work do obliczeń rozproszonych?

Zadanie napisania takiego frame-worka nie jest trudne, aczkolwiek pracochłonne.
Im większa funkcjonalność, im więcej gotowców, tym większy wkład pracy. Po
tych wszystkich problemach jakie sprawiła mi platforma BOINC, taki pomysł nie
wydaje się całkowicie pozbawiony sensu. Może projekt też by zyskał rzesze
użytkowników, tak jak teraz jest w przypadku BOINC? Osobiście bym postawił na
prostotę i wygodę - może dzięki temu by powstało jeszcze więcej projektów
naukowych? Może istniejące projekty by się przeniosły na nową platformę?

Generalnie widzę to mniej/więcej tak. Język programowania: java albo C++ i
biblioteka QT. Obie "technologie" zapewniają dużą wydajność i przenośność
na różne platformy sprzętowe. Java ma taką wadę, że można ją dekompilować.
Jednak w javie łatwiej się programuje niż w C++, programiści z mniejszym
doświadczeniem mogliby tworzyć tego typu aplikacje. Zaletą C++ jest
większa wydajność kodu - co w aplikacjach liczących może być decydujące.

Cały frame-work byłby darmowy open-source na licencji LGPL. Programista całkowicie
byłby skupiony na pisaniu dwóch aplikacji:
a) aplikacji liczącej
b) aplikacji podającej zadania (server)

API frameworka byłoby bardzo nowoczesne, w postaci klas z których dziedziczą obie
aplikacje. Taki efekt można uzyskać zarówno w Javie jak i w C++. Aplikacja licząca i serwer
dostawałyby odpowiednie zdarzenia, kilka przykładowych:
1) można wznowić obliczenia,
2) użytkownik wydał polecenie zamknięcia,
3) serwer prosi o numer wersji aplikacji
4) serwer dostał wyniki obliczeń.

Wersja zero frame-worka byłaby minimalna. Obsługiwałaby tylko kilka podstawowych
zdarzeń. Praktycznie byłoby tylko wysyłanie zadań i zbieranie wyników. Jednak z
powodu prostoty dużo osób mogłoby sięgać po taką platformę.  W kolejnych wersjach
pojawiłyby się konta userów, szyfrowanie, rankingi, itd.

Pozdrawiam
#160
Archiwum / błędne linki
16 Lipiec 2013, 18:19
Cytat: Troll81 w 16 Lipiec 2013, 14:21
Ale nie należy tego ułatwiać :d
No tak. Nie chciałem dać do zrozumienia że należy, tylko ogólnie że taki problem istnieje i
nic na to nie da się poradzić. No chyba że ktoś jest ekspertem od zabezpieczeń i ma dużo
czasu na to.
Pozdrawiam