Dinâmica molecular Rui Silva Departamento de Informática Universidade do Minho Conteúdo • Dinâmica molecular: – Para que serve? – Princípios básicos; – Estratégias de Implementação; – Opções de Paralelização; • Técnicas de Paralelização; • Conclusões. Dinâmica Molécula Para que é utilizada? • Analisar a evolução das Partículas: – Estudos do comportamento das partículas: • que são responsáveis pela ajuda de absorção de nutrientes na digestão humana; • estudo do comportamento das “porfirinas”; • estudo de novos fármacos; • Com os estudos obtidos através da simulação molecular, é possível perceber melhor o comportamento das partículas. Princípios Básicos • Sistema modelado por um conjunto de: – Partículas; – Interacções (Forças). • Qual função de uma Simulação Molecular? – Analisar a evolução das partículas. Princípios Básicos • Algoritmo base: Princípios Básicos • Interacções: – Ligantes – existe uma ligação física entre as partículas; • Ligações – interacções entre duas partículas; • Ângulos – interacções entre três partículas; • Diedros – interacções entre quatro partículas; – Impróprios ; – Próprios; – Não ligantes – não existe ligação física; • Van der Waals • Electrostáticas Princípios Básicos • Interacções: – Ligantes – existe uma ligação física entre as partículas; • Ligações – interacções entre duas partículas; • Ângulos – interacções entre três partículas; • Diedros – interacções entre quatro partículas; – Impróprios ; – Próprios; – Não ligantes – não existe ligação física; • Van der Waals • Electrostáticas Princípios Básicos • Interacções: – Ligantes – existe uma ligação física entre as partículas; • Ligações – interacções entre duas partículas; • Ângulos – interacções entre três partículas; • Diedros – interacções entre quatro partículas; – Impróprios ; – Próprios; – Não ligantes – não existe ligação física; • Van der Waals • Electrostáticas Princípios Básicos • Interacções: – Ligantes – existe uma ligação física entre as partículas; • Ligações – interacções entre duas partículas; • Ângulos – interacções entre três partículas; • Diedros – interacções entre quatro partículas; – Impróprios ; – Próprios; – Não ligantes – não existe ligação física; • Van der Waals • Electrostáticas Princípios Básicos • Interacções: – Ligantes – existe uma ligação física entre as partículas; • Ligações – interacções entre duas partículas; • Ângulos – interacções entre três partículas; • Diedros – interacções entre quatro partículas; – Impróprios ; – Próprios; – Não ligantes – não existe ligação física; • Van der Waals • Electrostáticas Princípios Básicos • Interacções: – Ligantes – existe uma ligação física entre as partículas; • Ligações – interacções entre duas partículas; • Ângulos – interacções entre três partículas; • Diedros – interacções entre quatro partículas; – Impróprios ; – Próprios; – Não ligantes – não existe ligação física; • Van der Waals • Electrostáticas Princípios Básicos • Modelo de Lennard-Jones é utilizados para modelar as interacções de Van der Walls: – permite a utilização de do raio de corte. V – velocidade; C12, C6 – constates , que dependem das propriedades das partículas; rij – distância entre a partícula i e j. Princípios Básicos • Existem duas alternativas para o cálculo das interacções elecrostáticas: Reaction Field – as partículas estão sujeitas a um campo electrostático Particle Mesh Ewald – as partículas interagem com partículas fora do domínio Estratégias de Implementação • Opções: – Todos os pares; – Divisão de células ; – Lista de Vizinhos. • Optimizações que podem ser efectuadas: – Terceira lei de Newton; – Raio de corte; – Lista de Vizinhos – não é necessário actualizar a todas as iterações. Estratégias de Implementação • Opções: – Todos os pares; – Divisão de células ; – Lista de Vizinhos. • Optimizações que podem ser efectuadas: – Terceira lei de Newton; – Raio de corte; – Lista de Vizinhos – não é necessário actualizar a todas as iterações. Estratégias de Implementação • Opções: – Todos os pares; – Divisão de células ; – Lista de Vizinhos. • Optimizações que podem ser efectuadas: – Terceira lei de Newton; – Raio de corte; – Lista de Vizinhos – não é necessário actualizar a todas as iterações. Opções de Paralelização • Decomposição das partículas: – Particiona os partículas pelos vários processadores; – Todas os processadores conhecem todas as partículas; – Simplicidade de implementação; – Problemas com o balanceamento de carga. • Decomposição das forças: • Decomposição das Células: Opções de Paralelização • Decomposição das partículas: • Decomposição das forças: – Cada processador é responsável por calcular um conjunto de interacções; – Melhora o Balanceamento de carga em relação ao algoritmo anterior. • Decomposição das Células: Opções de Paralelização • Decomposição das partículas: • Decomposição das forças: • Decomposição das Células: – Utilizando o algoritmo de divisão por células; – Cada processador calcula um conjunto de células. Como optimizar o código? • Alterar directamente o código original: – Forma de optimização mais utilizada; – Dificuldade na identificação conceitos no código resultante. • Utilizar AOP para as modificações: – Separação dos diferentes conceitos ( Algoritmo representativo do problema, paralelização, checkpointing); – Pluggable; – Facilita a correcção do código; – Desenvolvimento iterativo. Optimização não Invasiva (exemplo) • Sequencial: void metodoA( int min, int max, int inc){ for(int i=0, i<max, i+=inc){ calculo(i); } } void main(String args[]){ metodoA(0, 100,1); } Optimização não Invasiva (exemplo) • Paralelo: void metodoA( int min, int max, int inc){ MPI.Init(args); int size = MPI.COMM_WORLD.Size(); int rank = MPI.COMM_WORLD.Rank(); synchronizardadosA(); for(int i =min + rank * inc , i<max, i+=inc * size){ calculo(i); } synchronizardadosB(); MPI.Finalize(); } void main(String args[]){ metodoA(0, 100); } • Paralelo (AOP): void around(int min, int max, int inc ) : call(public void classA.metodoA(int,int,int)) && args(min,max,inc){ MPI.Init(args); int size = MPI.COMM_WORLD.Size(); int rank = MPI.COMM_WORLD.Rank(); synchronizardadosA(); proceed(min + rank * inc , max, inc * size); synchronizardadosB(); MPI.Finalize(); } AOP na Dinâmica Molecular … Lista de Vizinhos + Mpi + Threads Lista de Vizinhos + Mpi Lista de Vizinhos Mpi + Threads Mpi Threads Md Composição Nível N … … Células Composição Nível 2 Composição Nível 1 Simples Conclusões • A simulação molecular é bastante utilizada em diferentes estudos; • A parelelização é vital neste tipo de software; • Paralelização normalmente efectuada neste tipo de sistemas é invasiva do código; • A escolha da técnica de paralelização influência a performance. – AOP permite separar o código de cada conceito, permitindo manter múltiplas variantes Trabalho Futuro: • Analise de desempenho das várias variantes; • Métricas de Software; • Aplicação das técnicas a um pacote de software de grande visibilidade; • Utilização de ambiente Grid;