1

renderscript では、このようなカーネルを呼び出します

foo.forEach_bar(out_array);

そして、次のようにパラメーターを割り当てに転送します。

in_array.copyFromUnchecked(array);

複数の異なるカーネルを呼び出すプログラムに取り組んでいます。カーネルのデータ転送を前のカーネルの計算とオーバーラップさせることはできますか? (つまり、GPU が前のカーネルで動作している間、次のカーネルのデータを転送することができます)

4

1 に答える 1

0

割り当てを介してカーネルを操作する場合、あるカーネルの出力割り当てを別のカーネルの入力割り当てとして使用できます。

複数のカーネルを順番に呼び出す場合、それらのカーネルは「実際の」非同期性ではないため、それらが「オーバーラップ」することを心配する必要はありません。それらは次々に実行されるため、以前の割り当て (たとえば、カーネルの出力として使用したもの) を再利用して、新しいカーネルの入力にすることができます。

「オーバーラップ」の概念は正確ではありません。割り当てはRAMメモリ内に保存されるため、そこから離れることはありません。これは、別のカーネルが、その内容を別の場所に転送する必要なく、同じメモリ割り当てにアクセスできることを意味します。

リファレンス: RenderScript: Android での並列計算、簡単な方法

于 2016-07-31T10:23:53.247 に答える