Devito é um pacote Python para implementar computação de estêncil otimizada (por exemplo, diferenças finitas, processamento de imagens, aprendizado de máquina) a partir de definições de problemas simbólicos de alto nível. Devito baseia-se no SymPy e emprega geração automatizada de código e compilação just-in-time para executar kernels computacionais otimizados em diversas plataformas de computador, incluindo CPUs, GPUs e clusters dos mesmos.
Devito fornece uma linguagem funcional para implementar operadores sofisticados que podem ser compostos de múltiplos cálculos de estêncil, condições de contorno, operações esparsas (por exemplo, interpolação) e muito mais. Um caso de uso típico são métodos explícitos de diferenças finitas para aproximar equações diferenciais parciais. Por exemplo, um operador de difusão 2D pode ser implementado com Devito da seguinte forma
>> > grid = Grid ( shape = ( 10 , 10 ))
>> > f = TimeFunction ( name = 'f' , grid = grid , space_order = 2 )
>> > eqn = Eq ( f . dt , 0.5 * f . laplace )
>> > op = Operator ( Eq ( f . forward , solve ( eqn , f . forward )))
Um Operator
gera código de baixo nível a partir de uma coleção ordenada de Eq
(o exemplo acima é para uma única equação). Este código também pode ser compilado e executado
>> > op ( t = timesteps , dt = dt )
Praticamente não há limite para a complexidade de um Operator
– o compilador Devito analisará automaticamente a entrada, detectará e aplicará otimizações (incluindo paralelismo de nó único e multinó) e, eventualmente, gerará código com loops e expressões adequadas.
Os principais recursos incluem:
A maneira mais fácil de experimentar o Devito é através do Docker usando os seguintes comandos:
# get the code
git clone https://github.com/devitocodes/devito.git
cd devito
# start a jupyter notebook server on port 8888
docker-compose up devito
Após executar o último comando acima, o terminal exibirá uma URL como https://127.0.0.1:8888/?token=XXX
. Copie e cole este URL em uma janela do navegador para iniciar uma sessão de notebook Jupyter onde você pode seguir os tutoriais fornecidos com Devito ou criar seus próprios notebooks.
Veja aqui instruções detalhadas de instalação e outras opções. Se você encontrar algum problema durante a instalação, consulte os problemas de instalação que vimos no passado.
Para aprender a usar o Devito, aqui está um bom lugar para começar, com muitos exemplos e tutoriais.
O site também fornece acesso a outras informações, incluindo documentação e instruções para nos citar.
Algumas perguntas frequentes são discutidas aqui.
Se você estiver interessado em algum dos seguintes
então você deve dar uma olhada neste README.
Se você estiver usando o Devito, gostaríamos de ouvir sua opinião. Esteja você enfrentando problemas ou apenas experimentando, participe da conversa.
O tutorial jupyter notebook está disponível interativamente no fichário público jupyterhub.