July 11, 2007

O melhor amigo de CFD: O computador!

A configuração do hardware de um computador muitas vezes nos deixa em um mar de dúvidas. Muitas peças, placas, especificações e uma grande questão: Será que essa configuração vai atender às minhas necessidades? E para quem quer um computador específico para simulação numérica? Para clarear um pouco as coisas, é interessante ver como funciona a troca de dados entre os componentes de um computador.

Entender a hierarquia das memórias é um fator importantíssimo para quem deseja um computador veloz. Neste caso, a leitura e/ou escrita (I/O) de dados nos dispositivos de armazenamento de um computador obedecem uma hierarquia de velocidade, que usualmente segue:
A ordem dessa hierarquia também vale para o custo das memórias. Por outro lado, a capacidade de armazenamento de dados segue justamente o caminho contrário desta hierarquia.

Assim, quando um programa é iniciado, seus dados são transferidos do HD para a memória RAM (que é mais rápida, porém com menor capacidade). Em seguida, aloca-se na memória cache (que é pequena, mas rapidíssima) as informações que serão processados. A memória cache se encarrega de fornecer ao processador os dados para tais operações, que depois de realizadas são alocadas novamente na cache.

Quando o processador precisa de informações que estão na memória RAM, libera-se espaço na cache voltando com os dados já processados para a RAM e lendo e alocando na cache novos dados (que serão usados pelo processador) provindos da RAM.

Por sua vez, quando é necessário escrever os dados em arquivo (resultados de uma simulação, por exemplo), as informações são passadas da memória RAM para o HD (em uma forma que nós conhecemos: o arquivo). Programas que precisam de muito I/O de arquivos ficam lentíssimos.

Portanto, essa troca de informações/dados entre os níveis de memória deve ser a mais rápida possível pois nós queremos velocidade nas operações. No próximo post, vou escrever um pouco mais sobre os componentes do computador usualmente encontrados em lojas (nada de supercomputadores caríssimos) e quais seriam os parâmetros para quantificar se seriam adequados ou não para simular problemas CFD profissionais usuais.

Contudo, lembre-se que nem a melhor configuração de hardware irá te salvar de um código CFD mal implementado. O conhecimento da linguagem de programação e como as variáveis são alocadas na memória, assim como implementar o código de forma eficiente (evitando operações desnecessárias, uso excessivo de condicionais, etc.) são vitais nas simulações CFD.

No comments:

Post a Comment