Pergunta

Fundo prolixo

Eu estou trabalhando em parallelising algum código para simulações de eletrofisiologia cardíaca. Como os usuários podem especificar suas próprias simulações utilizando uma linguagem de script embutido, eu não tenho nenhuma maneira de saber como gerir o trade-off da computação comunicação vs.. Para combater isso, eu estou fazendo uma espécie de profiler de tempo de execução, que irá decidir como lidar com a decomposição de domínio uma vez que é visto a simulação a ser executado eo ambiente de hardware que ele tem para trabalhar.

A minha pergunta é esta:

Como é MPI I / O implementada nos bastidores? É cada processo realmente escrever para um único arquivo em algum outro nó, ou é cada processo de escrita a algum arquivo esparso, que vai ficar emendados juntos novamente quando o arquivo é fechado?

Sabendo isto irá me ajudar a decidir se a considerar O operações como comunicação ou computação I / O e ajustar o balanço em conformidade ...

Agradecemos antecipadamente por qualquer insight que você pode oferecer.

Ross

Foi útil?

Solução

O mecanismo de I / O é dependente da implementação. Além disso, não há um único estilo de I / O. Alguns I / O é armazenado em cache pelas fileiras remotos e recolhidos pelo processo mpirun no final da corrida. Alguns I / O é escrito para espaço de rascunho local como necessário. Alguns I / O é escrito para um sistema de arquivos NAS / SAN desempenho alto estilo compartilhado.

bibliotecas de uso 3ª Alguns de MPI para suportar I / O para sistemas de arquivos paralelos, e os detalhes podem ser proprietárias. Alguns sistemas de arquivos são discos locais, outros são SAN sobre fibra ou InfinBand.

Como você está planejando para realmente medir o tempo gasto em I / O? Você está planejando usar a interface PMPI para interceptar todas as chamadas para a biblioteca?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top