2016-10-16 8 views
1

C++コードの一部であるステンシル計算にHalideを使用しようとしています。 C++で定義されたデータ構造を指すバッファを使用します。私は自分のコードの実行をタイムリーにしたいので、コンパイル時ではなく実行時に時間を取れるようにAOTコンパイルを使用しようとしています。 AOTコンパイルを使用するときに入力用の引数型のベクトルを宣言するときに、バッファを使用する方法はありますか? そうでない場合は、Halideを使用するときに実行をただちに行う他の方法はありますか?Halide AOTコンパイル

答えて

1

バッファはAOTコンパイル済みコードで使用できます。それらを引数ベクトルに入れると、生成された関数の引数になります。それらを残しておくと、生成されたオブジェクトファイルに定数配列として埋め込まれます。ここではAOTコンパイルのチュートリアルです:

http://halide-lang.org/tutorials/tutorial_lesson_10_aot_compilation_generate.html http://halide-lang.org/tutorials/tutorial_lesson_10_aot_compilation_run.html

+0

私はそのチュートリアルに従っています。バッファをAOTコンパイルの引数として使用するかどうか、サイズをどのように指定すればいいですか?私が使用すると、私が作業するサイズを渡し、入力バッファが使用されると(チュートリアルのように)、エクステントを設定します。 AOTコード用のバッファではどのように動作しますか?ありがとうアンドリュー –

0

「compile_jit」方法は、コンパイルが起こることを引き起こすためにパイプラインで呼び出すことができます。同じFuncをメソッドの "実現"または "評価"を介して呼び出すことができます。これにより、JITを使用している間に実行時間とコンパイル時間が分離されます。とにかくあなたのアプリケーションでそれを使うつもりならば、AOTが望ましいでしょうが、テストや単純なベンチマークのためにJITを使っているのであれば、compile_jitテクニックは役に立ちます。

(タイミ​​ングループからホスト/ GPUバッファ転送を分離する際にいくつかの問題がありますが、GPUの実行がタイミングループに関して非同期でないことを保証します)これをカバーすることはもう少し複雑ですここでそれが関係していると思います)。

関連する問題