根據前面異構計算的概念我們知道異構計算其實是利用與主控機(一般是CPU)不同架構的其他處理器實現計算加速,減輕主機端工作負載,最終提升系統性能。而OpenCL的使命則是為了橋接系統中各個不同的處理器。
OpenCL 是Open Computing Language的縮寫,也就是開放計算語言,它為異構平台提供一個統一的編寫並行程序的開放框架(API),它支持混合設備的並行計算,所支持的異構平台可以是多核CPU、GPU、FPGA或者是其他的處理器,而且代碼可以自由移植。
這里有幾個關鍵詞跟大家強調一下:
開放,不用說,就是開放免費的意思。
統一,OpenCL提供了一個統一的編程架構(API),也就是說不同的硬件架構,不管你是 GPU, FPGA等,都可以使用相同的OpenCL 編程語言去設計,為不同的硬件平台設計的OpenCL代碼還能相互移植。這樣通用性就很好了嘛。
並行,Opencl語言是用於編寫並行程序, 那么盡管它是基於標准C(C99標准),但是還是區別於標准C的(向C添加了並行性),具體的區別我們在后面的Host程序設計的時候會跟大家說明。
OpenCL是2008年由Apple公司首次提出,目前由NVIDIA, Intel, Broadcom, Khronos, AMD, ARM, Ti, Samsung, IBM, Google, Fujitsu等維護與支持。
http://www.khronos.org
理解OpenCL架構,先搞定OpenCL四個模型的定義:
- 平台模型(Platform Model)
- 執行模型(Execution Model)
- 內存模型(Memory Model)
- 編程模型(Programming Model)
下一講,我們介紹OpenCL架構的平台模型。