今日の大規模な並列処理ユニットは、セルオートマトンを効率的に実行できますか?


20

最近のグラフィックカードで提供されている超並列計算ユニット(たとえばOpenCLでプログラム可能なもの)は、1Dセルラーオートマトン(または2Dセルラーオートマトン?)

チップのメモリ内に収まる有限グリッドを選択した場合、このグリッドで定義されたセルオートマトンの1つの遷移が(準)一定時間で計算されることを期待できますか?

2Dセルラオートマトンは、1Dオートマトンよりもチップの異なる部分間の通信に必要な帯域幅が多いと思います。

FPGAプログラミングやカスタムチップの場合も同じ質問に興味があります。


たぶん、同じセルオートマトンを通常の方法でシミュレートする「同等の」チップと比較するほうがより関連性があるでしょう。(通常のVon Newmannモデルでセルをメモリに保存)
jmad

良い質問。GPUでどのようなアルゴリズムがうまく機能するのかわからないので、答えを楽しみにしています。
ラファエル

1
FPGAにもかかわらず、exp probsはexp probsです。おそらくここここに関連ています

回答:


7

素晴らしい質問です。答えはイエスだと思います。

セルオートマトンの進化は、基本的にステンシル計算の実行と同等です。一部の1D、2D、または3Dグリッドでは、ポイント(またはセル)の連続値は、ポイントの近傍の最後の値に基づいて計算されます。単純な1D CAでは、この近傍がセルであり、左右に2つのセルがある場合があります。GPUで実行されるステンシル計算の例は多数あります。ORNLのOpenCL / CUDA用SHOCベンチマークスイートには、たとえば2Dステンシルの例が含まれています。

基本的な考え方は、各スレッドが複数のポイントの近傍のローカルコピーを取得し、その近傍によって決定されるポイントの次の値を計算することです。CUDA(レジスタ、共有、定数、テクスチャ、およびグローバルメモリ)などのメモリ階層とSIMT処理モデルを適切に使用することにより(たとえば、過度のワープ発散を引き起こすことなく遷移関数を適切に計算することにより)、良好なパフォーマンスを実現できます。

この答えは例を挙げればもっと良いでしょうが、今はコードを書くのに忙しすぎます...しかし理論的には、ステンシルの後にモデル化することでGPUでCAを効率的にシミュレートすることは実行可能だと思います計算。ただし、GPU用の優れたステンシル計算の作成には多くの考慮事項があります。


5

何をするにしても、セルオートマトンの次の状態の計算は、オートマトン内のセルよりも多くの計算を要求します。したがって、一定の時間を得るには、セルと同じ数のコンピューティングコアが必要です。

GPUのこれらの数は現在最大で数千ですが、次の状態の計算は非常に単純であるため、結果はIOバウンドであると予想されます。つまり、データの移動が必要です(適切な近似ではない場合、実装の効率が悪いか、アーキテクチャが適切ではありませんが、それは非常に驚くべきことです)。

FPGAの場合、質問はより難しく、おそらく利用可能なメモリと計算ユニットの組み合わせに依存します。私があまり遠くないなら、あなたはすべてのユニットをビジーに保つのに十分なメモリを持っていませんし、外部メモリに依存しているならGPUと同じ席にいます、メモリ帯域幅は制限要因になりますGPUに勝る利点がないという結論に至った場合は驚かれることでしょう。(私はFPGAで作業してきましたが、それは数年前でしたが、適切な組み合わせのFPGAモデルが存在する可能性があることに注意してください)。

ASICはより柔軟性があります。シストリックを簡単に実装できます(ただし、双方向データフローでは、一部のシストリックは通常単方向データフローに制限されます)。各物理セルは1つの論理セルです。メモリのビットと、次の状態を計算するために必要なロジック物理的な隣人であるように、論理的な隣人です。あなたは明らかに一定の時間領域にいます。所有しているハードマクロによっては、少しわかりにくくなり、いくつかの論理的なマクロを再グループ化する物理セルを持つ方がよい場合があります。目的は、1つのチップで行われることを最大化することです。つまり、通信の必要性がセルの数に比例するとすぐに、チップの外部との通信を最小化して、帯域幅が制限されます。はい、つまり、各ステップのすべてのセルを見る必要がある場合、あなたはおそらくGPUよりもそれほど良くはありません。(完全なカスタムでは、より良い統合、つまりチップあたりのセル数の増加のみ)。

要約:-すべての中間状態を確認したい場合、GPUが最も効果的なアプローチです-そうでない場合、ASICがより良い何かを持っていることを正当化するボリュームが必要です。持っている


2

最近のグラフィックカードに用意されている超並列計算ユニットは、1Dセルラーオートマトン(または2Dセルラーオートマトン?)を効率的にシミュレートするのに十分であるかと思います。

非常に一般的であるため、はいGPUコンピューティングは、すべての人が利用できる標準ハードウェアの最良の選択肢です。

O1nPnPO1

FPGAとASICの側面では、物理CAを、すべてが隣接する状態で接続された状態を持つ論理ゲートのグリッドとして構築する研究があることを知っています。すなわち、シストリック配列。これは、グローバルメモリを使用せずに、グリッド内の各ノードの状態に依存するという考え方です。このタイプのマシンは、CAをシミュレートするコンピューターについて話すのをやめ、コンピューターとして実行されているCAについて話すことができるようになったため、革新的です(一部のCAはチューリング完了です)。

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