Devito est un package Python permettant d'implémenter un calcul de pochoir optimisé (par exemple, différences finies, traitement d'image, apprentissage automatique) à partir de définitions de problèmes symboliques de haut niveau. Devito s'appuie sur SymPy et utilise la génération automatisée de code et la compilation juste à temps pour exécuter des noyaux de calcul optimisés sur plusieurs plates-formes informatiques, notamment les processeurs, les GPU et leurs clusters.
Devito fournit un langage fonctionnel pour implémenter des opérateurs sophistiqués qui peuvent être constitués de plusieurs calculs de pochoirs, de conditions aux limites, d'opérations éparses (par exemple, interpolation) et bien plus encore. Un cas d'utilisation typique est celui des méthodes explicites de différences finies pour approximer les équations aux dérivées partielles. Par exemple, un opérateur de diffusion 2D peut être implémenté avec Devito comme suit
>> > 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 )))
Un Operator
génère du code de bas niveau à partir d'une collection ordonnée d' Eq
(l'exemple ci-dessus concerne une seule équation). Ce code peut également être compilé et exécuté
>> > op ( t = timesteps , dt = dt )
Il n'y a pratiquement aucune limite à la complexité d'un Operator
: le compilateur Devito analysera automatiquement l'entrée, détectera et appliquera les optimisations (y compris le parallélisme à un et plusieurs nœuds) et générera éventuellement du code avec des boucles et des expressions appropriées.
Les principales fonctionnalités incluent :
Le moyen le plus simple d'essayer Devito consiste à utiliser Docker en utilisant les commandes suivantes :
# 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
Après avoir exécuté la dernière commande ci-dessus, le terminal affichera une URL telle que https://127.0.0.1:8888/?token=XXX
. Copiez-collez cette URL dans une fenêtre de navigateur pour démarrer une session de bloc-notes Jupyter où vous pourrez parcourir les didacticiels fournis avec Devito ou créer vos propres blocs-notes.
Voir ici pour les instructions d'installation détaillées et d'autres options. Si vous rencontrez un problème lors de l'installation, veuillez consulter les problèmes d'installation que nous avons rencontrés dans le passé.
Pour apprendre à utiliser Devito, voici un bon point de départ, avec de nombreux exemples et tutoriels.
Le site Web donne également accès à d’autres informations, notamment à la documentation et aux instructions pour nous citer.
Certaines FAQ sont abordées ici.
Si vous êtes intéressé par l'un des éléments suivants
alors vous devriez jeter un œil à ce README.
Si vous utilisez Devito, nous aimerions avoir votre avis. Que vous soyez confronté à des problèmes ou que vous essayiez simplement de le faire, rejoignez la conversation.
Le didacticiel Jupyter Notebook est disponible de manière interactive sur le classeur public jupyterhub.