Devito 是一個 Python 包,用於根據高階符號問題定義實現最佳化的範本計算(例如,有限差分、影像處理、機器學習)。 Devito 基於 SymPy 構建,並採用自動程式碼生成和即時編譯在多個電腦平台(包括 CPU、GPU 及其叢集)上執行最佳化的計算核心。
Devito 提供了一種函數式語言來實現複雜的運算符,這些運算符可以由多個模板計算、邊界條件、稀疏運算(例如內插)等組成。一個典型的用例是用於逼近偏微分方程的顯式有限差分方法。例如,2D 擴散算子可以用 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,這裡是一個很好的起點,其中有許多範例和教學。
該網站還提供其他資訊的訪問,包括引用我們的文件和說明。
這裡討論了一些常見問題。
如果您對以下任何一項感興趣
那你應該看看這個自述文件。
如果您正在使用 Devito,我們希望收到您的來信。無論您遇到問題還是只是嘗試一下,都可以加入對話。
Jupyter Notebook 教學可在公共活頁夾 jupyterhub 上以互動方式取得。