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;
Download

Decomposição das partículas