Wat zijn de huidige beste opties voor parallelizing een CPU-intensieve .NET app?

stemmen
17

Dit is een open vraag. Welke stappen moet ik overwegen?

De vraag is gesteld op 04/08/2008 om 17:30
bron van user
In andere talen...                            


5 antwoorden

stemmen
8

Uw eerste stap is om uit te vinden en begrijpen van de parallelliteit in uw probleem. Het is heel gemakkelijk om multi-threaded code die niet beter dan de single-threaded code vervangt presteert schrijven. "Patronen voor parallel programmeren" (Amazon) is een geweldige introductie tot de belangrijkste concepten.

Zodra u een werkbaar ontwerp, start het lezen van de artikelen in de "Concurrency" onderwerp in de MSDN Magazine archieven (link) , in het bijzonder niets geschreven door Jeff Richter. Die geeft je de moeren en bouten spullen geven op de schroefdraad constructies die specifiek zijn voor Windows en .NET. (De multi-threading sectie in Richter "CLR via C # (Amazon) is kort, maar zeer inzichtelijke - sterk aanbevolen.)

antwoordde op 30/08/2008 om 23:32
bron van user

stemmen
6

Er zijn een aantal parallel uitbreidingen van .NET die momenteel in het testen en die tegen Microsoft's Parallel Computing Developer Center . Ze hebben een paar interessante items die je zou verwachten, zoals Parallel foreach en een parallelle versie van LINQ genoemd PLINQ. Sommige van de beste informatie over de uitbreidingen op Channel 9 .

antwoordde op 04/08/2008 om 17:41
bron van user

stemmen
2

@Larsenal

Als u wilt vertakken buitenkant van .NET is er veel discussie over Intel Threading Building Blocks dat is een parallel bibliotheek voor C ++.

antwoordde op 04/08/2008 om 18:41
bron van user

stemmen
2

Ik denk dat we kunnen ook niet-.NET-specifieke aanpak van verwerking parallel als die behoren tot de beste opties te overwegen.

antwoordde op 04/08/2008 om 18:32
bron van user

stemmen
0

Er zijn vele opties en de beste oplossing zal afhangen van de aard van het probleem dat u probeert op te lossen. Als u probeert een oplossing embarassingly parallel probleem vervolgens te delen en parallelliseren de taken zal triviaal zijn. In dat geval zal de uitdaging komen in de distributie en het beheer van de gebruikte gegevens.

Enkele suggesties zou zijn:

antwoordde op 30/08/2008 om 23:46
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more