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:

  • Textos clássicos:
    • 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 como gerenciamento de memória, etc.
    • Um livro bastante completo sobre métodos numéricos e implementações de seus algoritmos é o Matrix Computations de  Golub & Van Loan. Veja mais sobre métodos numéricos nesta postagem.

Temos cópias de todos esses livros no laboratório.


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.

Métodos numéricos, estatísticos e aprendizado de máquina

Nesta postagem vou tentar agrupar algumas boas referências sobre áreas de métodos numéricos (álgebra linear, 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;
  • Uma boa referência sobre métodos numéricos de otimização e a álgebra linear associada é o livro Practical Optimization;
  • 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.
  • Curso online do Andrew White, cobrindo várias técnicas e com exemplos em Jupyter par aplicações moleculares.
  • Machine-Learning University: Vários tópicos relacionados (desde regressão linear), com gráficos e explicações claras.
  • Curso online da Universidade de Amsterdam sobre Deep Learning usando PyTorch e com notebooks com exemplos.
  • Algumas aplicações de ML em química medicinal, com notebooks e exemplos.