Aktualności:

Nasza strona na Facebooku - poleć znajomym.

Menu główne

Natywny klient BOINC na Androidzie

Zaczęty przez matszpk, 01 Lipiec 2011, 19:17

matszpk

Jestem nowy na tym formu, jednak liczyłem i liczę od jakiegoś czasu dla projektów BOINC. Chciałbym pokazać moje nowe osiągnięcie, nad którym pracowałem przez ponad miesiąc czasu.
Otóż dzięki uporowi, pasji i moim skromnym umiejętnościom udało mi się uruchomić natywnego klienta BOINC (boinc_client) oraz aplikację BOINC projektu Primegrid. Tą aplikacją jest gcwsieve, którą specjalnie zoptymalizowałem pod architekturę ARMv6 i dla Androida.
BOINC'a uruchomiłem na swoim HTC Wildfire (cpu: MSM7225, 528 Mhz). Obecnie mój telefon liczy już jedną WU.
Wysyłam pod adres hosta: http://www.primegrid.com/show_host_detail.php?hostid=204187 i adres zadania WU: http://www.primegrid.com/result.php?resultid=277283381.

Dodatkowo żeby być wiarygodnym umieszczam zdjęcia mojego telefonu z uruchomionym klientem (z poziomu AndroBOINC'a).

Aktualizacja:
Już wyniki zostały wysłane do serwera i mój telefon dostał pierwsze punkty. Score: 364, RAC: 8 .
Udostępniłem programy i kod źródłowy na https://github.com/matszpk/native-boinc-for-android.

Edycja konta klienta BOINC:


Lista projektów:


Aktualnie liczona WU:


Informacje o WU:


Logi klienta BOINC:


Ciekam niecierpliwie na opinie, uwagi i pytania.

Troll81

Mocne wejście. jesteś wielki skoro potrafisz i chce ci się robić takie cudeńka. Witam cie z otwartymi ramionami bo zapaleńcy zawsze są mile widziani.

Szopler

Witamy!
Może kolega napisać instrukcję skąd ściągnąć klienta na androida i jak go odpalić?
Chętnie potestuję...

AiDec




Bo jest paru kumpli :),
Bo jest parę w życiu dobrych chwil...


Moja wizytowka i sygnaturka

matszpk

Planuję udostępnić mojego klienta na mojej stronie.
Mogę jednak zdradzić, że jeśli chodzi samego klienta, to nie było potrzebnych wielu modyfikacji. Najwięcej czasu poświęciłem aplikacji gcwsieve. Wiadomo, że taki procek w HTC Wildfire nie należy do najszybszych i była potrzebna optymalizacja, żeby w ogóle było możliwe wysłanie wyników na czas do serwera.
Moja wersja gcwsieve będzie liczyć jedną WU przez prawie 7 dni (akurat czas do wysłania to właśnie 7 dni).

Troll81

do google apps ją wrzuć :D dla dobra całej ludzkości. Jesli mozesz to podaj jak się liczy taka próbka na telefonie. ile czasu i ile punktów otrzymałeś. Jak długo żyje bateria podczas liczenia takiej próbki primegrid?

matszpk

Mój klient BOINC jest uruchomiony w tle i to jako natywna aplikacja. Nie jest ona widoczna z poziomu UI Androida. Jeśli chodzi pobór prądu to telefon może działać na baterii kilka godzin.

matszpk

