Falando sobre Paralelismo e .NET 4.0
Olá pessoal, tudo certo?
Semana passada, estive conversando com um arquiteto que como eu, passou pelos tempos dos semáforos, critical sessions, interrupções, pool de conexões, hash tables manuais, listas ligadas, mutex, etc., que muito desafiavam os desenvolvedores, mas também ofereciam momentos agradáveis de satisfação (principalmente quando rodava tudo em produção, com grandes volumes e alto desempenho, certo Judice? :)
Um dos assuntos que falamos foi sobre paralelismo e como o .NET 4.0 oferece novas opções para a programação paralela. É o que temos com o Parallel Extensions for .NET 4.0.
A arquitetura do .NET 4.0 para paralelismo é dada abaixo:
No desenho acima, encontramos o PLINQ (Parallel LINQ), o TPL (Task Parallel Library), o DSC (Data Structures and Coordination) além dos recursos para suporte a múltiplos cores para o processamento paralelo. Além de estruturas como Parallel.For, Parallel.Foreach, Parallelenumerable.Forall, etc, coleções tratadas via PLINQ oferecem um particionamento que permite o tratamento em múltiplos cores, oferecendo paralelismo e desempenho para cenários diversos.
O assunto é extenso e se você ficou interessado com o Parallel Extensions for .NET 4.0, não deixe de conferir o documento abaixo:
Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4
Ref.: https://www.microsoft.com/downloads/details.aspx?FamilyID=86b3d32b-ad26-4bb8-a3ae-c1637026c3ee&displaylang=en
Nem preciso dizer que é “LEITURA OBRIGATÓRIA!”, ou preciso? :)
Se estiver procurando alguns exemplos interessantes, veja ainda:
Samples for Parallel Programming with the .NET Framework 4
Ref.: https://code.msdn.microsoft.com/ParExtSamples
Finalmente, o portal de Computação Paralela da Microsoft é esse:
Parallel Computing
Ref.: https://msdn.microsoft.com/en-us/concurrency/default.aspx
Outro assunto interessante que surgiu foi sobre o futuro do paralelismo e as pesquisas em torno de programação paralela que a Microsoft Research está conduzindo com o DraydLINQ. Já falamos desse framework por aqui no blog, veja:
Programação Paralela com DryadLINQ
Ref.: https://blogs.msdn.com/wcamb/archive/2009/09/21/programa-o-paralela-com-dryadlinq.aspx
Esse framework oferece recursos de programação para cenários sofisticados, como processamento de imagens, análises gráficas, simulações, mining de dados e outros exemplos de processamento intenso de dados. Um dos objetivos do projeto é facilitar o desenvolvimento paralelo para cenários do dia-a-dia.
Veja um diagrama de arquitetura prevista para o DryadLINQ:
Baseado em HPC High Performance Computing, o Dryad oferece ainda maior poder de processamento e paralelismo para cenários bem sofisticados.
Para saber mais sobre essa iniciativa, confira os links abaixo:
DryadLINQ
Ref.: https://research.microsoft.com/en-us/projects/DryadLINQ/
DryadLINQ: A System for General-Purpose Distributed Data-Parallel
Computing Using a High-Level Language
Ref.: https://research.microsoft.com/en-us/projects/dryadlinq/dryadlinq.pdf
Scaling out PLINQ: DryadLINQ at PDC09 and Supercomputing09
Ref.: https://blogs.msdn.com/pfxteam/archive/2009/11/11/9921066.aspx
Data-Intensive Computing on Windows HPC Server with the DryadLINQ Framework
Ref.: https://microsoftpdc.com/Sessions/SVR17
E para terminar, não perca o WebCast sobre dicas e truques sobre Paralelismo, que o Otávio já está preparando…. Veja o link a seguir e garanta sua vaga… :)
Webcast Arquitetura: Paralelismo: dicas e truques para um arquiteto
Ref.: https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032450897&Culture=pt-BR
Não foi um post tutorial, foi mais um post de referências. Em breve, vamos falar mais sobre paralelismo no .NET 4.0 de forma mais didática e com exemplos. Aguarde!
Por enquanto é só! Até o próximo post :)
Waldemir.
Comments
Anonymous
May 03, 2010
Obrigado pelo post Com o Parallel Extensions for .NET 4.0, voltaremos a ter momentos com grande satisfação []´s JudiceAnonymous
May 04, 2010
Opa waldemir depois de uma olhada no http://www.infoq.com/news/2010/05/Brahma que é paralelismo na GPUAnonymous
May 13, 2010
Olá pessoal, Segue aqui, uma bela dica do Otávio sobre artigos de paralelismo, no MSDN: Articles on Parallel Programming with the .NET Framework 4 Ref.: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c3ea8fb5-650d-434b-a216-7e54c53965d1 Não deixe de conferir! Um abraço! Waldemir.