Devito — это пакет Python для реализации оптимизированных вычислений трафаретов (например, конечных разностей, обработки изображений, машинного обучения) на основе символических определений задач высокого уровня. Devito основан на SymPy и использует автоматическую генерацию кода и своевременную компиляцию для выполнения оптимизированных вычислительных ядер на нескольких компьютерных платформах, включая центральные процессоры, графические процессоры и их кластеры.
Devito предоставляет функциональный язык для реализации сложных операторов, которые могут состоять из множества трафаретных вычислений, граничных условий, разреженных операций (например, интерполяции) и многого другого. Типичный вариант использования — явные методы конечных разностей для аппроксимации уравнений в частных производных. Например, оператор двумерной диффузии может быть реализован с помощью Devito следующим образом:
>> > 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 )))
Operator
генерирует низкоуровневый код из упорядоченного набора Eq
(пример выше относится к одному уравнению). Этот код также может быть скомпилирован и выполнен
>> > op ( t = timesteps , dt = dt )
Сложность Operator
практически не ограничена — компилятор Devito автоматически анализирует входные данные, обнаруживает и применяет оптимизации (включая одно- и многоузловой параллелизм) и в конечном итоге генерирует код с подходящими циклами и выражениями.
Ключевые особенности включают в себя:
Самый простой способ попробовать Devito — через Docker, используя следующие команды:
# 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
После выполнения последней команды выше терминал отобразит URL-адрес, например https://127.0.0.1:8888/?token=XXX
. Скопируйте и вставьте этот URL-адрес в окно браузера, чтобы начать сеанс блокнота Jupyter, где вы сможете просмотреть учебные пособия, предоставляемые Devito, или создать свои собственные блокноты.
Подробные инструкции по установке и другие варианты см. здесь. Если вы столкнулись с проблемой во время установки, ознакомьтесь с проблемами установки, которые мы видели в прошлом.
Чтобы научиться использовать Devito, вот хорошее начало с множеством примеров и учебных пособий.
Веб-сайт также предоставляет доступ к другой информации, включая документацию и инструкции по цитированию нас.
Некоторые часто задаваемые вопросы обсуждаются здесь.
Если вас интересует что-либо из следующего
тогда вам следует взглянуть на этот README.
Если вы используете Devito, мы хотели бы услышать ваше мнение. Если вы столкнулись с проблемами или просто пробуете это, присоединяйтесь к разговору.
Учебный блокнот Jupyter доступен в интерактивном режиме в общедоступной папке jupyterhub.