愛上OpenCL的十個理由

作爲OpenCL CodeBench的開發者,Amdahl軟件公司始終堅信OpenCL能夠帶來巨大的利益,也從未懷疑過OpenCL標準的成功性。現在人們對計算性能的要求越來越高,在不超過發熱量和功耗的限制範圍,我們相信多核和多核系統提供了一個可行的解決方法。對於OpenCL用戶來說,OpenCL標準的優點和利益是很明顯的。我們認爲在未來的幾十年甚至超過幾十年裏,OpenCL將會引領計算機軟件行業。

下面是我們爲什麼覺得OpenCL強大的最重要的10個理由。

1-OpenCL可以爲代碼加速10倍甚至更多

現在許多的嵌入式或者桌面計算平臺在主板上都有GPU。但是,大部分時間GPU都是閒置的,除非該計算平臺正在運行圖形敏感的工作。通過利用空閒的GPU的計算能力,你可以加速代碼的運行。假如你的算法本身就是並行的,那麼利用GPU可以加速的更多。對於分子動力學模擬,甚至電子電路,實時視頻處理,圖像處理,圖像增強,移動偵測,財務分析和自動交易等方面的應用特別適合利用GPU來進行加速。

GPU並不是唯一可以利用OpenCL加速的設備。如果你的主機平臺有多個CPU核——而且現在越來越多的臺式電腦擁有四個核或者更多的核——在這種情況下你同樣可以使用OpenCL進行CPU的多核編程。利用OpenCL進行CPU多核編程可能達不到利用GPU加速的效果,但這取決於加速的算法,不過隨着CPU核數的增加性能也會隨之提高。

2-OpenCL是一個開放標準

OpenCL是一個開放的標準意味着該標準對於所有使用OpenCL的人來說都是免費的,開放的。OpenCL有一系列高品質的文檔,包括在線教程、編程指南和參考手冊。除此之外,我們還可以找到很多關於的OpenCL的開源工具和出版的書籍,而且我們還可以利用互聯網找到很多的使用案例和設計實例。

3-OpenCL可以降低功耗

現在存在很多的工業例子證明對加速器的使用可以降低系統能耗。Amdahl軟件公司在不久的將來會出版一本白皮書,該書使用直接的定量分析的方式表明使用簡單的CPU+GPU模型來降低功耗的機會。與此同時,Imagination Technologies公司提供的OpenCL視頻例子很好的展示了這一點。

4-OpenCL可以節省你的硬件成本

對於數字信號處理(DSP),OpenCL提供了一種寬鬆的浮點實現。如果你的算法不需要絕對的精確,你可以在系統中取消DSP,使用已有的GPGPU代替。

5-OpenCL正在快速的普及

這對於桌面和嵌入式世界都是正確的。半導體和IP供應商,像Altera, Apple, AMD, ARM, Freescale, IBM, Imagination, Intel, NVidia, Samsung, STMicroelectronics, Texas Instruments, Vivante, Qualcomm等已經宣佈了他們的OpenCL兼容設備。在Khronos的OpenCL兼容產品資料庫可以找到完整的兼容設備和驅動清單。隨着其他設備兼容性的測試,這個清單會迅速擴大。通過使用OpenCL,現在越來越多的庫和最終用戶應用正在被移植到OpenCL平臺,以利用GPGPU的加速能力。OpenCL的使用提高了應用的性能,爲最終用戶的體驗和期望設定了新的標準。

6-OpenCL可以被用作產生自定義硬件的基礎

OpenCL編程模型在本質上是通過對內核,工作組和工作項的定義來實現並行。在內核中,甚至可以通過使用有着固定的衆所周知長度的小型矢量數據類型進行更細粒度的並行度劃分。在高效數據訪問過程中,OpenCL另外一個重要的組成特性是內核能夠通過barrier和memory fence進行同步的能力。所有這些特性使得OpenCL不僅僅適合編程以用來進行軟件加速,也適合對自定義硬件加速器實現的定義。Altera公司已經意識到了這一點,它最近發佈了一個程序,該程序提供了從OpenCL移植到FPGA的實現方式。

開發人員的應用程序不再受限於存在的設備。相反,他們可以通過OpenCL定義特定的“co-processor”來進行系統優化,以滿足他們的特殊要求(性能,功耗,大小)。設計人員可以在一個已知的並易於調試的環境下開發一個功能全面並已通過測試的的並行應用。一旦完成了代碼的編寫,影響性能的關鍵代碼部分可以通過FPGA image來進行完美的加速,該FPGA image是程序涉及到的內核直接產生的,這是OpenCL的一個很重要的好處。這促進了一種緊密的集成硬件/軟件協同設計方法的行成,在該方法中,同一個基準程序和測試貫穿整個開發過程,這樣就加快了應用進入市場的時間。

7-OpenCL C99語言是基於C語言的

這是一個不應該被忽略的特性。創建一種全新的編程語言會減慢對OpenCL的採納速度——儘管它可能會帶來巨大的利益。C語言是一種工業標準語言,它是OpenCL的基礎。OpenCL kernel定義語言是對C99的擴展,簡單易於接受。對於會使用C編程的工程師來說,能夠很快的掌握OpenCL。這樣,程序員就可以集中精力在他們想要加速的算法上,而不是OpenCL的語法上。

8-OpenCL可以被用於各種各樣的宿主語言

OpenCL kernel可以在C , C++, Java, Python, JavaScript, Haskell, Perl, Ruby等宿主語言中調用,而且能夠調用OpenCL的語言還在增多。這就使得在不同的開發環境下可以進行OpenCL kernel和結果的移植和複用,使得對GPGPU計算的支持更加靈活。

9-很容易開始OpenCL

大部分的PC機都有兼容OpenCL的顯卡。如果你的計算系統沒有GPU(不太可能的情況),只要你找到相應可用的驅動,你同樣可以在CPU上直接運行OpenCL程序。在嵌入式世界中,存在很多支持OpenCL的開發板。許多的GPU供應商除了提供了OpenCL的培訓視頻和教程,還提供了很多關於OpenCL的應用筆記和示例程序。所以要想開始OpenCL編程是很便宜,很簡單的事情。

10-OpenCL是平臺獨立的

OpenCL的編程模型是平臺獨立的,它能夠用來進行異構的多核的軟件開發。不同的內存空間定義了一個內存一致的模型。在OpenCL代碼運行時,從用戶的角度看,低層級的任務例如隊列和執行內核是被屏蔽的,是不可見的。在OpenCL中,events,barrier和fences提供了同步的能力。

OpenCL平臺的獨立性意味着在不修改代碼的前提下就能夠讓代碼在不同的兼容的OpenCL平臺上運行。因此,即使在不同的平臺運行同一OpenCL代碼性能可能會有所不同,但是從一個平臺將OpenCL代碼移植到另一個平臺是很簡單的。OpenCL在基於共有系統模型的基礎上提供了一個功能性的起點。

結論

我們堅信OpenCL潛在的能力。OpenCL使得軟件工程師可以有效的利用(易購的)多核計算的能力。不管在什麼編程環境下,用來進行開發的工具越好,開發效率就越高,代碼的質量就越好。在多核的時代下,我們使用OpenCL CodeBench的目的就是簡化OpenCL的開發。OpenCL CodeBench提供了全面的主機代碼生成功能,還提供了基於Eclipse的智能便捷的OpenCL kernel編輯器。不要一味的相信我們的話,你可以自己去試試用OpenCL CodeBench進行編程,你將會發現要加速你的應用是件多麼簡單多麼快捷的事情。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章