株式会社 ITAGE GPU活用による CPU負荷低減事例 AGENDA CPU負荷の低減事例 for linux ・はじめに ・Camera映像表示へのGPU活用 ・Camera映像表示へのGPU活用_FullHD対応 ・ShaderEffects ・Camera Direct Preview機能のご紹介 ・GPGPU(OpenCL)による画像認識 ・NEONによる画像認識 はじめに i.MX6 seriesの搭載GPU Unit Solo Lite SoloX Solo DualLite Dual Quad Dual Plus/QuadPlu s GPU3D - GC400T 27M Tri/s, 133 Mpxl/s GC880 Open GLES 2.0 53M Tri/s, 266 Mpxl/s Vivante GC2000 •176Mtri/s •1000Mpxl/s • OpenGL ES 1.1/2.0/3.0 •OpenCL 1.1 EP Vivante GC2000 •176Mtri/s •1000Mpxl/s •OpenGL ES 1.1/2.0/3.0 •OpenCL 1.1 EP GPU2D GC320 GC400T (600Mpxl/s) GC320 (600Mpxl/s) GC320 (600Mpxl/s) GC320 (600Mpxl/s) GPU活用事例 ・GPUによる画像補正 - 歪曲補正 - 台形補正 - Color Conversion(YUV->RGB) - De-Interlacing - Framerate Conversion - Constrast補正 - Brightness補正 - gamma補正 - 各種Effect ・その他 CPUとの並列化(一般的にはGPGPUなど) Camera映像表示へのGPU活用 CAMERA映像表示へのGPU活用(HARDWARE) i.MX6 solo Sabre AI(Automotive Infotainment) Fact sheet: http://www.nxp.com/files/32bit/doc/fact_sheet/IMX6SABREAIFS.pdf?fasp=1&WT_TYPE =Fact%20Sheets&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Do cumentation&fileExt=.pdf Camera: アイティーエス ITC-510H 960H 48万画素ドームカメラ http://www.its-tokyo.co.jp/cctvcamera/domecamera/itc-510h/itc-510h.html CAMERA映像表示へのGPU活用(ソフトウェア) Portabilityの高いI/FによるGPU活用事例 Camera映像表示Application(v4l2+EGL1.4/OpenGLESv2.0を使用) cmp ソ フ トウェ ア 概要 Application Demo Application Graphics Backend Serverは、 FBを使用 (他にX11, waylandが選択可能) Captureには V4L2を利用 Middleware/Libraries <<use>> libEGL.so <<use>> libGLESv2.so <<use>> <<use>> libGAL.so <<use>> <<use>> galcore(Vivante Kernel Driver) <<use>> <<use>> <<interface>> IOCTL <<use>> Kernel imx-fb(Framebuffer driver for imx) Linux (kernel 3.14.52) mxc_v4l2_capture (Capture Driver for imx) CAMERA映像表示へのGPU活用(FLOW) Camera映像表示Flow a ct C a p t ureAp p 開始 Initialize V4L2 glTexImage2D() Initialize EGL Capture thread GPU thread 開始 開始 Set Texture Decode済イメージ のCopy Allocate Stream Buffer Stream ON Initialize GLESv2.0 Draw <<flow>> Start Capture thread Start GPU thread QUIT? フロー終了 Deque Buffer Set Texture from Stream Buffer Que Buffer QUIT? QUIT? Stream OFF 終了 フロー終了 CAMERA映像表示へのGPU活用(性能) Frame rate: Camera Input 720x480: LCD Output 720x480: CPU rate(App. Process): MMDC profile 30 FPS 25.0833 FPS 28.5% Read(MB/s) Write(MB/s) Total(MB/s) Utilization(%) Bus Load(%) CPU 101.68 45.79 147.48 6 72 GPU3D 62.53 63.29 125.82 5 72 汎用的なI/Fの場合、Decodeしたimageに対して、GPUが扱うTexture領域へCPU copyが行われるた めCPU負荷はまだ高い状態 参考:Camera Capture停止時 Read(MB/s) Write(MB/s) Total(MB/s) Utilization(%) Bus Load(%) CPU 0.68 0.05 0.73 0 19 GPU3D 0 0 0 0 0 CAMERA映像表示へのGPU活用(低減化) i.MX6(Vivante GC2000/GC880) 独自拡張機能を使用 GL_VIV_direct_texture - 直接Access可能なTexture生成に対応. - YUVformat Textureに対応. glTexDirectVIV() - GPUから参照可能なTexture用memory領域を取得するAPI glTexDirectVIVMap() - 連続論理(物理)memoryをTexture memoryとしてMAPするAPI glTexDirectInvalidateVIV() - Texture用memoryのUPDATEをGPUドライバに通知するAPI 参照:“iMX6_EGL-OES_Extension_Support.pdf” - BSP内のdocument CAMERA映像表示へのGPU活用(VIVANTE EXTENSION) Camera映像表示Flow(Vivante extension使用) a ct C a p t ureAp p 開始 Initialize V4L2 glTexDirectVIV Map() Initialize EGL Capture thread GPU thread 開始 開始 Set Texture Decode済イメージ のCopy(Copy less) Allocate Stream Buffer Stream ON Initialize GLESv2.0 Draw <<flow>> Start Capture thread Start GPU thread QUIT? フロー終了 Deque Buffer Set Texture from Stream Buffer Que Buffer QUIT? QUIT? Stream OFF 終了 フロー終了 CAMERA映像表示へのGPU活用(性能) Frame rate: Camera Input 720x480: LCD Output 720x480: CPU rate(App. Process): MMDC profile 30 FPS 30 FPS 4.3% Read(MB/s) Write(MB/s) Total(MB/s) Utilization(%) Bus Load(%) CPU 51.00 40.20 91.21 4 61 GPU3D 76.14 84.98 161.13 8 62 Vivante extension利用により、CPU負荷が大幅に低減 参考:汎用I/F使用時 Frame rate: Camera Input 720x480: LCD Output 720x480: CPU rate(App. Process): 30 FPS 25.0833 FPS 28.5% Read(MB/s) Write(MB/s) Total(MB/s) Utilization(%) Bus Load(%) CPU 101.68 45.79 147.48 6 72 GPU3D 62.53 63.29 125.82 5 72 CAMERA映像表示へのGPU活用_FULLHD対応(HARDWARE) i.MX6 DL Sabre SDP(Platform for Smart Devices) Fact sheet: http://www.nxp.com/files/32bit/doc/fact_sheet/RDIMX6SABREPLATFS.pdf?fasp=1&WT _TYPE=Fact%20Sheets&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASS ET=Documentation&fileExt=.pdf Camera: Sabre SDP embedded mipi-csi CAMERA映像表示へのGPU活用_FULLHD対応 Frame rate: Camera Input 1920x768: LCD Output 1920x768: CPU rate(App. Process): MMDC profile 30 FPS 8.85294 FPS 3.8% Read(MB/s) Write(MB/s) Total(MB/s) Utilization(%) Bus Load(%) CPU 4.48 0.25 4.73 0 40 GPU3D 118.67 111.75 230.42 9 40 画像補正した場合、FullHD30FPS入力に対して、FullHD30FPS出力が間に合っていない 画像補正なしの場合は、30FPS出力可能 参考:720x480対応時 Frame rate: Camera Input 720x480: LCD Output 720x480: CPU rate(App. Process): 30 FPS 30 FPS 4.3% Read(MB/s) Write(MB/s) Total(MB/s) Utilization(%) Bus Load(%) CPU 4.45 0.25 4.70 0 61 GPU3D 76.14 84.98 161.13 8 62 CAMERA映像表示へのGPU活用_FULLHD対応 Frame rate: Camera Input 1920x768: LCD Output 720x480: CPU rate(App. Process): MMDC profile 30 FPS 30 FPS 4.45% Read(MB/s) Write(MB/s) Total(MB/s) Utilization(%) Bus Load(%) CPU 12.43 0.55 12.98 0 45 GPU3D 81.30 159.16 240.46 8 45 LCD出力を一部Clipping(720x480)することで、画像補正を行っても、 30FPS出力には対応可能 参考:FullHD to FullHD Frame rate: Camera Input 1920x768: LCD Output 1920x768: CPU rate(App. Process): 30 FPS 8.85294 FPS 3.8% Read(MB/s) Write(MB/s) Total(MB/s) Utilization(%) Bus Load(%) CPU 4.48 0.25 4.73 0 40 GPU3D 118.67 111.75 230.42 9 40 Shader Effects SHADER EFFECT 参考:Qt5 example Camera Direct Preview機能のご紹介 DIRECT PREVIEW機能のご紹介 i.MX6のIPUにはCamera Direct Preview機能があります。 Camera Direct Preview機能とは、Cameraからの入力映像を直接 LCDへ表示出来る機能です。 SW-HW同期の必要性がないため、CPU負荷がかかりませんが、 GPUほど汎用性の高い画像補正は行えません。 FB1:HMI Kernel Driver内でDirect Preview設定を行うことで、 実行結果 System起動時、Rootfsがマウントされる前にCamera映像を表示す ることが出来ます。 参照: iMX6-IPU.pdf FB0:Camera Leyer構成 GPGPU(OpenCL)による画像認識 GPGPU(OPENCL)による画像認識 i.MX6はGPGPU(OpenCL) APIサポート有 i.MX6Solo/DualLite(Vivante GC880) OpenCL Embedded Profile Support i.MX6Dual/Quad(Vivante GC2000) OpenCL Embedded/Full Profile Support ※the OpenCL can only use 1K local memory and 64byte memory cache local memoryが小さすぎて描画や画像を取り扱う処理には使用出来ない。 640x480 RGBのGray scale変換だけでも数秒必要 i.MX6solo OpenCV 3.1+OpenCL 1.1EP 参考URL: http://www.vivantecorp.com/index.php/en/technology/gpgpu NEONによる画像認識 OpenCV 3.0以降、OpenCV HALmoduleとして、 NEONのHardware Accelerationが使用可能となっています。 i.MX6にもNEONは搭載されていますので、 高速な画像認識がOpenSourceで容易に出来る可能性があります。 ITAGEにて評価中 SUMMARY CPU負荷の低減事例 for linux ・INTRODUCTION ・Camera映像表示へのGPU活用 ・Camera映像表示へのGPU活用_FullHD対応 ・ShaderEffects ・Camera Direct Preview機能のご紹介 ・GPGPU(OpenCL)による画像認識 ・NEONによる画像認識 御礼 ご清聴ありがとうございました。
© Copyright 2024 ExpyDoc