OpenCL核心函式支援double和結構體

2021-07-03 02:26:32 字數 1043 閱讀 4800

在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...