MonteCarlo paralelo: reprodutibilidade ou aleatoriedade real?
Estou preparando um exame universitário em computação paralela. O principal objetivo é acelerar o máximo possível uma simulação de Montecarlo sobre a deriva de elétrons no campo magnético da terra. Eu já desenvolvi algo com duas camadas de paralelização:
MPI usado para executar o código te em várias máquinasOpenMP para executar simulação paralela dentro do único computadorAgora vem a pergunta: eu gostaria de manter sob demanda a execução da tarefa. O computador mais rápido deve ser capaz de executar mais trabalhos, os mais lentos. A partição do problema é feita através do ciclo mestre-trabalhador, portanto, não há luta real para alcançar esse resultado.
Como o número de tarefas (um bloco de n elétrons a serem simulados) executadas por um trabalhador não é definido previamente, tenho dois caminhos a seguir:
cada encadeamento em cada trabalhador possui um RNG próprio, inicializado com semente gerada aleatoriamente (método de geração diferente). O desequilíbrio do cluster alterará os resultados, mas nessa abordagem o resultado é o mais casual possível.
todo elétron tem sua própria semente, garantindo a reprodutibilidade da simulação, apesar de qual trabalhador executar a tarefa única. Deve ter um RNG melhor.
Vamos enquete sobre isso. Qual a sua sugestão?
Diverta-se
gf