terça-feira, 19 de dezembro de 2017

Que presente seu computador deseja para garantir um futuro de alto desempenho?

Não é só você que está vivendo em ritmo acelerado, quase sem dar conta de lidar com o constante aumento no volume de informações. Os computadores também têm demandas cada vez mais complexas e, se pudessem falar, com certeza teriam muitos pedidos para fazer ao Papai Noel...

Não basta ter um supercomputador, desenvolvedores precisam avaliar como os dados
estão sendo processados e prestar atenção no desempenho

Uma placa de processamento com capacidade para lidar com 12 trilhões de operações de ponto flutuante por segundo. Com certeza, se os computadores pudessem falar, esse dispositivo estaria no topo de suas listas de desejos natalinos. Tal como a maioria dos brasileiros que sonham com smartphones de última geração para poder lidar com um mundo cada dia mais conectado e com mais informações circulando, os computadores também necessitam de novos recursos tecnológicos para se adaptar a esse contexto. 

Mas pense no tempo que você leva para aprender a usar todas as funcionalidades de um smartphone recém-adquirido ou de qualquer outro brinquedinho tecnológico. No caso dos computadores, são os seres humanos que precisam ensinar as máquinas a empregar esses dispositivos tecnologicamente mais evoluídos a fim de que executem tarefas cada vez mais complexas.

Para imaginar como um computador funciona, pense que cada linha de programação – o famoso código – é como se fosse uma pequena receita de bolo: ensinamos a máquina a misturar determinados ingredientes, de certo modo, com a finalidade de chegar ao resultado desejado. Dependendo dos ingredientes que usamos e do modo como os misturamos, teremos diferentes tipos de bolo. Nos primórdios da computação, os programas de computador faziam bolos misturando cada ingrediente em sequência. É como pegar a batedeira, depois quebrar os ovos, reservar as gemas, bater as claras em neve e seguir esse processo adicionando cada ingrediente passo a passo. 

No entanto, com a evolução tecnológica dos equipamentos e o surgimento de demandas mais complexas, como a análise de grandes bancos de dados (Big Data), foi preciso otimizar as tarefas e realizar vários processos computacionais simultaneamente: enquanto uma batedeira está fazendo as claras em neve, outra mistura farinha, açúcar e leite e um dispositivo já vai untando a assadeira. É assim que os computadores funcionam atualmente para alcançarem um alto desempenho: uma série de processadores atuam simultaneamente para otimizar os resultados.

Mas lembre-se: quem precisa ensinar o computador a fazer tudo isso ao mesmo tempo são os desenvolvedores. Então, eles já não podem escrever os programas de computador como se fossem receitas de bolo sequenciais. Eles devem pensar em como alcançar o máximo de desempenho dos equipamentos na hora de construir os códigos e, às vezes, simples alterações podem ocasionar significativos ganhos.

“Hoje, todos que atuam na área de computação precisam aprender a programar usando multiprocessadores”, explica o professor Paulo de Souza, do Instituto de Ciências Matemáticas e de Computação (ICMC) da USP, em São Carlos. Ele foi o coordenador da 8ª Escola Regional de Alto Desempenho de São Paulo (ERAD-SP), uma realização da Sociedade Brasileira de Computação (SBC) que, este ano, aconteceu pela primeira vez na USP em São Carlos. 

“Pensamos nas necessidades que os alunos têm em aprender computação de alto desempenho e como podemos colaborar com esse aprendizado. Por isso, o eixo central do evento é o saber e a aplicação desse saber”, adiciona o professor. Segundo ele, a principal finalidade da iniciativa é apresentar um panorama da área, mostrando sua importância, os desafios e as perspectivas futuras, estimulando a aplicação do conhecimento adquirido na Escola para encontrar novas soluções. Dessa forma, os estudantes ficam mais preparados para ingressar no mercado de trabalho ou fazer uma pós-graduação.

Professor Paulo durante a abertura da ERAD-SP

