Czy są jakieś proste rozwiązania do dystrybucji pracy obliczeniowej in.NET?

Powiedzmy, że mam kilka komputerów w domu.

Powiedzmy również, że mam jakiś algorytm, który chcę uruchomić, który zazwyczaj zajmuje dużo czasu, aby rozwiązać. Można go podzielić na ile części chcę, więc mogę uruchomić część z niego w jednej maszynie, część z niego w innym, itp, a w końcu po prostu trzeba połączyć wyniki w jednym z komputerów.

Moje pytanie brzmi, czy jest jakiś łatwy i prosty sposób w. NET korzystania z kilku komputerów do tego rodzaju obliczenia. Jeśli tak, jak to się nazywa? Nie mam na myśli konieczności kodowania całego kodu IPC przez siebie, coś podobnego do zadań BCL, ale to pozwoliłoby mi wysłać "pracę" do innych komputerów, przez IP lub coś takiego.

Dzięki!

Author: devoured elysium, 2011-01-10

4 answers

W ogólnych obliczeniach rozproszonych istnieją dwa modele: przekazywanie wiadomości i pamięć Dzielona

Brzmi to tak, jakbyś był zainteresowany przekazywaniem wiadomości, ponieważ zazwyczaj dotyczy to wielu komputerów, które komunikują się przez sieć. Pamięć dzielona wykorzystuje system pamięci do komunikacji między procesami. Z mojego (ograniczonego) doświadczenia w przetwarzaniu rozproszonym prawie każdy, kto używa przekazywania wiadomości jako swojego modelu, przeniósł się do MPI. MPI jest frameworkiem, który został zaimplementowany w wiele języków. Istnieje kilka dość silnych implementacji. NET MPI.

Ten Cały post zakłada, że robisz "przetwarzanie rozproszone" w scenariuszu HPC. W takim scenariuszu będziesz miał wiele potężnych komputerów, połączonych przez sieć międzypołączeniową, w serwerowni (lub podobnej). Jeśli szukasz jakiegoś rozproszonego przetwarzania między oddzielnymi maszynami fizycznymi( np. folding@home), musisz znaleźć coś innego lub rzucić własne rozwiązanie. Dlatego, jak wspomina Leniel Macaferi w swojej odpowiedzi, musisz upewnić się, że w Twoim centrum danych działa jakaś wersja serwera Microsoft HPC. Większość klastrów HPC korzysta z Linuksa, co oczywiście uniemożliwi wdrożenie rozwiązania opartego na.Net.

 7
Author: Jared Harding,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-09 22:18:13

To idealne rozwiązanie dla Microsoft HPC Server distro, ponieważ jest dostrojone specjalnie do tego rodzaju sytuacji.

Nie wiem nic, co mogłoby to zrobić wyłącznie w oparciu o .NET. jest to oczywiście możliwe, ale wymagałoby to trochę kodowania.

Chociaż nie to, czego chcesz, polecam przeczytać o . Net Task Parallel Library , która pomaga automatycznie podzielić obciążenie na Dostępne Procesory (rdzenie) komputera szybko i bezboleśnie.

Ciekawe artykuły związane z komputerami rozproszonymi:

C# Remoting and Distributed Computing

Legion: Zbuduj swój własny wirtualny super komputer z Silverlight

Windows Communication Foundation (WCF)

 3
Author: Leniel Maccaferri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-09 22:38:56

Microsoft ma w swoich laboratoriach badawczych mapę implementacji Linq o nazwie Dryad Linq (obecnie beta jest dostępna tylko na serwerach HPC), ale wygląda to bardzo ciekawie i robi to, czego szukasz.

 1
Author: Tim Jarvis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-09 22:39:10

Microsoft HPC Server wymaga systemu operacyjnego serwera. Z jego dźwięków wynika, że nie używasz systemu operacyjnego serwera. Zakładając, że używasz desktopowej wersji systemu Windows z zainstalowanym. NET 4.0, możesz wypróbować jedną z następujących opcji:

  1. Można ręcznie podzielić pracę i wykonać kawałki ręcznie.

  2. Możesz użyć czegoś MPAPI {[10] } i zakodować własne węzły i pracowników.

  3. Można napisać aplikację konsolową i użyć DuoVia.MpiVisor do dystrybucji i uruchamiania na Twoich stacjach roboczych. (Pełne ujawnienie: jestem autorem MpiVisor)

Robienie rozproszonych obliczeń w przypadkowy sposób bez większego zamieszania nie jest tak proste, jak mogłoby się wydawać, ale każda z tych dwóch opcji powinna cię tam znaleźć.

 0
Author: Tyler Jensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-24 15:02:17