陰的時間離散化を用いたcudaおよび数値解法


10

(時間の離散化のために)IMPLICIT形式の有限体積法によって偏微分方程式(PDE)のセットを解決するコードを移植したいと考えています。

その結果、ADI / TDMAスキームで処理されるx、y、z方向の3重対角方程式系があります。

CUDAを使用したPDEの暗黙的な解決策については、何も見つからないようです。

ADI / TDMAスキームはCUDAで実装できますか?2D熱拡散方程式のような例はどこかにありますか?

私が見つけることができるのは、有限差分であるがEXPLICIT形式(ケンブリッジ大学)の2D熱拡散方程式のCUDAサンプルコードだけです。

ヒント/リファレンスをいただければ幸いです。


2
どのようなPDEを使用していますか?これは線形、非線形ですか?システム全体が三重対角線ですか?(「x、y、z方向の3重対角線」の意味がわかりません)。一般に、内積のグローバル化と不規則な通信のため、スパースソルバーまたは反復ソルバーをGPUに実装することは困難です(ただし、これが三重対角線である場合、通信はそれほど問題にはなりません)。編集:了解しました。ADIをググって、自分の前で使ったことはありません。三重対角ソルバーのクイックグーグルはこれを発見しました:Impact.crhc.illinois.edu/shared/papers/sc12_tridiagonal-1.pdf
Reid.Atcheson

リンクありがとうございます。PDEは、運動量、質量、エネルギーの保存方程式に基づいているため、強く結合しており、非線形です。Nikolai Sakharnykh氏はすでにそれを行っているようです。ここに興味のある人へのリンクがあります:nvidia.com/content/GTC/documents/1058_GTC09.pdf。ただし、サンプルコードが見つからない場合は、本当に役立ちます。
Khine 2013年

2
SOで重複する投稿を削除するか、ここで移行するように依頼してください。
David Ketcheson、2013年

回答:


1

この問題は、高度にベクトル化された形式に役立ちます。お気づきのように、ADIメソッドは、3対角システムのいくつかのステップを与えます。これは線形方程式の形式であるため、CUsolverCUblasを使用して、標準の線形代数ルーチンの並列GPUバージョンを呼び出すことができます。これらを使用して、明示的なコードを取得し、内部ループを適切なCUsolver呼び出しに変更して、コードがCPU実装とほとんど同じように見える方法で解決する必要がありますが、GPUで行列演算を実行すると、ライブラリ呼び出し。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.