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
の順序付けされたコレクションから低レベルのコードを生成します (上記の例は 1 つの方程式に対するものです)。このコードはコンパイルして実行することもできます
>> > 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
上記の最後のコマンドを実行すると、ターミナルにhttps://127.0.0.1:8888/?token=XXX
などの URL が表示されます。この URL をコピーしてブラウザ ウィンドウに貼り付けると、Jupyter ノートブック セッションが開始され、Devito で提供されるチュートリアルを実行したり、独自のノートブックを作成したりできます。
詳細なインストール手順とその他のオプションについては、ここを参照してください。インストール中に問題が発生した場合は、過去に確認されたインストールの問題を参照してください。
Devito の使用方法を学ぶには、豊富な例とチュートリアルを備えたここから始めるのが良いでしょう。
このウェブサイトでは、文書や当社を引用するための指示など、他の情報へのアクセスも提供します。
ここではいくつかの FAQ について説明します。
以下のいずれかにご興味がございましたら、
それなら、この README を見てください。
Devito を使用している場合は、ご意見をお待ちしております。問題に直面している場合でも、単に試しているだけでも、会話に参加してください。
チュートリアル jupyter ノートブックは、パブリック バインダー jupyterhub で対話的に利用できます。