Arquitetura e performance de computadores e software

Entrada para agrupar textos recomendados sobre arquitetura de computadores e clusters, e desenho de software para computação científica:

  • Talvez o texto inicial mais fundamental aqui é In Search of Clusters do Gregory Pfister (2a edição), que apresenta vários conceitos de arquitetura de computadores (cache, memoria virtual, etc) numa linguagem bastante acessível;
  • Um livro mais focado em hardware e desenho de microprocessadores é o Computer Organization and Design de Patterson & Hennessy. Este é de leitura mais difícil, com foco em engenheiros;
  • Sobre software, recomendo o livro Sistemas Operacionais Modernos do Tanenbaum, que introduz conceitos de baixo-nível como gerenciamento de memória, etc.
  • Um livro completo sobre métodos numéricos e implementações de seus algoritmos é o Matrix Computations de  Golub & Van Loan. Temos cópias de todos esses livros no laboratório.
  • Esta recente revisão aborda avanços no desenvolvimento de algorítmos mais eficientes e deixa uma perspectiva da computação científica nos anos 2020. Esta outra revisão do Mark Gordon foca no reflexo destes desenvolvimentos em códigos de química computacional.
  • Revisão sobre desenvolvimento de chips ARM e novos sistemas de computação de alto-desempenho (HPC), com infos sobre as empresas envolvidas.

Programas científicos são diferentes de equipamentos de laboratório

pillarsInteressante postagem e artigo do Konrad Hinsen sobre reproducibilidade de pesquisa computacional. Sua discussão, um tanto epistemológica, atualiza a idéia bem disseminada que ciência é baseada em dois pilares, experimento e teoria. Hinsen prefere dizer que observações e modelos, são os verdadeiros pilares e, portanto, simulação computacional é apenas um experimento com modelos. Leia a postagem completa aqui.

Referências de métodos numéricos, estatísticos e aprendizado de máquina

Nesta postagem vou tentar agrupar algumas boas referências sobre áreas de álgebra linear (e métodos numéricos, primeiro bloco abaixo), estatística (segundo bloco) e aprendizado de máquina (machine learning, ML – terceiro bloco):

  • Uma das referências fundamentias sobre métodos numéricos é o livro Matrix Computations de Golub e van Loan. Temos uma cópia no lab, e tenho a última (4a) versão se alguém tiver interesse;
  • Boa revisão e tutorial sobre Algebra linear em Python;
  • Singular-value decomposition (SVD). Método similar a análise espectral (autovetores), de crescente importância para redução de dimensionalidade e interpretação de dados multi-dimensionais. Por exemplo, é aplicado para justificar métodos de renormalização de grupo (como DMRG);
  • Texto pedagógico sobre transformada de Legendre, muito usada para expressão de quantidades termodinâmicas e relações em mecânica estatística.

 

  • Introdução didática sobre o procedimento de bootsrap usado para estimar erros padrão e intervalos de confiança; Críticas sobre esta metodologia.
  • Web-site com tutoriais, dicionários e explicações sobre diversos conceitos de estatística;
  • Inferência Bayesiana é de grande importância em biofísica, para comparação de dados simulados e experimentais;

 

  • Aprendizado de máquina (ML) pode ter muitas aplicações em modelagem molecular. Por exemplo, campos de força foram montados com ML aqui ou aqui. Quem quiser se aventurar, pode começar com esta biblioteca em Python, que também apresenta bons tutoriais sobre ML.
  • Esta série de aulas online apresentadas pelo Frank Noé, pesquisador com relevantes contribuições no campo de simulação molecular, é uma boa introdução à ML, com conceitos formais e exemplos paupáveis.