アンドロイド(https://play.google.com/store/apps/details?id=cv.cvExperiments)用の画像処理アプリケーションを、JNIでラップされたいくつかのC++コードで作成しました。マルチコアプロセッサで高速化するために、高価なループにopenmpの "parallel for"ディレクティブを付け加えました。AndroidでのOpenMPのパフォーマンス低下を改善するには?
問題は、x86では4cores procでx3からx5までのいくつかのスピードアップが得られるが、AndroidではOpenMP(-fopenmp)を起動するとARM32bitsで速度が上がらず、コードも遅くなる64ビットのarmv8スナップドラゴンで810.
私は何かを見逃しましたか?誰もx86 CPUに匹敵するアンドロイド+アームのスピードアップを観察することができましたか?
インターネット上でOpenMPをアクティブにする方法については多くのチュートリアルがありますが、スピードアップを示すベンチマークはありません。任意のポインタ? (小さなベンチマーク後 https://wiki.linaro.org/WorkingGroups/Middleware/Graphics/GPGPU/Docs/OpenMPforARMv8PortAnalysis
おかげで、 マチュー
これを試しましたか? http://stackoverflow.com/a/28348062/3409441 – Terran
はい、私はこの方法でopenmpを有効にしましたが、問題はループが遅くなることです。 –
コードなしで何が起こっているのかを伝えるのは難しいです。従来のマルチスレッドを試して、それが高速化をもたらすかどうかを確認してください。 – Terran