31

プラットフォームの独立性 (デスクトップ、クラウド、モバイルなど) については、速度が重要な場合に GPGPU 開発に OpenCL を使用することをお勧めします。Google が RenderScript を代替手段としてプッシュしていることは知っていますが、これは Android でのみ利用可能であり、iOS に含まれる可能性は低いようです。

したがって、Android アプリ内で OpenCL コードを実行するソリューションを探しています。

4

8 に答える 8

14

私が知っている Android デバイスで OpenCL をサポートしているのは、Mali T600 ファミリのチップをベースにしたものだけです (記事はこちら)。OpenCL SDKがあります。どうやらOpenCL 1.1のフルプロファイルでもあるようです。

Nexus 10はそんなチップを使った端末です。Samsung Exynos 5 デュアル SoC は Mali T604 を使用するため、これを使用していると思われるものはすべて Mali T600 OpenCL SDK で使用できます (自分でこれを試したことはありません)。

OpenCL ブログの著者はこれを試してみようとしているので、彼の一連の記事に従う価値があるかもしれません。

しかし、Android での OpenCL サポートはまったく新しい (2013 年 2 月 16 日現在) ため、実験には最適ですが、サポートが増えるまでは慎重になる価値があるかもしれません (OpenCL 1.1 の最初のサポートがどれほどバグがあるかを誰が言いますか)。

于 2013-02-16T02:04:51.177 に答える
13

最初の質問が出されてから時間が経ちましたが、これはまだ多くの開発者にとっての質問だと思います。

答えには2つの側面があります。まず、残念ながら、Google は OpenCL を正式にサポートしていません。

次に、幸いなことに、多くのチップ ベンダーが OpenCL をサポートするライブラリを提供しています。現時点では、フラグシップおよびミドル層のスマートフォン (Qualcomm Adreno GPU、ARM Mali GPU、または Imagination PowerVR GPU を搭載) のほとんどに OpenCL ライブラリが含まれています。

Android で OpenCL を使用するには、いくつかの手順があります。

  1. デバイスに OpenCL ライブラリがあるかどうかを確認します。これは、 OpenCL-Z Androidを使用して実行できます。これは、Android デバイスでの OpenCL の可用性を確認するための優れたツールであり、生のコンピューティング パフォーマンス メトリックも提供するため、非常に役立ちます。

主要なチップ ベンダーの OpenCL ライブラリは、デバイス内にあります。 OpenCL ライブラリの場所は次のとおりです。

クアルコムアドレノ:

/system/vendor/lib/libOpenCL.so
or /system/lib/libOpenCL.so (older devices)

ARM マリ:

/system/vendor/lib/egl/libGLES_mali.so
or /system/lib/egl/libGLES_mali.so

パワーVR:

/system/vendor/lib/libPVROCL.so
  1. C または C++ を使用して OpenCL プログラムを記述します。

  2. NDK プロジェクトを作成して C/C++ コードをコンパイルし、デバイス上で実行可能ファイルとしてテストします。

  3. NDK プログラム関数の JNI インターフェイスを作成します。

  4. Java コードで JNI 関数を使用して、OpenCL に関連するネイティブ関数を呼び出す Android プロジェクトを作成します。

sony のチュートリアルは、参照するのに適したソースです。そのチュートリアルで紹介されている手法は、どの Qualcomm Adreno GPU にも適用できます。最小限の変更で、そのコードとメイクファイルは他の OpenCL 対応デバイス (Mali や PowerVR など) でも実行できます。

お役に立てれば。

于 2015-04-14T18:32:19.600 に答える
5

Sony developer world で Android OpenCL のデモを確認してください。ソース付きの完全なプロジェクトでは、OpenCL で画像のバイラテラル フィルタリングが行われ、シングル スレッドの C 実装と比較されます。ソニーのデバイスなどでどのような種類のサポートが期待されているかについての情報も、この記事で見つけることができます。

論文:

OpenCL で Android アプリのパフォーマンスを向上

記事のソース:

OpenCl Android プロジェクトへのソース

免責事項: 私はソニーモバイルのコンサルタントです

于 2013-11-12T11:49:38.220 に答える
4

代わりにRenderScriptComputeを使用する必要があります:http: //developer.android.com/guide/topics/renderscript/compute.html

ライブラリ(または機能)がターゲットデバイスで使用できない可能性があるため、OpenCLの使用はあまり安全ではありません。正直なところ、Androidデバイスが実際にそれをサポートしているかどうかさえわかりません。デバイス上のGPUが実行したいプログラムを実行できない場合、RenderScriptはCPU計算にフォールバックします。

ただし、それでもOpenCLを使用したい場合は、 http: //www.pgroup.com/lit/articles/insider/v4n2a3.htmに役立つ可能性があります。

適切に制御するには、デバイス固有のSDK(nVidia Tegra SDKなど)が必要になる場合があります。

于 2012-07-12T12:52:25.463 に答える