własny frame-work?

Zaczęty przez mariotti, 16 Lipiec 2013, 18:58

mariotti

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

Troll81

nie zdobył by takiej rzeszy liczydłowych. Patrz na Folding@home.

osobna platforma. Liczydłowych mniej. A cel wszak szczytny.

mariotti

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

Rysiu

Sam też kiedyś o napisaniu jakiegoś tego typu systemu myślałem ale odpuściłem sobie.

Oprócz BOINC istnieje wiele innych platform do obliczeń rozproszonych. Nie wiem czy są darmowe ale są.

Pierwszy przykład to Globus:

CytatThe Globus® Toolkit is an open source software toolkit used for building grids.

http://www.globus.org/toolkit/

krzyszp

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)...

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

Rysiu

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ć.

mariotti

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

mariotti

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


mariotti

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