sexta-feira, 13 de setembro de 2013

Parallel.For Loop com .NET 4.0 (Multiprocessador em Paralelo)

Você tem um sistema multiprocessador? Então, aperte (Ctrl+Shift+Esc) e abrirá o famoso Gerenciador de Tarefas do Windows, na aba Desempenho, verá as informações de sua memoria e dos seus núcleos caso tenha um multiprocessador. Você verá algo como mostrado abaixo:



Podemos ver que existe núcleos não totalmente utilizado para o melhor desempenho de seu software.
Para o loop

for (int i = 0; i < 100; i++)
{
        //Código independente, porém executa sequencialmente.
        a[i] = a[i]*a[i];
}
Este tipo de processador está praticamente sendo defult em novas maquinas. Para ter um programa atualizado e com melhor desempenho recomenda-se utilizar todos os processadores em paralelo.
Vou apresentar a TPL
A Task Parallel Libary (TPL) foi projetada para torna muito mais fácil a vida do desenvolvedor e conseguir a utilização de todos os processadores disponíveis no equipamento de forma automática. Usando esta biblioteca poderá utilizar os processadores de forma paralela. Geralmente isto resulta em um enorme ganho de desempenho.
TPL é um dos principais componentes da biblioteca Parallel FX, a próxima geração de suporte a concorrência de arquivos.
Como as iterações são independentes umas das outras, ou seja, as iterações subsequentes não leem atualizações de estado feitas pelas iterações anteriores, você pode usar TPL executar cada iteração em paralelo em núcleos disponíveis, como este:

Loop Parallel

Parallel.For(0, 100, i =>
                {
                        //Bloco onde deverá conter código independente
                        //Este código deverá ter um enorme tempo de execução
                        //Código de pequena complexidade pode resultar em mal desempenho
                        a[i] = a[i]*a[i];
                }
            );

Obs. Veja que o uso do CORE 1 e CORE 2 será altíssimo e o uso total da CPU será de 100%.
Bons estudos

0 comentários:

Postar um comentário