2017-05-24 8 views
1

ErlangでGPUアクセラレーションを可能にするパイプラインの概念を考えました。 APIはfun、バイナリ、いくつかのフラグを取る高階関数から成り、BEAMバイトコードのランタイムチェックを行い、funをOpenCLにコンパイルして結果をキャッシュし、高次関数と同様に動作するかどうかを調べるlistsモジュール楽しみがOpenCLに変換できない場合、プロセスは失敗します。BEAMのハードウェアアクセラレーションパイプラインの作成

コンプリストはメモリ内で連続して表現されないため、すべての操作がバイナリ上で実行されるため、GPUメモリとの間で移動させるための多くの作業につながります。バイナリを浮動小数点数、倍精度整数、整数または混合として解釈し、楽しいためにさまざまなサイズの入力と出力を持つオプションがあります。 BEAMをハックすることなく純粋なErlangやCでこれを行うことは可能ですか?そうであれば、関連するリソースへのリンクが評価されます。

答えて

1

erlang:fun_info/1は、ASTを含むタプル{env, ...}を含むリストを返します。私はこのstoを利用して自分のOpenCLコードを作成し、既存のOpenCLバインディングを使用して、純粋なErlangのwhileパイプラインをカバーするキャッシュのためにgen_serverのETSテーブルを使用します。

関連する問題