完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>
標簽 > OpenCL
OpenCL是一個為異構平臺編寫程序的框架,此異構平臺可由CPU,GPU或其他類型的處理器組成。OpenCL由一門用于編寫kernels (在OpenCL設備上運行的函數(shù))的語言(基于C99)和一組用于定義并控制平臺的API組成。
OpenCL(全稱Open Computing Language,開放運算語言)是第一個面向異構系統(tǒng)通用目的并行編程的開放式、免費標準,也是一個統(tǒng)一的編程環(huán)境,便于軟件開發(fā)人員為高性能計算服務器、桌面計算系統(tǒng)、手持設備編寫高效輕便的代碼,而且廣泛適用于多核心處理器(CPU)、圖形處理器(GPU)、Cell類型架構以及數(shù)字信號處理器(DSP)等其他并行處理器,在游戲、娛樂、科研、醫(yī)療等各種領域都有廣闊的發(fā)展前景。
基本信息
OpenCL是一個為異構平臺編寫程序的框架,此異構平臺可由CPU,GPU或其他類型的處理器組成。OpenCL由一門用于編寫kernels (在OpenCL設備上運行的函數(shù))的語言(基于C99)和一組用于定義并控制平臺的API組成。OpenCL提供了基于任務分割和數(shù)據(jù)分割的并行計算機制。OpenCL類似于另外兩個開放的工業(yè)標準OpenGL和OpenAL,這兩個標準分別用于三維圖形和計算機音頻方面。OpenCL擴展了GPU用于圖形生成之外的能力。OpenCL由非盈利性技術組織Khronos Group掌管。
OpenCL(全稱Open Computing Language,開放運算語言)是第一個面向異構系統(tǒng)通用目的并行編程的開放式、免費標準,也是一個統(tǒng)一的編程環(huán)境,便于軟件開發(fā)人員為高性能計算服務器、桌面計算系統(tǒng)、手持設備編寫高效輕便的代碼,而且廣泛適用于多核心處理器(CPU)、圖形處理器(GPU)、Cell類型架構以及數(shù)字信號處理器(DSP)等其他并行處理器,在游戲、娛樂、科研、醫(yī)療等各種領域都有廣闊的發(fā)展前景。
基本信息
OpenCL是一個為異構平臺編寫程序的框架,此異構平臺可由CPU,GPU或其他類型的處理器組成。OpenCL由一門用于編寫kernels (在OpenCL設備上運行的函數(shù))的語言(基于C99)和一組用于定義并控制平臺的API組成。OpenCL提供了基于任務分割和數(shù)據(jù)分割的并行計算機制。OpenCL類似于另外兩個開放的工業(yè)標準OpenGL和OpenAL,這兩個標準分別用于三維圖形和計算機音頻方面。OpenCL擴展了GPU用于圖形生成之外的能力。OpenCL由非盈利性技術組織Khronos Group掌管。
歷史發(fā)展
OpenCL最初蘋果公司開發(fā),擁有其商標權,并在與AMD,IBM,英特爾和nVIDIA技術團隊的合作之下初步完善。隨后,蘋果將這一草案提交至Khronos Group。2008年6月的WWDC大會上,蘋果提出了OpenCL規(guī)范,旨在提供一個通用的開放API,在此基礎上開發(fā)GPU通用計算軟件。隨后,Khronos Group宣布成立GPU通用計算開放行業(yè)標準工作組,以蘋果的提案為基礎創(chuàng)立OpenCL行業(yè)規(guī)范。5個月后的2008年11月18日,該工作組完成了OpenCL 1.0規(guī)范的技術細節(jié)。2010年6月14日,OpenCL 1.1 發(fā)布。2011年11月15日,OpenCL 1.2 發(fā)布。2013年11月19日,OpenCL 2.0發(fā)布。
支持現(xiàn)狀
2009年6月NVIDIA首家發(fā)布了支持OpenCL 1.0通用計算規(guī)范的驅動程序,支持Windows和Linux操作系統(tǒng)。2009年8月初AMD首次發(fā)布了可支持IA處理器(x86和amd64/x64)的OpenCL SDK——ATI Stream SDK v2.0Beta,立即交由業(yè)界標準組織KHRONOS進行審核。目前,該SDK更名為AMD APP SDK。2012年2月,intel發(fā)布了The Intel® SDK for OpenCL* Applications 2012,支持OpenCL 1.1基于帶HD4000/2500的顯示核心的第三代酷睿CPU(i3,i5,i7)。和GPU。2013年6月,intel發(fā)布了第四代酷睿CPU haswell 其內置的HD4600/4400/4200 Iris(銳矩)5000/5100/pro 5200(自帶eDRAM緩存)支持OpenCL 1.2(未來可能升級到OpenCL 2.0)NVIDIA顯卡方面 Geforce 8000\9000\100\200\300\400\500\600\700\800\900\1000均支持OpenCL 1.0-1.2AMD顯卡方面 Radeon HD 4000\5000\6000\7000\Rx 200\Rx 300\RX 480 均支持OpenCL 1.0-1.2,除Radeon HD4000系列外,其余均會支持OpenCL 2.0移動平臺方面目前高通adreno320/330提供了Android上的OpenCL1.1支持,NVIDIA的Tegra K1也提供了OpenCL 支持。
組織成員
OpenCL工作組的成員包括:3Dlabs、AMD、蘋果、ARM、Codeplay、愛立信、飛思卡爾、華為、HSA基金會、GraphicRemedy、IBM、Imagination Technologies、Intel、諾基亞、NVIDIA、摩托羅拉、QNX、高通,三星、Seaweed、德州儀器、布里斯托爾大學、瑞典Ume大學。[1] 像Intel、NVIDIA和AMD都是這個標準的支持者,不過微軟并不在其列。
使用介紹
目前,NVIDIA顯卡對OpenCL技術支持得比較到位,所以這里僅用NVIDIA的Geforce(精視)系列顯卡作解釋。中國用戶可以登錄英偉達中文官方網(wǎng)站上下載到最新的驅動程序,只要您下載的驅動是195.62版本或更高,就可以在Geforce(精視)8系列或更高級的顯卡中開啟OpenCL,在安裝好新版本的顯卡驅動程序并重新啟動后,OpenCL就自動開啟了。當有需要使用CPU來完成的工作如轉換視頻時,GPU就會幫助CPU進行運算,以提高轉換速度。但是在3D游戲中應該是不會調用OpenCL的,因為顯卡有自己的硬件加速功能以及物理引擎,所以Geforce(精視)8系列及以上的顯卡就不需要CPU輔助進行渲染了。這時候,您就可以一邊玩游戲,一邊進行消耗CPU的工作了。當然同樣,在NVIDIA的Quadro系列專業(yè)顯卡中,同樣能夠使用OpenCL技術。只要您的顯卡能夠達到CUDA的要求,就能夠正常使用OpenCL,以獲得優(yōu)異的CPU運算效率。在AMD-ATI的Stream技術中(現(xiàn)已經(jīng)改名為AMD APP并行加速技術),已經(jīng)為日常使用、辦公、游戲等提供物理加速。基于OpenCL標準開發(fā),其中,ATI Radeon HD 4000-5000、AMD Radeon HD 6000系列同時支持ATI Stream和AMD APP(由于Stream基于CAL和Brook+語言開發(fā),更適合VLIW5和VLIW4這樣的SIMD架構),AMD Radeon HD7000和Radeon Rx 200系列支持AMD APP,運算效率較老架構提升十分明顯。OpenCL 1.0OpenCL 1.0主要由一個并行計算API和一種針對此類計算的編程語言組成,此外還特別定義了:1、C99編程語言并行擴展子集;2、適用于各種類型異構處理器的坐標數(shù)據(jù)和基于任務并行計算API;3、基于IEEE 754標準的數(shù)字條件;4、與OpenGL、OpenGL ES和其他圖形類API高效互通。OpenCL 1.1Khronos Group2010年6月15日宣布,OpenCL通用計算標準的1.1版本已經(jīng)發(fā)放,開發(fā)者可以免費下載,并依照新標準開始進行編程。OpenCL 1.1標準向下兼容1.0版,提供了更多的新功能,并對性能進行了改善。主要新特性包括:- 支持新數(shù)據(jù)類型,如3維矢量和新增圖像格式。- 支持處理多Host指令以及跨設備Buffer處理。- Buffer區(qū)域操作,包括對1D、2D、3D三角形區(qū)域的讀、寫和拷貝操作。- 改進驅動和控制指令執(zhí)行的事件應用。- 增加OpenCL內建C功能。- 通過鏈接OpenCL和OpenGL事件,高效共享圖像和Buffer,改進與OpenGL的互操作性。OpenCL標準由Khronos Group的OpenCL工作組制定,完全開放,任何開發(fā)者都可免費使用。OpenCL工作組成員包括(英文首字母排序):3DLABS、動視暴雪、AMD、蘋果、ARM、Broadcom、CodePlay、EA、愛立信、飛思卡爾、富士通、通用電氣、GraphicRemedy、HI、IBM、Intel、Imagination Technologies、美國Los Alamos國家實驗室、摩托羅拉、Movidia、諾基亞、NVIDIA、Petapath、QNX、高通、RapidMind、三星、Seaweed、S3、意法半導體、Takumi、德州儀器、東芝和Vivante。OpenCL 2.0Khronos Group2013年11月19日宣布了OpenCL通用計算標準的2.0版本特性,其中對共享虛擬內存的支持是一大亮點(此前NVIDIA發(fā)布了CUDA 6規(guī)范也同樣支持共享虛擬內存,但目前僅限Kepler和Maxwell架構的N卡。此外,AMD的GCN架構顯卡同樣支持。AMD的Kaveri APU支持HSA異構計算和hUMA統(tǒng)一物理尋址,較虛擬共享更加先進。)1、共享虛擬內存主機和設備內核可以直接共享復雜的、包含指針的數(shù)據(jù)結構,大大提高編程靈活性,避免冗余的數(shù)據(jù)轉移。2、動態(tài)并行設備內核可以在無需主機交互的情況下進行內核排隊,實現(xiàn)靈活的工作調度,避免數(shù)據(jù)轉移,大大減輕主處理器的負擔。3、通用內存空間無需指定地址空間名稱即可為引數(shù)(argument)編寫函數(shù),不用再為程序里的每一個地址空間名稱編寫函數(shù)。4、圖像改進圖像支持,包括sRGB、3D,內核可以讀寫同一圖像。5、C11原子操作新的C11原子和同步操作子集,分配在同一工作組內6、Pipes以FIFO格式組織數(shù)據(jù)的內存對象,可以直接讀寫,數(shù)據(jù)結構可簡單編程、高度優(yōu)化。7、安卓可安裝客戶端驅動擴展安卓系統(tǒng)上可將OpenCL作為共享對象進行載入
框架組成
OpenCL平臺API:平臺API定義了宿主機程序發(fā)現(xiàn)OpenCL設備所用的函數(shù)以及這些函數(shù)的功能,另外還定義了為OpenCL應用創(chuàng)建上下文的函數(shù)。OpenCL運行時API:這個API管理上下文來創(chuàng)建命令隊列以及運行時發(fā)生的其他操作。例如,將命令提交到命令隊列的函數(shù)就來自OpenCL運行時API。OpenCL編程語言:這是用來編寫內核代碼的編程語言。它基于ISO C99標準的一個擴展子集,因此通常稱為OpenCL C編程語言。[2] 把上述單獨的部分匯集起來,形成OpenCL的一個全景圖,如下圖所示:
OpenCL全景圖首先是一個定義上下文的宿主機程序。如上圖中中的上下文包含兩個OpenCL設備、一個CPU和一個GPU。接下來定義了命令隊列。這里有兩個隊列,一個是面向GPU的有序命令隊列,另一個是面向CPU的亂序命令隊列。然后宿主機程序定義一個程序對象,這個程序對象編譯后將為兩個OpenCL設備(CPU和GPU)生成內核。接下來宿主機程序定義程序所需的內存對象,并把它們映射到內核的參數(shù)。最后,宿主機程序將命令放入命令隊列來執(zhí)行這些內核。
英特爾正式開源其專有的基于 CPU 的 OpenCL 運行時,首批開源代碼共 718,996 行。現(xiàn)在這個巨大的合并請求正在等待進入 Intel 的 L...
如何使用OpenCL架構工具實現(xiàn)嵌入式任務并行模式的開發(fā)
近幾年來,處理器從最求高性能轉向追求多內核。這種改變主要是由于量子效應(quantum effects)的作用難以實現(xiàn)高性能和低功耗的兼得,因而需要加速...
linux設備驅動模型一字符設備open系統(tǒng)調用流程
在Linux系統(tǒng)進程中,分為內核空間和用戶空間,當一個任務(進程)執(zhí)行系統(tǒng)調用而陷入內核代碼中執(zhí)行時,我們就稱進程處于內核運行態(tài)(內核態(tài))
Xilinx SDAccel開發(fā)環(huán)境在X86_64位工作站的運行情況
本視頻演示了SDAccel開發(fā)環(huán)境在一個標準X86_64位工作站上運行的情況,以展示其為您所帶來的生產(chǎn)力的提升;以及該開發(fā)環(huán)境對OpenCL,C,C +...
Xinlinx SDAccel開發(fā)環(huán)境是什么?
面向OpenCL,C和C ++的SDAccel開發(fā)環(huán)境利用FPGA將數(shù)據(jù)中心單位功耗性能提升高達25倍。作為SDx系列的成員,SDAccel是首個面向O...
用于異構計算的OpenCL標準為實現(xiàn)OpenCL標準的所有計算設備定義了基本編程模型。 該視頻介紹了OpenCL應用程序的主機代碼和內核元素。 這些...
如何建立OpenCL開發(fā)環(huán)境編譯和執(zhí)行DE1 SoC的示例項目的詳細概述立即下載
類別:嵌入式開發(fā) 2018-06-19 標簽:FPGASoC開發(fā)環(huán)境
軟件開發(fā)及嵌入式系統(tǒng)開發(fā)人員必備立即下載
類別:嵌入式開發(fā) 2015-12-31 標簽:嵌入式系統(tǒng)軟件開發(fā)OpenCL
武漢凌久微發(fā)布第二代圖形芯片GP201,性能超越AMD E8860嵌入式平臺
據(jù)悉,GP201在三維(3D)性能、二維(2D)多邊形描繪、橢圓形繪制、像素及圖像移動、窗口繪制以及對OpenCL庫國產(chǎn)化平臺的支持等方面均超越了AMD...
龍芯:自主研發(fā)CPU提升性能,單核通用性能提高20倍
張戈強調,龍芯CPU的主要IP核均為自主研發(fā),這使得其性價比得到顯著提升。他指出,國產(chǎn)CPU與主流CPU的差距主要體現(xiàn)在單核性能上,而非多核性能。近年來...
聯(lián)發(fā)科9200和a16性能參數(shù)對比
聯(lián)發(fā)科9200和a16性能參數(shù)對比 在現(xiàn)今移動設備應用領域,性能是大多數(shù)用戶關注的一個重要因素。而聯(lián)發(fā)科技和a16是兩個備受矚目的處理器品牌,二者的性能...
2023-08-31 標簽:處理器OpenCLCortex-A53 1201 0
rk3588和酷睿i3對比哪個好? 如今,在市場上,有很多種不同的處理器可供消費者選擇,其中比較常見的是龍芯、聯(lián)發(fā)科、高通驍龍、Intel 酷睿等處理器...
如何使用此XSA以及如何創(chuàng)建在目標平臺上實現(xiàn)設計加速所需的軟件鏡像
但對于邊緣(AArch64 或 Arm)平臺,我們需要添加 ZOCL 驅動。ZOCL 驅動用于為每個內核分配資源。在本文中,我們將講解如何向全新或現(xiàn)有 ...
Windows和DirectX 12設備都將會支持OpenCL和OpenGL
由于并非所有 Windows 設備都對 OpenCL 和 OpenGL 硬件加速技術提供良好的支持,因此游戲開發(fā)者經(jīng)常會發(fā)現(xiàn)他們很難在 Windows ...
來自喬治亞理工大學的開發(fā)人員使用免費和開源的RISC-V指令集體系結構:Vortex,創(chuàng)建了與流行的OpenCL編程框架兼容的通用圖形處理單元GPGPU。
基于SDAccelTM 開發(fā)環(huán)境減少FPGA在應用中使用時造成的障礙
FPGA 一直有望超越CPU 和GPU 實現(xiàn)方案,擁有更高的算法性能以及更低的功耗范圍。但直到現(xiàn)在因為編程模式未能如愿以償。而這一編程模式又是有效利用F...
編輯推薦廠商產(chǎn)品技術軟件/工具OS/語言教程專題
電機控制 | DSP | 氮化鎵 | 功率放大器 | ChatGPT | 自動駕駛 | TI | 瑞薩電子 |
BLDC | PLC | 碳化硅 | 二極管 | OpenAI | 元宇宙 | 安森美 | ADI |
無刷電機 | FOC | IGBT | 逆變器 | 文心一言 | 5G | 英飛凌 | 羅姆 |
直流電機 | PID | MOSFET | 傳感器 | 人工智能 | 物聯(lián)網(wǎng) | NXP | 賽靈思 |
步進電機 | SPWM | 充電樁 | IPM | 機器視覺 | 無人機 | 三菱電機 | ST |
伺服電機 | SVPWM | 光伏發(fā)電 | UPS | AR | 智能電網(wǎng) | 國民技術 | Microchip |
Arduino | BeagleBone | 樹莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 華秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |