Aktualności:

Nowy polski projekt BOINC - Universe@Home

Menu główne

Aplikacja Enigma@Home (Android)

Zaczęty przez matszpk, 18 Lipiec 2011, 21:08

matszpk

Tutaj można podawać uwagi aplikacji dla projektu Enigma@Home (wszystko co związane z nią i itd). Obecnie już jest nowa wersja (0.2), która jest o 44% szybsza od poprzedniej.

Tomasz R. Gwiazda

bezposredni link do sciagniecia?

matszpk

Aplikację mozna ściągnąć z repozytorium (katalogi bins i src), gdzie jest umieszczony projekt: https://github.com/matszpk/native-boinc-for-android. Tam są wszystkie projekty, biblioteki i klient. Link: https://github.com/matszpk/native-boinc-for-android/blob/master/bins/enigma-distrip-LATEST.zip?raw=true.

goofyx


matszpk

#4
Aplikacje BOINC'a planuje umieszczać w formie ZIP. Instalacja będzie z poziomu klienta.

PS.: zdecydowałem, że podrzucę TJM aplikację Enigmy na Androida (jeśli się zgodzi).

TJM

Kombinuję nad dodaniem obsługi androida do serwera BOINC, żeby działało bez kombinowania z app_info.
Jakiego ciągu identyfikacyjnego używa klient na Androidzie ? Serwer zwraca jakieś dziwne info (ciąg pustych znaków). Nie wiem czy to nie jest wina wieku niektórych plików konfiguracyjnych więc planuję upgrade.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

matszpk

#6
czesc. na razie optymalizuje aplikację (tak żeby była najszybsza). a co to za dokładnie identyfikacyjny? W cpu boinc podaje typ procesora (ale vendor jest pusty), nazwa OS to Android wersja_jądra. platforma to oczywiście anonymous.

TJM

#7
Ciąg identyfikacyjny zaszyty jest w kliencie (nie wiem skąd to się bierze - chyba czytany jest z systemu, aczkolwiek np. w klientach FreeBSD jest wklepany ręcznie) i musi być stały dla danej platformy.
Tutaj trochę przykładów (jest to ciąg w znacznikach <name>):


   <platform>
       <name>windows_intelx86</name>
       <user_friendly_name>Microsoft Windows (98 or later) running on an Intel x86-compatible CPU</user_friendly_name>
   </platform>
   <platform>
       <name>windows_x86_64</name>
       <user_friendly_name>Microsoft Windows running on an AMD x86_64 or Intel EM64T CPU</user_friendly_name>
   </platform>
   <platform>
       <name>i686-pc-linux-gnu</name>
       <user_friendly_name>Linux running on an Intel x86-compatible CPU</user_friendly_name>
   </platform>
   <platform>
       <name>x86_64-pc-linux-gnu</name>
       <user_friendly_name>Linux running on an AMD x86_64 or Intel EM64T CPU</user_friendly_name>
   </platform>
   <platform>
       <name>powerpc-apple-darwin</name>
       <user_friendly_name>Mac OS X 10.3 or later running on Motorola PowerPC</user_friendly_name>
   </platform>
   <platform>
       <name>i686-apple-darwin</name>
       <user_friendly_name>Mac OS 10.4 or later running on Intel</user_friendly_name>
   </platform>
   <platform>
       <name>sparc-sun-solaris2.7</name>
       <user_friendly_name>Solaris 2.7 running on a SPARC-compatible CPU</user_friendly_name>
   </platform>
   <platform>
       <name>sparc-sun-solaris</name>
       <user_friendly_name>Solaris 2.8 or later running on a SPARC-compatible CPU</user_friendly_name>
   </platform>
   <platform>
       <name>sparc64-sun-solaris</name>
       <user_friendly_name>Solaris 2.8 or later running on a SPARC 64-bit CPU</user_friendly_name>
   </platform>
   <platform>
       <name>powerpc64-ps3-linux-gnu</name>
       <user_friendly_name>Sony Playstation 3 running Linux</user_friendly_name>
   </platform>
   <platform>
       <name>anonymous</name>
       <user_friendly_name>anonymous</user_friendly_name>
   </platform>