Ok. zdradzę kilka szczegółów.
Opracowany przeze mnie klient nie wymaga żadnego root'a  :).
Moja wersja klienta, jest oparta na oryginalnym kliencie BOINC pobieranym ze strony głównej strony BOINC'a w wersji 6.10.58. Opracowanego klienta skompilowałem za pomocą android-sdk i android-ndk-r5b i został skompilowany dla Androida 2.2. Dodatkowo skompilowałem niezbędne biblioteki, czyli openssl i curl. Wszystko umieściłem w /data/local/tmp i uruchomiłem z poziomu shella androida.
Ze względu na zachowanie androida, stosuje WakeTimer'a, który blokuje wygaszanie ekranu (przy wygaszonym ekranie procesor nie działa na pełnych obrotach).
Projekt Primegrid, jako nieliczny udostępnia źródła wykorzystywanych aplikacji, więc aplikację gcwsieve w wziąłem z http://sites.google.com/site/geoffreywalterreynolds/programs. Ponieważ procesor mojego Wildfire'a nie ma FPU, to oryginalna wersja programu liczyła wyjątkowo powoli. Jedna WU zajęłaby oryginalnej wersji 47-49 dni  :(. Dlatego była konieczna optymalizacja pod CPU w assemblerze. Poświęciłem temu zadaniu ponad miesiąc. Moja wersja liczy już w czasie krótszym niż 7 dni na moim telefonie.

Troll81

Myślę że możesz się zabrać za kody wielu projektów :D np Enigma ma chyba otwarty, Einstein chyba też, Na pewno SETI, Mersenne? Goldbach?

TP

Cytat: matszpk w 01 Lipiec 2011, 20:53
Jedna WU zajęłaby oryginalnej wersji 47-49 dni  :(. Dlatego była konieczna optymalizacja pod CPU w assemblerze. Poświęciłem temu zadaniu ponad miesiąc. Moja wersja liczy już w czasie krótszym niż 7 dni na moim telefonie.
No pełen szacunek!

Przymierzam się powoli do Samsunga Galaxy S II i takie wieści niezmiernie mnie cieszą!

:p_arr:

EDYTA - a na w/w telefonie da radę odpalić czy musiałbyś specjalnie kompilować dla tego CPU?

Hani



simonic

To oże mnie przekonać do zakupu smartphona :)


matszpk

Obecna wersja aplikacji gcwsieve, którą opracowałem jest dla ARMv6 (bez FPU). Jeśli będzie taka możliwość to opracuję także specjalną wersję dla ARMv7 (wykorzystanie rozszerzeń VFP i NEON). Będzie ona przeznaczona dla lepszych komórek (np.: HTC Desire, Samsung Galaxy).
Planuję za kilka dni wszystko (obecna wersja boinc_client i gcwsieve) udostępnić pierwszą wersję na mojej stronie.
Proszę trochę poczekać.
Ps. wersja dla ARMv6 może bez problemów działać na lepszym sprzęcie (ARMv7).

matszpk

cześć! już jestem.
Na razie będę jeszcze testował mojego boinc'a i aplikację w celu upewnienia się czy wszystko jest ok.
Muszę sprawdzić przede wszystkim jej wyniki. Dlatego też wynik WU, którą liczę, przed wysłaniem do serwera porównam z tym przeliczonym na moim komputerze za pomocą oryginalnej aplikacji dostępnej z BOINC'a.
I jeszcze wykonam kilka testów.
Także proszę trochę poczekać.

Grzes

Tylko pogratulować  :parrrty:

Jeszcze niedawno śmialiśmy się, że zaraz ktoś odpali boinca w lodówce  %) Sam jestem ciekawe jak to zapunktuje po takim czasie liczenia.

matszpk

Właśnie wykonałem mały 'benchmark' mojej wersji aplikacji gcwsieve na HTC Desire S (cpu: 1000MHz, ARMv7, VFP).
Mój Wildfire osiągał około 207 p/sec, natomiast HTC Desire S aż 935 p/sec  ;D.
Obecnie będę sprawdzał wyniki przejściowe  mojej wersji z wersją ze źródeł.


Tomasz R. Gwiazda

genialnie :)

Ja proponuje zrobic jakas dokumentacje tego + screeny i opublikowac arta na ten temat.
Swiatek Boinc lubi takie newsy :)

aborek

No szacun wielki...  :respect: :respect: :respect:

Troll81

MOze na BOINCStats to puścić ??

matszpk

cześć. jestem już. zastanawiałem się co z tym dalej zrobić. jeszcze nie podjąłem decyzji  :-\.
na razie już myślę nad portem innej aplikacji PrimeGrid, czyli LLR (właśnie do sprawdzania liczb pierwszych).
Muszę się przyznać. Pierwszy raz coś takiego robię...
Kiedyś pisałem swoje własne programy na swój użytek.
Jutro jeszcze raz wszystko sprawdzę i podejmę decyzję.

