高通SNPE - OpenCL簡介(1)
OpenCL背景和概述
OpenCL由Khronos集團開發和維護,是一種開放且免版稅的標準用於異構系統中的跨平臺並行程式設計。它是幫助開發人員利用現代異構中可用的海量計算能力系統,極大地促進了跨平臺的應用程式開發。高通®的Adreno TM上的Snapdragon平臺GPU系列一直是最早移動的一個完全支援OpenCL的GPU之一。
圖中顯示了支援OpenCL的典型異構系統。在這個系統中,主要分為三個部分:
- 主機CPU本質上是一個命令器/主裝置,用於管理和控制主機應用。
- 多個OpenCL裝置,包括GPU,DSP,FPGA和硬體加速器。
- 由主機編譯並載入到OpenCL裝置以執行的核心程式碼。
手機上的OpenCL
近年來,移動晶片系統(SOC)在計算方面取得了顯著進步功能,複雜性和功能。移動SOC(移動GPU)中的GPU非常功能強大,某些頂級移動GPU在以下方面達到了控制檯/離散GPU的水平:原始計算能力。這給開發人員帶來了挑戰:如何有效利用計算能力和在不瞭解GPU底層細節的情況下快速開發應用程式,而維護不同SOC之間的應用程式相容性?為解決這些問題而建立的OpenCL使開發人員可以輕鬆利用計算能力得益於其跨平臺支援,移動SOC的數量有所增加。通過使用OpenCL,移動SOC可以輕鬆實現啟用許多領域的高階用例,例如影像/視訊處理,計算機視覺,機器學習等在QTI中,使用帶有Adreno GPU的OpenCL已成功加速了許多用例,表現出出色的效能,功能和便攜性。強烈建議將OpenCL與GPU結合使用可加速其在Snapdragon SOC上的應用。
OpenCL標準
OpenCL標準主要包含兩個元件,即OpenCL執行時API和OpenCL C語言。API定義了一組在主機上執行的資源功能管理,核心分發和許多其他任務,而OpenCL C語言用於編寫在OpenCL裝置上執行的核心。OpenCL API和OpenCL C語言將是在以下各節中進行了回顧。
OpenCL API函式
OpenCL API函式可以分為兩類,平臺層和執行時。下表總結了平臺層的高階功能以及相對的執行時層級。
瞭解這兩層對於編寫OpenCL應用程式至關重要。
OpenCL C語言
作為C99標準的子集,OpenCL C語言用於編寫可在裝置上編譯和執行。具有C語言程式設計經驗的開發人員可以輕鬆開始使用OpenCL C程式設計。但是,瞭解C99標準和OpenCL C語言之間的差異,以避免常見錯誤。這是兩個主要區別:∎由於硬體限制,OpenCL C語言不支援C99中的某些功能和OpenCL執行模型。示例是函式指標和動態記憶體分配(malloc / calloc等)。∎OpenCL C語言在幾個方面擴充套件了C99標準,以便更好地進行開發。服務於其程式設計模型並促進開發,例如:□它新增了內建函式來查詢OpenCL核心執行引數。□它具有可以利用GPU硬體的影像載入/儲存功能。
相關文章
- 高通SNPE - 基準測試概述(3)
- 高通MSM7540晶片技術資料簡介晶片
- 高通QCC3006藍芽5.0音訊晶片簡介藍芽音訊晶片
- BookKeeper 介紹(1)--簡介
- Flask(1)- 簡介Flask
- 1、LVGL簡介
- 程式間通訊簡介
- 高通855plus晶片資料規格引數CPU簡介晶片
- Flutter – 1.簡介Flutter
- 1jQuery簡介jQuery
- HTML————1、HTML簡介HTML
- 1. JUC簡介
- 001.SQLServer高可用簡介SQLServer
- JAVASE簡介---D1Java
- JavaFX基礎:1: 簡介Java
- Ansible(1)- 簡單介紹
- POI-簡介(1/2)
- HSQL 資料庫介紹(1)--簡介SQL資料庫
- 小型plc串列埠通訊簡介串列埠
- Java高併發之CyclicBarrier簡介Java
- 1、Linux簡介及安裝Linux
- GraphQL 快速入門【1】簡介
- 學習OpenCL與卷積神經網路 Day1卷積神經網路
- H2 資料庫介紹(1)--簡介資料庫
- Python中的高階函式簡介Python函式
- KunlunDB的Fullsync高可用機制簡介
- 高通WCD9375音訊編解碼器/數字濾波器晶片簡介音訊晶片
- Go語言學習(1) - 簡介Go
- (譯) 函式式 JS #1:簡介函式JS
- Spring cloud(1)-簡介以及選擇SpringCloud
- 1、Swing簡介:Swing是什麼?
- WebGL程式設計指南(1)簡介Web程式設計
- 深入React技術棧(1):簡介React
- Vue.js實戰(1):簡介Vue.js
- GPT 1-3 簡單介紹GPT
- redis(1)NoSQL資料庫簡介RedisSQL資料庫
- 強化學習系列(1):簡介強化學習
- Python 入門系列 —— 1. 簡介Python