在opencl開發中,有時需要保證精度,需要支援double型別,但是double型別在opencl標準裡面不是要求強制實現的,有些裝置支援,有些不支援,如果你的裝置支援的話,就需要在所有出現在double的最前面宣告如下:
#pragma opencl extension cl_khr_fp64: enable
但是這也有乙個問題,就是不能保證程式的可移植性,之前在編寫地形因子提取演算法時,在某些amd的顯示卡就不支援。
[cpp]view plain
copy
typedef
struct
strpcinfo;
那麼需要再主機端傳輸結構體引數,具體就是呼叫clsetkernelarg函式
[cpp]view plain
copy
status = clsetkernelarg(ckkernel,0,
sizeof
(strpcinfo),&stinfo);
這樣,核心函式中就可以使用double型別和結構體了
[cpp]view plain
copy
__kernel
void
rpcwarpkernel(
struct
strpcinfo rpcinfo,
__global double
*dbgeotrans,
__global unsigned short
* podatain,
intnwidthin,
intnheightin,
intnminrowin,
intnsrcheight,
__global unsigned short
* podataout,
intnwidthout,
intnheightout,
intnminrowout,
intnbandcount)
OpenCL核心函式中定義double型別變數
要在opencl的kernel函式中使用雙精度的變數,必須 在配置頁開啟 強制支援雙精度浮點 強制cl khr fp64 選項,即在kernel函式 定義前加上如下紅色部分那句話 pragma opencl extension cl khr fp64 enable kernel void templ...
OpenCL相關函式簡單封裝
在opencl程式設計中,很多時候需要初始化很多東西,比如查詢裝置,選擇計算裝置,初始化上下文,構建程式和編譯核心程式。如果每次都重寫寫一遍這些過程,就會感動很繁瑣,所以,我就簡單封裝了幾個函式,用於我的opencl程式設計中。關於從文字檔案構建opencl程式在opencl從文字檔案構建程式物件已...
OpenCL學習筆記(16) 浮點型函式
1.opencl的浮點函式將會被劃分為五類來分別討論 算數運算和取捨,比較,指數運算,三角運算,以及其他型別的函式。2。算術運算函式和取捨函式 大多數的數學函式都能計算乘積 商數以及餘數,大多數取捨函式都能接受float型數,然後返回小數部分為0的float型數 1 floatn fabs floa...