W ostatniej wersji C# pojawiła się możliwość zrównoleglenia obliczeń w bardzo prosty sposób. Pętlę:for(int n =0; n <8; n++){ Console.WriteLine("Normal - iteracja {0} wątek {1}", n, Thread.CurrentThread.ManagedThreadId);} można zastąpić następującą konstrukcją:Parallel.For(0, 8, i =>{ Console.WriteLine("Parallel - iteracja {0} wątek {1}", i, Thread.CurrentThread.ManagedThreadId);}); Zapis ten powinien spowodować, że obl...
Programowanie rozproszone 3828 dni, 14 godzin, 54 minuty temu 171 źrodło rozwiń
Autor: Witam po długiej przerwie wszystkich stęsknionych wpisów odnośnie TPLa. Pamiętam moje przyrzeczenie odnośnie pisania przynajmniej 1 wpisu na tydzień z tego tematu, ale niestety inne rzeczy nie pozwalają poświęcić się temu tematowi w takim stopniu jakbym sobie tego życzył. No, ale nie tracąc czasu na smętne wstępy przejdźmy do treści…dziś krótko acz przydatnie. Dziś chciałbym powiedzieć o dość ciekawej funkcjonalności a mianowicie kontynuacjach. Dzięki nim możemy napisać następujący fragment k...
Programowanie rozproszone 3832 dni, 18 godzin, 52 minuty temu 55 źrodło rozwiń
Twórcy Google jako pierwszych serwerów użyli ręcznie składanych PC połączonych w jedną sieć. Zdecydowali się na takie rozwiązanie, ponieważ koszty zakupów komercyjnych maszyn znacznie przekraczały założony budżet. To posunięcie było strzałem w 10! Magia jednak tkwiła nie tyle w komputerach, co w specjalnie napisanym oprogramowaniu - i tu przechodzimy do kwestii programowania równoległego.
Programowanie rozproszone 3836 dni, 17 godzin, 8 minut temu 61 źrodło rozwiń
Może zdarzyć się tak, że jedno żądanie zostanie wysłane do usługi kilka razy. Fajnie więc by było zabezpieczyć system przed taką ewentualnością. W nagłówku każdego żądania przekazywany jest unikalny identyfikator żądania. W momencie walidacji nagłówka system sprawdza identyfikator z pomocą jedno-instancjowego obiektu SafeContainer. Każdy identyfikator przechowywany jest w kontenerze prze n-minut. Po upływie tego czasu usuwane są "stare" identyfikatory. Jak na razie nie znalazłem sensowniejszego rozwiązan...
Programowanie rozproszone 3838 dni, 7 godzin, 13 minut temu 58 źrodło rozwiń
Dziś chciałbym zaprezentować zastosowanie sieci Hopfielda do rozpoznawania polskich banknotów. Można zastosować takie rozwiązanie w automacie przyjmującym banknoty w celu odgadnięcia właściwego nominału banknotu. Oczywiście zapamiętanie obrazka całego banknotu nie jest dobrym pomysłem gdyż w przyzwoitej rozdzielczości obraz będzie zbyt duży do zapamiętania, poza tym, banknoty mają różną wielkość, postanowiłem pokazać przykład z zapamiętaniem prawego górnego rogu i rozpoznawaniem ...
Programowanie rozproszone 3845 dni, 16 godzin, 8 minut temu 165 źrodło rozwiń
OpenMP - źródło, które zainspirowało mnie do zmian w HopfieldSymulatorze znajduje się tudaj. Dzisiaj napiszę o C++ w wykorzystanym projekcie. Cała warstwa obliczeniowa jest napisana w tym języku. Oczywiście po napisaniu dobrze jest program zoptymalizować, można jeśli używamy C# i kodu zarządzalnego użyć Parallel.For(...), no ale w czystym natywnym C++ nie ma takij możliwości, pozostaje użycie OpenMP lub wzorców wielowątkowości, które są dostępne w Visual C++ 2010. Niestety nie mam ...
Programowanie rozproszone 3847 dni, 23 godziny, 45 minut temu 49 źrodło rozwiń
August 07Daj się poznać #3 Dzisiaj postanowiłem usprawnić symulator sieci Hopfielda o zapamiętywanie kolorów. Jak pewnie wiecie z poprzednich wpisów na wyjściu sieci Hopfielda są wartości od -1 do +1 aby zapisać obraz kolorowy można – taki był mój pierwszy zamysł – podzielić ten przedział na wszystkie dostępne kolory RGB bez przezroczystości Alpha wychodzi 256x256x256 przedziałów, trochę dużo. Eksperymenty pokazały, że jest z tym kłopot obrazy co prawda zapamiętywały się ale pokazywały się przekłamania…
Programowanie rozproszone 3848 dni, 1 godzinę, 26 minut temu 72 źrodło rozwiń
Autor: Chciałbym napisać dziś słów kilka o WCF RIA Services. Dokładnego przeglądu standardowych scenariuszy wersji pierwszej finalnej dokonałem niejako publikując zaktualizowane przykłady w dwóch częściach (patrz cz.I i cz.II). I chociaż jest tam wiele fajnych funkcjonalności, to dziś napiszę o trochę mniej standardowych, rzadziej spotykanych rzeczach. Mam tu na myśli takie zagadnienia jak korzystanie z NHibernate, MVVM (jest to typowe podejście dla Silverlight, ale nie zawsze przykłady czy prezentacje...
Programowanie rozproszone 3852 dni, 20 godzin, 23 minuty temu 214 źrodło rozwiń
Dziś przedstawiam nowe GUI do Hopfield Symulatora 0.2.1. Źródła projektu można pobrać tutaj: http://hopfieldsimulator.codeplex.com/SourceControl/list/changesets Instalator w wersji 0.2.1 x86 tutaj: http://hopfieldsimulator.codeplex.com/releases/view/49956
Programowanie rozproszone 3852 dni, 20 godzin, 23 minuty temu 74 źrodło rozwiń
STM (z ang. Software Transactional Memory) to podejście zaczerpnięte od kolegów z baz danych. Idea jest bardzo prosta: albo wszystkie instrukcje w danej transakcji wykonają się poprawnie, albo żadna z nich nie powinna się wykonać. Cecha ta określana jest jako niepodzielność. Głównych cech jest w sumie 4...
Programowanie rozproszone 3852 dni, 20 godzin, 23 minuty temu 44 źrodło rozwiń
Dziś zgodnie z obietnicą na dziś rozpracowałem kontrolkę MsChart. Dodam, że na CodePlex dodałem nową wersję symulatora z formatką wykresów. Źródła: http://hopfieldsimulator.codeplex.com/SourceControl/list/changeses Instalator: http://hopfieldsimulator.codeplex.com/releases/view/50075
Programowanie rozproszone 3853 dni, 15 godzin, 48 minut temu 29 źrodło rozwiń
Z implementacją równoległych zadań można sobie poradzić na wiele różnych sposobów. Zazwyczaj jednak instalujemy blokady, monitory, tworzymy transakcje, oplatamy synchroniczny kod. Co by się jednak stało, gdyby całe takie podejście odwrócić do góry nogami? Takich przełomowych projektów było wiele, oferowały nowy model pisania równoległych aplikacji, bez pamięci wspólnej i z wymianą komunikatów. W dzisiejszym wpisie chciałbym przedstawić Wam Model Agenta.
Programowanie rozproszone 3863 dni, 3 godziny, 46 minut temu 67 źrodło rozwiń
W poprzednim poście przedstawiłem Wam kilka istniejących implementacji STM, teraz, chciałbym dopełnić tą listę o kilka, równie ważnych, rozwiązań.
Programowanie rozproszone 3865 dni, 21 godzin, 16 minut temu 44 źrodło rozwiń
Na rynku istnieje wiele rozwiązań implementująych STM - zdziwilibyście się, jak wiele. Są to rozszerzenia dla więkoszści języków: zaczynając od C, przez C++, C#, Java, Haskell, Perl. W tym poście chciałbym omówić jedynie kilka z nich.
Programowanie rozproszone 3867 dni, 3 godziny, 18 minut temu 48 źrodło rozwiń
Jakiś czas temu (kilka miesięcy;)) obiecywałem, ze napiszę artykuł o WCF Data Service. Zainteresowanych odsyłam tutaj.
Programowanie rozproszone 3870 dni, 4 godziny, 22 minuty temu 110 źrodło rozwiń
W poprzednich wpisach przedstawiłem Wam mechanizm Pamięci Transakcyjnej, a teraz chciałbym skupić się na jego wydajności względem zwykłych metod synchronizacji. Testy zostały przeprowadzone na maszynie z ponad 100 procesorów.
Programowanie rozproszone 3872 dni, 20 godzin, 20 minut temu 43 źrodło rozwiń
Pamięć Transakcyjna, to eksperymentalna metoda synchronizacji w programach współbieżnych, stanowiąca alternatywę dla znanych blokad, mutexów i monitorów. W poprzednim wpisie przedstawiłem ideę takiego podejścia, w tym opisują ten mechanizm od podszewki.
Programowanie rozproszone 3872 dni, 20 godzin, 20 minut temu 45 źrodło rozwiń
Tworząc systemy współbieżne, należy dobrze przemyśleć kwestię synchronizacji. W jaki sposób udostępniać wspólną pamięć, jak chronić do niej dostęp. W większości przypadków należy skorzystać z szeroko dostępnych i udokumentowanych blokad, monitorów itp. Co jeśli potrzeba nam bardziej zaawansowanych narzędzi? W tym artykule opisuję Pamięć Transakcyjną, podejście znane dotychczas jedynie w bazach danych.
Programowanie rozproszone 3874 dni, 7 godzin, 14 minut temu 106 źrodło rozwiń
Microsoft Research opublikował pierwszą wersję Biology Foundation - zestawu narzędzi kierowanych do specjalistów od bioinformatyki, które stanowi rozszerzenie dla platformy .NET.
Programowanie rozproszone 3874 dni, 7 godzin, 14 minut temu 75 źrodło rozwiń
Programowanie równoległe, wielowątkowe czy wieloprocesorowe, znane jest nie od dziś, ale to właśnie teraz, będzie najbardziej wykorzystywane. Dzisiejsze komputery nie mają już jednego rdzenia, serwery mają ich kilkanaście, a domowe pcety przynajmniej dwa. Jak wykorzystać wszystkie z nich? Zagadnienie z pewnością trudne ale i ciekawe, a dodatkowo stało się głównym tematem mojej pracy magisterskiej.
Programowanie rozproszone 3878 dni, 17 godzin, 48 minut temu 103 źrodło rozwiń