OpenCL是什么,查了半天沒看懂,能簡單明了的告訴我是干什么的有什么功能嗎
https://zhidao.baidu.com/question/319856420.html
推薦於2016-02-16 13:35:35
最佳答案
OpenCL和OpenGL是兩個不同的API。
OpenGL是3D API。
OpenCL是GPU通用運算API。
要理解什么是OpenCL,首先要明確一下什么叫API(應用程序接口)。
API是已經開發好的一些函數。
舉個簡單的例子。
比如編寫一個程序,其中有一個步驟要將運算的內容輸出到打印機上。那么為了這個步驟,得寫一大堆程序,包括如何調用打印機的驅動,為硬件分配I/O地址等等。相當繁鎖。
OK,現在這個程序寫好了,要開發第二個程序了。結果發現,第二個程序中,也有一個步驟是要把內容打印出來的。那么就沒必要再把程序重新寫一遍了,直接把第一個程序中這個函數復制過來就好了。
久而久之,大家干脆把一些常用的函數給獨立出來,就是API。這樣,所有軟件,無論是WORD、WPS、PHOTOSHOP還是其他軟件,都不需要費事單獨去寫這段代碼了,直接從API里調用就好。這樣一來,不僅開發過程簡化了,程序本身也更精練了。
那么OpenGL或DirectX是什么呢?是負責3D圖形處理的API,包括各種光照、紋理、煙霧、陰影等效果。程序員在開發游戲的時候,只要考慮什么時候、在哪個位置,加上什么樣的煙霧,就可以了。而不必考慮究竟要怎樣去編寫代碼,才能實現煙霧效果的問題。
OpenCL呢?是顯卡作通用浮點運算的API。比如視頻轉碼,原來這個工作都是CPU來做的。現在顯卡運算能力比較強,這個工作完全可以交給顯卡來做。那究竟怎樣調用顯卡呢?這個工作不需要再由程序員考慮了,因為已經有一個現成的接口了,程序員只要管好轉碼的算法,然后直接調用OpenCL中現成的指令,這個工作就自動由CPU轉交到GPU了。
說得有點復雜,也不是很嚴謹,但大概意思就是這樣的,不知道題主看明白了沒。
