2013-06-11 6 views
5

I レンダスクリプトの設計は、私が実行しているプロセッサについての事実を隠すことですが、GPUコンピューティング対応デバイスにコードを書く方法はありません、Nexus 10)、 GPUで動作しますか?スクリプトの機能がGPU上で実行されていることを伝える方法はありますか?レンダスクリプトとGPU

www.leapconf.com/downloads/LihuaZhang-MulticoreWare.pdfは、グローバルを使用しないと再帰を使用せず、カーネル内のどこでもrsDebugを呼び出さないことを示しています。 GPU。あれは正しいですか?

私は人々が何らかの形で検証した簡単なスクリプトが純粋に計算ベースのタスク(例:グラフィックスの作業なし)としてgpu上で実行されるのを見たいと思っています。

+0

私はAndroidが暗すぎるところにあまりに多くのものを残していると思うので、この質問は実際にはより多くのupvotesに値する。 – rsp1984

答えて

2

一般に、Nexus 10の動作に関するこれらの主張は正しいです。 RSランタイム関数のいくつか(たとえば、rsGetAllocationを呼び出さないでください)を呼び出して、CPUに関数を実行させる他のいくつかのことがあります。しかし、私は、割り当てやバインドされていないポインタは大丈夫だと思います。

今後、これらの制限が緩和されます(グローバルは大きなものです)。

カーネルがどこで実行されているかを見てみると、4.2でそれを把握することはあまりありません。私たちはまだそれを行う魅力的な理由は見ていないが、これが本当に重要であることが判明した場合、それはsystraceのようなものを介してあまりにも多くの困難なしに追加できるものである。 「なぜGPU上でコードがより高速に動作することが想定されているか」を超えて、それがあなたを傷つけている理由を実証することができれば、私たちに不平を言うことは自由です。

ImageProcessing(fw/base/tests/RenderScriptTests/ImageProcessing /)のMandelbrotの実装が4.2のGPUで動作することは間違いありません。

+0

Tim、元の質問でAndroid 4.3のステータスを更新することはできますか? – rsp1984

+1

グローバルアロケーションにアクセスし、GetElementAtとSetElementAtを使用しても、Nexus 10を実行している大部分の状況で、4.3で動作するカーネルがCPU上で実行されることはありません。 USAGE_SHAREDにはいくつかの制限がありますが、それはCPUに落ちるよりも潜在的なコピーオーバーヘッドです。 –

+0

要素(またはスレッド?)が隣接要素データにアクセスするとどうなりますか?それはgpuで実行できますか? –