Desafio em equipe – Este ano, a ERAD-SP contabilizou mais de 200 participantes e contou com 17 especialistas convidados. Depois de participar dos minicursos oferecidos, os estudantes formaram times e encararam um desafio de programação paralela. “O desafio vem colocar à prova, de uma forma muito lúdica, o conhecimento que o pessoal adquiriu durante os minicursos. Não dá para propor a solução de um problema da vida real no tempo que temos disponível, mas podemos desafiá-los com o pedacinho de um problema”, revela Calebe Bianchini, professor da Universidade Presbiteriana Mackenzie, que coordenou o desafio junto com o professor Júlio Estrella, do ICMC.

Ao se deparar com o primeiro problema proposto no desafio, os participantes liam: “Ah, o π (Pi)! Não tem como fugir desse lindo número cabalístico! Desde a antiguidade, seja no Egito, na China, na Babilônia, esse número vem sendo estudado pelos principais matemáticos”. A seguir, era apresentada uma das diversas fórmulas que existem para se encontrar o tal número: 3,141592653587. 

Com a estratégia de solução apresentada pelos coordenadores do desafio, um computador demoraria cerca de cinco minutos para fazer a operação. “É inaceitável uma máquina demorar esse tempo todo para realizar esse cálculo”, diz Calebe. Então, os estudantes deveriam buscar formas de otimizar o processo, com o objetivo de alcançar um alto desempenho por meio da maximização do uso de recursos como a memória, a unidade central de processamento (CPU) e os demais componentes internos, bem como minimizar a comunicação entre os dispositivos periféricos. Isso tudo poderia reduzir o tempo de processamento e, consequentemente, diminuir o tempo gasto nas operações computacionais. “Com soluções de otimização bem simples, os alunos conseguem chegar a um tempo de processamento de um minuto. Se atacarem o problema de forma mais otimizada, conseguem diminuir ainda mais”, explica Calebe. 

De acordo com o professor, ao ter acesso a esse modelo matemático usado para calcular o π (Pi), os estudantes entendem alguns princípios que regem diversos outros modelos matemáticos aplicados a várias áreas do conhecimento. Ele cita como exemplo os modelos que são utilizados para compreender as ligações químicas em um determinado composto e que precisam ser analisados quando se está produzindo um novo fármaco.

“O programador deve avaliar sempre como os dados estão sendo processados e prestar atenção no desempenho do computador. Quanto mais difícil o processamento, maior o custo computacional. Se conseguimos programar de forma distribuída, temos como resultado um melhor processamento. Nesse caso, milissegundos fazem muita diferença”, explica o desenvolvedor Diego Menescal. Ele apresentou algumas ferramentas desenvolvidas pela Intel durante um workshop sobre inteligência artificial realizado no ICMC dia 30 de setembro.

Diego ressaltou importância da computação de alto
desempenho durante workshop da Intel

Aliás, os especialistas concordam que, com a crescente demanda por cientistas de dados capazes de lidar com Big Data e recursos de inteligência artificial, a demanda pela computação de alto desempenho tendo a ser cada vez maior. A questão é bastante crítica, pois Big Data envolve altos custos e quanto mais as empresas conseguirem reduzir as demandas de horas de processamento em um data center, melhor. 

No ICMC, um dos desejos natalinos já foi atendido com a chegada de uma placa de processamento com capacidade para lidar com 12 trilhões de operações de ponto flutuante por segundo. O equipamento será usado para o processamento de grandes volumes de dados que são usados nos diversos projetos de pesquisas realizados no Instituto, provenientes de redes sociais, comércio eletrônico e hospitais. A placa foi doada pela empresa NVIDIA por meio do NVIDIA’s Academic Program. “Para se ter uma ideia da capacidade de processamento dessa placa, o supercomputador mais poderoso do mundo do ano de 2001 tinha apenas metade dessa capacidade. A placa foi especialmente projetada para processamento gráfico, simulações e, principalmente, para aplicações em inteligência artificial via técnicas que estão revolucionando o que se denomina mais amplamente por inteligência computacional”, finaliza o professor José Rodrigues Júnior, do ICMC.

Evento contabilizou mais de 200 participantes
Texto: Denise Casatti – Assessoria de Comunicação ICMC/USP
Fotos: Reinaldo Mizutani - Assessoria de Comunicação ICMC/USP


Mais informações
Assessoria de Comunicação do ICMC: (16) 3373.9666
E-mail: comunica@icmc.usp.br