Stereo Matching using OpenCL

上一篇的OpenCL版本,速度快了不少,但是顯卡會 freeze ....修改 TDR Level 讓 driver可以跑久一點

 

code

Continue reading "Stereo Matching using OpenCL"

OpenCL Box Filtering

一個很 tricky 的點跟 CPU 計算不一樣,這邊如果把 main.cpp 呼叫 kernel 的 devBy 全部換成 devBx,在 thread 數不超過顯卡 core 負荷時(也就是一個 round 可以跑完 kernel ),結果是不會變的。可以嘗試在大圖需要多個 round 才能跑完 kernel 時就會出錯。

其實因為所有 thread 同步 inplace filtering 寫入關係,當寫入任一點時其他點的 source 已經不會需要再用到,所以不會有 propagate 的問題

讀寫檔案使用 OpenCV,減少 memory access 次數所以 x 和 y 方向 filtering 分開

Continue reading "OpenCL Box Filtering"

OpenCL baby step using mingw

Headers & Document

Khronos OpenCL Registry

GitHub (C headers)

C++ wrapper (OpenCL 2.x)

C++ wrapper (OpenCL 1.x)

Library

Nvidia

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\Win32\OpenCL.lib

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64\OpenCL.lib

my nvidia develop pack

Compile yourself

OpenCL-ICD-Loader

Binary

Included in AMD or Nvidia Driver

Note

  1. Nvidia only support OpenCL 1.2, AMD OpenCL 2.x
  2. No useful debugger like Nvidia Nsight. Use printf.
  3. Cross paltform intermediate language SPIR.

 Example

Continue reading "OpenCL baby step using mingw"

OpenCV OpenCL example using UMat

重點在於 shader code 必須是固定的,如果 filter kernel 一直改變,估計在 runtime 重新 compile shader 的時間會成為瓶頸。