Jacek K.

Jacek K. Software Developer,
Telecetera Ltd.

Temat: programowanie rozproszone?

W mojej aplikacji potrzebuje wykonywac bardzo zmudne obliczenia (rozwiazywani
b duzych macierzy, algorytmy genetyczne, etc.)
Chcialbym wykorzystac wiecej komputerow, zarowne te pracujace w mojej lokalnej
sieci jaki i komputery z zewnatrz. Nigdy nie rozwiazywalem tego typu problemow
wiec prosze o jakies wskazowki.
Bylbym wdzieczny za linki, pozycje papierowe oraz rady ogolne gdzie zaczac.

Temat: programowanie rozproszone?

a dlaczego delphi?
pod delphi nie pisalem takich rzeczy tylko w C/C++, możesz poszukać o wątkach postix, bibliotek MPI, RPC.
MPI jest dość proste w obsłudze i nie trudne w implementacji.

Jakie Ty musisz wykonać obliczenia że potrzebujesz wielu komputerów.

Ostatnio napisałem w delphi kolorowanie grafów w oparciu o algorytm genetyczny i graf o 450 wierzchołkach i prawie 20 tys krawędzi pokolorował w 49h, komputer z Core 2 duo.

Algorymt genetyczny będzie ciężko Ci chyba rozbić na N wątków, szczególnie że poszczególne dane zależą w dużym stopniu od poprzedniej epoki, no oczywiście zależy od konkretnych elementów algorytmu genetycznego.
Jakoś cięzko to widzę, ale da się daną epokę rozbić na kilka wątków ale wąskie gardło i tak będzie w odbiorze danych i ponownym ich rozprzestrzeniu.

Wedlug mnie przy genetycznym to wystarczyłyby aplikacje kliencie na kompach i wykorzystanie protokołu TCP/IP. Wysylasz paczkę tam się liczy jak się skończy to odsyłasz, a w aplikacji typu "serwer" na paru wątkach nasłuchujesz i rozdajesz karty.
Jacek K.

Jacek K. Software Developer,
Telecetera Ltd.

Temat: programowanie rozproszone?

co do genetycznych, to czytalem o czyms takim: serwer losuje 5 zestawow poczatkowych populacji, rozsyla je do 5 klientow, co jakis czas, najlepsze osobniki migruja pomiedzy klientami po przez serwer - symulacja naturalnej migracji w przyrodzie

konto usunięte

Temat: programowanie rozproszone?

Na podstawie moich baaardzo skromnych doświadczeń z algorytmami przetwarzającymi duże ilości danych mogę sugerować, aby włożyć raczej wysiłek w udoskonalenie algorytmu niż w moc obliczeniową sprzętu. Może warto przeszukać literaturę obcojęzyczną.
Wykorzystywałem kiedyś algorytm, który miał coś policzyć w kilkadziesiąt godzin, po 5 godzinach słuchania intensywnego szumu wentylatora na procesorze zrozumiałem, że trzeba inaczej. Kilkunasta wersja algorytmu zrobiła to samo w 40 sekund.
Jacek K.

Jacek K. Software Developer,
Telecetera Ltd.

Temat: programowanie rozproszone?

no prawda jest taka, ze najpierw pisze sie program ktory dziala a pozniej sie go optymalizuje, ale optymalizacje zawsze maja swoje granice, fizyczne jak i czasowe - w sensie ze czasami nie oplaca sie meczyc przez miesiac zeby zoptymalizowac cos o np. 5% i zamieszac sobie w kodzie.

powoli dochodze do takiego etapu a danych do przetworzenia mam coraz wiecej, wiec szukam innych rozwiazan

Temat: programowanie rozproszone?

Takie rozwiązanie o którym mówisz, że osobnicy najlepsi wędrują może się sprawdzić.
Pisałem coś takiego, że była sobie populacja i N wysp, gdzie wyspa to był oddzielny wątek.
To było przykładowe zadanie i miało na celu nauczyć tylko działania na wątkach, ale wlasnie o to chodziło.
U Ciebie w sumie to samo tylko że nie wątki a maszyny, i nie zwykle życie tylko realny problem.

Jak będziesz chciał to podaj maila to Ci podeśle swoje programy, bo były różne rodzaje wpółdzielenia i różne wątki.

Wątki MPI chyba można postawić na windowsie i każdy wątek to odzielna maszyna, więc może warto o tym poczytać.
a jak sie dobrze zaprojektuje to łatwo cokolwiek przepisać na MPI.

Temat: programowanie rozproszone?

Co do optymalizacji to zawsze trzeba chwilę powalczyć, albo dłuższa chwilę, zazwyczaj przy dużych obliczeniach się sprawdza optymalizowanie.

Nawet jak będziesz miał 1 milion maszyn które będą liczyły to musi być komp który zbierze milion rozwiązań i przetworzy.

a może się okazać że jak spędzisz tydzień na optymalizacji to zamiast miliona maszyn będziesz potrzebował 100 tys albo 10 tys.
a przy okazji można się wiele nauczyć jak pisać kod aby był od razu bardziej optymalny. Takie rzeczy wchodzą same w krew :).
Jacek K.

Jacek K. Software Developer,
Telecetera Ltd.

Temat: programowanie rozproszone?

wchodza w krew, wchodza
pozniej nawet sniadanie sie optymalizuje :D

Następna dyskusja:

programowanie rozproszone?




Wyślij zaproszenie do