Te dane muszą się zgadzać po stronie klienta i serwera, żeby w ogóle klient był skłonny coś wysłać.
Aczkolwiek widzę tu pewną komplikację - chyba są różne procesory ? W takim wypadku każdy procesor musiałby mieć swoją platformę.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

matszpk

ja zrobiłem takie app_info.xml.
<app_info>
<app>
   <name>enigma_m4_2</name>
   <user_friendly_name>Enigma 0.76b</user_friendly_name>
</app>
<file_info>
   <name>wrapper_5.22_arm-unknown-linux-gnu</name>
   <executable/>
</file_info>
<file_info>
   <name>enigma2_0.76_arm-unknown-linux-gnu</name>
   <executable/>
</file_info>
<file_info>
   <name>job_1.27.xml</name>
</file_info>
<app_version>
   <app_name>enigma_m4_2</app_name>
   <version_num>522</version_num>
   <api_version>6.3.9</api_version>
   <file_ref>
      <file_name>wrapper_5.22_arm-unknown-linux-gnu</file_name>
      <main_program/>
   </file_ref>
   <file_ref>
      <file_name>enigma2_0.76_arm-unknown-linux-gnu</file_name>
      <open_name>enigma2_0.76_arm-unknown-linux-gnu</open_name>
   </file_ref>
   <file_ref>
     <file_name>job_1.27.xml</file_name>
     <open_name>job.xml</open_name>
   </file_ref>
   <platform>arm-unknown-linux-gnu</platform>
   <avg_ncpus>1.000000</avg_ncpus>
   <max_ncpus>1.000000</max_ncpus>
</app_version>
</app_info>


name to:Enigma 0.76b, a platform:arm-unknown-linux-gnu.
na razie jeszcze nie instaluj nowej aplikacji na serwerze. na razie optymalizuję aplikację. poza tym ta platforma nie jest wspierana oficjalnie przez projekt boinc.

TJM

App info nie ma tu nic do rzeczy, identyfikować musi się sam klient.
Identyfikacja musi jednoznacznie określać platformę (grupę urządzeń+systemów) na których uruchomi się przypisana do niej aplikacja.
Wtedy wysyłanie aplikacji odbywa się automatycznie, z pominięciem kombinowania z app info.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

matszpk

cześć. juz zoptymalizowałem aplikację. co ciekawe wersja z flagą SIMPLESCORE (tą prostszą wersją score.c) jest znacznie szybsza na ARM'ach (!!!). Nowsza wersja powinna być szybsza ponad 2 razy od poprzedniej  :). jutro ją opublikuję.

Troll81


TJM

Nie wziąłeś tylko jednego pod uwagę - funkcja ta wpływa na ostateczny wynik, więc niektóre WU (lub nawet wszystkie) mogą zostać skreślone przez validator.
Ponadto aplikacja z włączonym simplescore nie jest w ogóle kompatybilna z niektórymi workunitami (opartymi o IC, wszystkie WU zwrócą błąd).

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

matszpk

#13
podczas optymalizacji sprawdzałem wyniki zwracane przez funkcje. wszystkie są identyczne z poprzednią wersją i oryginalną. jutro sprawdzę jeszcze raz. wyniki były identyczne z wersją oryginalną (punktowanie). przyt testowaniu ustawiłem statyczny seed dla randoma w hillclimb. w funkcji icscore dawno już podmieniłem float na integer (ze względu szybkość), także przy tej zmianie wyniki były identyczne. zajrzyj do kodów na github: https://github.com/matszpk/native-boinc-for-android. icscore w wersji SIMPLESCORE sumuje punkty na float, pewnie o to chodzi....

PS. zrobiłem porównanie icscore z int i icscore z double (wynik po wyniku dla każdego wywołania). przeliczyłem tak 4 WU i nie było żadnego wyjątku! w programie dodałem sprawdzanie wyniku dla każdego wywołania icscore i warunku DBL_EPSILON. nie było ŻADNEGO odstępstwa. kody zaraz udostępnię....
wyniki dla z optymalizowanej wersji też są identyczne.

PS: już jest nowa wersja aplikacji 0.5.2. jesli chciecie ją zainstalowac proszę skorzystac z opcji "manage client"->"update binaries". milego liczenia  :)