krzyszp

 :respect: :respect: :respect:
Jak chcesz, podeślę Ci źródła aplikacji dla Radioactive@Home - to na tyle prosty kod, że nie powinien sprawiać problemów pod androidem...

Jeszcze raz  :respect:

Jeśli masz jakieś pojęcie, jak oprogramować GPS (zdobyć lokalizację) z urządzeń opartych na Androidzie, daj znać - może dodamy to do aplikacji liczącej?

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

Troll81

A po co RAD@home w androidizie? podepniesz pod smartphone licznik?

goofyx

Cytat: Troll81 w 04 Lipiec 2011, 00:27
A po co RAD@home w androidizie? podepniesz pod smartphone licznik?
bardziej chodziło o tablety z AndroIdem

krzyszp

Cytat: Troll81 w 04 Lipiec 2011, 00:27
A po co RAD@home w androidizie? podepniesz pod smartphone licznik?
Przecież czujnik jest na USB...

Fajne zegarki :)
Należę do drużyny BOINC@Poland
 Moja wizytówka

goofyx

Cytat: krzyszp w 04 Lipiec 2011, 00:45
Cytat: Troll81 w 04 Lipiec 2011, 00:27
A po co RAD@home w androidizie? podepniesz pod smartphone licznik?
Przecież czujnik jest na USB...
Ale niestety nie wszędzie go zabierzesz :(

matszpk

Jeśli chodzi przeportowanie na Androida aplikacji waszego projektu Rad@Home uważam, że jest to ciekawa propozycja. Zastanowię się nad tym.

matszpk

cześć to znowu ja. opracowałem specjalną wersję AndroBOINC'a, która obsługuje localhost mode.
Poza tym zaczynam portować milkyway@home.
Jednostka WU już się kończy obliczać i w czwartek będą wyniki.
Także w czwartek planuję już udostępnić klienta i aplikację.

goofyx

Czekam z niecierpliwością :)

Troll81


matszpk

Wyniki już zostały wysłane.
Niestety w mojej wersji klienta znalazłem błąd. Dotyczy on komunikacji z aplikacją. Chodzi głównie o nieszczęsną pamięć współdzieloną (shmem). Zauważyłem to gdy został wykonany benchmark. Aplikacja po jego wykonaniu już nie robiła.
Trzeba było ręcznie wstrzymać i ponowić zadanie.
Dzisiaj spróbuję rozwiązać problem.

Tomasz R. Gwiazda

zapodaj jak mozesz jakiegos screena :)

Troll81


aborek

Jeszcze raz szacun.
A gdyby tak jakąś aplikację do QNC, wykorzystującą akcelerometry wbudowane w telefony, wyczarować, to byśmy mistrzami świata w tym projekcie zostali  ;D

Szopler


Troll81

pod warunkiem że telefon by leżał płasko na ziemi. Bo jakbym go przewiózł autem po wrocku to od razu by zaalarmowano sztab kryzysowy ze we wrocku jest trzęsienie 12 w skali Richtera :D

aborek

Cytat: Troll81 w 07 Lipiec 2011, 18:48
pod warunkiem że telefon by leżał płasko na ziemi. Bo jakbym go przewiózł autem po wrocku to od razu by zaalarmowano sztab kryzysowy ze we wrocku jest trzęsienie 12 w skali Richtera :D
No wiadomo, że nie podczas normalnego używania, ale przez noc, czemu nie.

matszpk

Ok. problemu nie rozwiązałem, ale go ominąłem. Po prostu nie będzie uruchamiany benchmark.
No to prawie wszystko gotowe.

matszpk

Ok. już udostępniłem kody źródłowe i binarki na https://github.com/matszpk/native-boinc-for-android.

Miłego liczenia!!!  :parrrty:

Troll81

podstawą punktacji jest benchmark :(