segunda-feira, 7 de abril de 2008

Estamos prontos para o paralelismo?

Nesses 4 meses estou tendo uma nítida sensação que o assunto do ano será o paralelismo. Será que nossos programas de hoje e nosso modo de pensar está preparado para um mundo paralelo?

Não pensem que eu vivo em um mundo paralelo ou que vamos viver em um, nada disso. Me refiro a termos processos paralelos em tudo. O que era um sonho quando eu entrei na faculdade hoje é realidade. Máquinas com mais de um processador, sem necessariamente ser um cluster.

Tem um professor meu que fala muito sobre pesquisa e mercado. Quando algo que está sendo pesquisado entra no mercado é porque se tornou algo comum e não podemos mais ignorá-lo. Tivemos isso com o linux há alguns anos atrás e agora estamos vivenciando as máquinas multicore (máquinas com mais de um núcleo) que estão em plena expansão.

Existe vários aspectos que favorecem a adoção do processamento paralelo e entre eles o que eu acho mais interessante é a barreira ao crescimento da frequência de operação dos processadores. Para tudo existe um limite e para conseguir um melhor desempenho não temos mais como aumentar a freqüência dos processadores. Então, colocamos mais processadores em um mesmo chip. É realmente fantástico isso.

Mas também existem aspectos desfavoráveis e o que eu acho mais interessante é a ausência de padrões. As arquiteturas paralelas sofrem com isso porque cada arquitetura criada possui uma vida útil de mais ou menos 3 anos até que uma arquitetura nova entre no mercado fazendo com que tudo que tínhamos com a arquitetura anterior perca seu valor e temos que recriar tudo. Imaginem o custo disso.

Mesmo tendo alguns pontos desfavoráveis o mundo hoje tende para o processamento paralelo e precisamos estar prontos para ele. Não adianta termos máquinas com vários núcleos em casa se nossos programas não tiram o maior proveito dessa arquitetura, não adianta usarmos os mesmos padrões de programação sequenciais porque em máquinas multicore temos que explorar o paralelismo. Precismos de vários processos rodando em paralelo e assim por diante. Nossos compiladores precisam saber quais instruções eles devem paralelizar e quais possuem dependências. Estamos entrando em um mundo modernos, mas em um mundo real. O mundo hoje é paralelo.

Nenhum comentário: