Essa imagem prove o serviço de processamento de simulações no roms. Nesta documentação, sera apresentado três formas diferentes de execuções de processamentos:
\ No newline at end of file
- Processamento Singlethread - Processamento em um único thread do processador.
- Processamento Multithread - Processamento em N threads do processador.
- Processamento Distribuído - Processamento distribuído por N nós de um cluster.
- Para o processamento Singlethread, deve ser iniciado o container, compartilhando o diretório dos modelos com a pasta `/input` do mesmo e executado o comando para inicialização do processamento:
(Nota: Os modelos estavam no diretório `/home/modelos` do host e foi executado o modelo `projeto1`.)
#### Processamento Multithread
- Para o processamento Multithread, deve ser iniciado o container, compartilhando o diretório dos modelos com a pasta `/input` do mesmo e executado o comando para inicialização do processamento, junto com o `mpirun` para a sua paralelização, definindo o numero de `threads` necessarios para o processamento:
(Nota: Os modelos estavam no diretório `/home/modelos` do host e foi executado o modelo `projeto1`, utilizando 4 `threads` para processamento.)
#### Processamento Distribuído
##### Configuração Dos Containers
- Para inicializar os container de forma distribuída no cluster, utilizando o docker swarm, pode se utilizar a stack abaixo, onde nos `volumes` deve ser configurado o servidor `nfs` em que os modelos de projeto serão armazenados e deve ser feito o direcionamento dos `serviços` para todos os nós do cluster, definindo um `nome` e `hostname` diferente para cada.
-"node.hostname==docker-hpc2"# Direcionando serviço para o nó docker-hpc2
volumes:
# Configuração do servidor NFS
roms-volume:
driver:local
driver_opts:
type:nfs
o:addr=192.168.0.1,rw,async
device::/hpc/roms
```
##### Teste
- Para a execução de um teste, deve ser iniciada uma sessão bash ou shell com o container master, utilizando o [docker exec](https://docs.docker.com/engine/reference/commandline/exec/) ou de alguma outra forma. Com o acesso ao terminal do container, pode se então acessar os projetos que estão no diretório `/input` e executar os comandos para inicialização do processamento, utilizando o `mpirun` para a paralelização do processamento, definindo o `hosts` em que serão distribuídos os processamentos e o número total de `threads` necessários(soma de threads de todos os nós):