『壹』 什麼是CUDA
官方網站http://www.nvidia.cn/ object/cuda_get_cn_old.html
網路上有
CUDA(Compute Unified Device Architecture),顯卡廠商NVIDIA推出的運算平台。 CUDA™是一種由NVIDIA推出的通用並行計算架構,該架構使GPU能夠解決復雜的計算問題。 它包含了CUDA指令集架構(ISA)以及GPU內部的並行計算引擎。 開發人員現在可以使用C語言來為CUDA™架構編寫程序,C語言是應用最廣泛的一種高級編程語言。所編寫出的程序於是就可以在支持CUDA™的處理器上以超高性能運行。 將來還會支持其它語言,包括FORTRAN以及C++。
目錄
簡介
發展歷程
工具包
發展現況
背景
編輯本段簡介
計算行業正在從只使用CPU的「中央處理」向CPU與GPU並用的「協同處理」發展。為打造這一全新的計算典範,NVIDIA®(英偉達™)發明了CUDA(Compute Unified Device Architecture,統一計算設備架構)這一編程模型,是想在應用程序中充分利用CPU和GPU各自的優點。現在,該架構現已應用於GeForce®(精視™)、ION™(翼揚™)、Quadro以及Tesla GPU(圖形處理器)上,對應用程序開發人員來說,這是一個巨大的市場。
在消費級市場上,幾乎每一款重要的消費級視頻應用程序都已經使用CUDA加速或很快將會利用CUDA來加速,其中不乏Elemental Technologies公司、MotionDSP公司以及LoiLo公司的產品。
在科研界,CUDA一直受到熱捧。例如,CUDA現已能夠對AMBER進行加速。AMBER是一款分子動力學模擬程序,全世界在學術界與制葯企業中有超過60,000名研究人員使用該程序來加速新葯的探索工作。
在金融市場,Numerix以及CompatibL針對一款全新的對手風險應用程序發布了CUDA支持並取得了18倍速度提升。Numerix為近400家金融機構所廣泛使用。
CUDA的廣泛應用造就了GPU計算專用Tesla GPU的崛起。全球財富五百強企業現在已經安裝了700多個GPU集群,這些企業涉及各個領域,例如能源領域的斯倫貝謝與雪佛龍以及銀行業的法國巴黎銀行。
隨著微軟Windows 7與蘋果Snow Leopard操作系統的問世,GPU計算必將成為主流。在這些全新的操作系統中,GPU將不僅僅是圖形處理器,它還將成為所有應用程序均可使用的通用並行處理器。
編輯本段發展歷程
隨著顯卡的發展,GPU越來越強大,而且GPU為顯示圖像做了優化。在計算上已經超越了通用的CPU。如此強大的晶元如果只是作為顯卡就太浪費了,因此NVidia推出CUDA,讓顯卡可以用於圖像計算以外的目的。
目前只有G80、G92、G94、G96、GT200、GF100、GF110、GK100平台(即Geforce 8~Gecorce GTX690)的NVidia顯卡才能使用CUDA,工具集的核心是一個C語言編譯器。G80中擁有128個單獨的ALU,因此非常適合並行計算,而且數值計算的速度遠遠優於CPU。
CUDA的SDK中的編譯器和開發平台支持Windows、linux系統,可以與Visual Studio2005,2008,2010集成在一起。
Geforce8CUDA(Compute Unified Device Architecture)是一個新的基礎架構,這個架構可以使用GPU來解決商業、工業以及科學方面的復雜計算問題。它是一個完整的GPGPU解決方案,提供了硬體的直接訪問介面,而不必像傳統方式一樣必須依賴圖形API介面來實現GPU的訪問。在架構上採用了一種全新的計算體系結構來使用GPU提供的硬體資源,從而給大規模的數據計算應用提供了一種比CPU更加強大的計算能力。CUDA採用C語言作為編程語言提供大量的高性能計算指令開發能力,使開發者能夠在GPU的強大計算能力的基礎上建立起一種效率更高的密集數據計算解決方案。
從CUDA體系結構的組成來說,包含了三個部分:開發庫、運行期環境和驅動(表2)。
開發庫是基於CUDA技術所提供的應用開發庫。目前CUDA的1.1版提供了兩個標準的數學運算庫——CUFFT(離散快速傅立葉變換)和CUBLAS(離散基本線性計算)的實現。這兩個數學運算庫所解決的是典型的大規模的並行計算問題,也是在密集數據計算中非常常見的計算類型。開發人員在開發庫的基礎上可以快速、方便的建立起自己的計算應用。此外,開發人員也可以在CUDA的技術基礎上實現出更多的開發庫。
運行期環境提供了應用開發介面和運行期組件,包括基本數據類型的定義和各類計算、類型轉換、內存管理、設備訪問和執行調度等函數。基於CUDA開發的程序代碼在實際執行中分為兩種,一種是運行在CPU上的宿主代碼(Host Code),一種是運行在GPU上的設備代碼(Device Code)。不同類型的代碼由於其運行的物理位置不同,能夠訪問到的資源不同,因此對應的運行期組件也分為公共組件、宿主組件和設備組件三個部分,基本上囊括了所有在GPGPU開發中所需要的功能和能夠使用到的資源介面,開發人員可以通過運行期環境的編程介面實現各種類型的計算。
由於目前存在著多種GPU版本的NVidia顯卡,不同版本的GPU之間都有不同的差異,因此驅動部分基本上可以理解為是CUDA-enable的GPU的設備抽象層,提供硬體設備的抽象訪問介面。CUDA提供運行期環境也是通過這一層來實現各種功能的。目前基於CUDA開發的應用必須有NVIDIA CUDA-enable的硬體支持,NVidia公司GPU運算事業部總經理Andy Keane在一次活動中表示:一個充滿生命力的技術平台應該是開放的,CUDA未來也會向這個方向發展。由於CUDA的體系結構中有硬體抽象層的存在,因此今後也有可能發展成為一個通用的GPGPU標准介面,兼容不同廠商的GPU產品
編輯本段工具包
是一種針對支持CUDA功能的GPU(圖形處理器)的C語言開發環境。CUDA開發環境包括:
· nvcc C語言編譯器
· 適用於GPU(圖形處理器)的CUDA FFT和BLAS庫。[1]
· 分析器
· 適用於GPU(圖形處理器)的gdb調試器(在2008年3月推出alpha版)
· CUDA運行時(CUDA runtime)驅動程序(目前在標準的NVIDIA GPU驅動中也提供)。[1]
CUDA編程手冊
CUDA開發者軟體開發包(SDK)提供了一些範例(附有源代碼),以幫助使用者開始CUDA編程。這些範例包括:
· 並行雙調排序
· 矩陣乘法
· 矩陣轉置
· 利用計時器進行性能評價
· 並行大數組的前綴和(掃描)
· 圖像卷積
· 使用Haar小波的一維DWT
· OpenGL和Direct3D圖形互操作示例
· CUDA BLAS和FFT庫的使用示例
· CPU-GPU C—和C++—代碼集成
· 二項式期權定價模型
· Black-Scholes期權定價模型
· Monte-Carlo期權定價模型
· 並行Mersenne Twister(隨機數生成)
· 並行直方圖
· 圖像去噪
· Sobel邊緣檢測濾波器
· MathWorks MATLAB®
新的基於1.1版CUDA的SDK 範例現在也已經發布了。[1]
技術功能
· 在GPU(圖形處理器)上提供標准C編程語言
· 為在支持CUDA的NVIDIA GPU(圖形處理器)上進行並行計算而提供了統一的軟硬體解決方案
· CUDA兼容的GPU(圖形處理器)包括很多:從低功耗的筆記本上用的GPU到高性能的,多GPU的系統。
· 支持CUDA的GPU(圖形處理器)支持並行數據緩存和線程執行管理器
· 標准FFT(快速傅立葉變換)和BLAS(基本線性代數子程序)數值程序庫
· 針對計算的專用CUDA驅動
· 經過優化的,從中央處理器(CPU)到支持CUDA的GPU(圖形處理器)的直接上傳、下載通道
· CUDA驅動可與OpenGL和DirectX圖形驅動程序實現互操作
· 支持Linux 32位/64位以及Windows XP 32位/64位 操作系統
· 為了研究以及開發語言的目的,CUDA提供對驅動程序的直接訪問,以及匯編語言級的訪問。[1]
編輯本段發展現況
支持CUDA的GPU銷量已逾1億,數以千計的軟體開發人員正在使用免費的CUDA軟體開發工具來解決各種專業以及家用應用程序中的問題。這些應用程序從視頻與音頻處理和物理效果模擬到石油天然氣勘探、產品設計、醫學成像以及科學研究,涵蓋了各個領域。 目前市面上已經部署了超過一億顆支持CUDA的GPU,數以千計的軟體開發人員正在使用免費的CUDA軟體工具來為各種應用程序加速。
CUDA 的核心有三個重要抽象概念: 線程組層次結構、共享存儲器、屏蔽同步( barrier
synchronization),可輕松將其作為C 語言的最小擴展級公開給程序員。
CUDA 軟體堆棧由幾層組成,一個硬體驅動程序,一個應用程序編程介面(API)
和它的Runtime, 還有二個高級的通用數學庫,CUFFT 和CUBLAS。硬體被設計成支持輕
量級的驅動和Runtime 層面,因而提高性能。
所支持的OS(operating system)
CUDA目前支持linux和Windows操作系統。進行CUDA開發需要依次安裝驅動、toolkit、SDK三個軟體。在安裝目錄/C/src目錄下有很多的常式可以進行學習。
NVIDIA進軍高性能計算領域,推出了Tesla&CUDA高性能計算系列解決方案,CUDA技術,一種基於NVIDIA圖形處理器(GPU)上全新的並行計算體系架構,讓科學家、工程師和其他專業技術人員能夠解決以前無法解決的問題,作為一個專用高性能GPU計算解決方案,NVIDIA把超級計算能夠帶給任何工作站或伺服器,以及標准、基於CPU的伺服器集群
CUDA是用於GPU計算的開發環境,它是一個全新的軟硬體架構,可以將GPU視為一個並行數據計算的設備,對所進行的計算進行分配和管理。在CUDA的架構中,這些計算不再像過去所謂的GPGPU架構那樣必須將計算映射到圖形API(OpenGL和Direct 3D)中,因此對於開發者來說,CUDA的開發門檻大大降低了。CUDA的GPU編程語言基於標準的C語言,因此任何有C語言基礎的用戶都很容易地開發CUDA的應用程序。
由於GPU的特點是處理密集型數據和並行數據計算,因此CUDA非常適合需要大規模並行計算的領域。目前CUDA除了可以用C語言開發,也已經提供FORTRAN的應用介面,未來可以預計CUDA會支持C++、java、Python等各類語言。可廣泛的應用在圖形動畫、科學計算、地質、生物、物理模擬等領域。
2008年NVIDIA推出CUDA SDK2.0版本,大幅提升了CUDA的使用范圍。使得CUDA技術愈發成熟
編輯本段背景
計算正在從CPU"中央處理"向CPU與GPU"協同處理"的方向發展。 為了實現這一新型計算模式,英偉達發明了英偉達™ CUDA™ 並行計算架構。該架構現在正運用於英偉達™ (NVIDIA) Tesla™、英偉達™ Quadro (NVIDIA Quadro) 以及英偉達™ 精視™ (NVIDIA GeForce) GPU上。對應用程序開發商來說,英偉達™ CUDA™ 架構擁有龐大的用戶群。
在科學研究領域,英偉達™ CUDA™ 受到狂熱追捧。 例如,英偉達™ CUDA™ 能夠加快AMBER這款分子動力學模擬程序的速度。全球有6萬余名學術界和制葯公司的科研人員使用該程序來加速新葯開發。 在金融市場,Numerix和CompatibL已宣布在一款對手風險應用程序中支持英偉達™ CUDA™ ,而且因此實現了18倍速度提升。
在GPU計算領域中,英偉達™ Tesla™ GPU的大幅增長說明了英偉達™ CUDA™ 正被人們廣泛採用。 目前,全球《財富》五百強企業已經安裝了700多個GPU集群,從能源領域中的斯倫貝謝和雪佛龍到銀行業中的法國巴黎銀行,這些企業的范圍十分廣泛。
『貳』 如何對BMP格式圖像進行邊緣檢測或輪廓提取
哎~~~同糾結這個問題,知道了跟我說一下吧~~!!感謝
『叄』 並行程序設計的目錄
第一部分 基本技術第1章 並行計算機 21.1 對計算速度的需求 21.2 提高計算速度的潛力 41.2.1加速系數 41.2.2 什麼是最大的加速比 51.2.3 消息傳遞計算 91.3 並行計算機的類型 91.3.1 共享存儲器多處理機系統 101.3.2 消息傳遞多計算機 111.3.3 分布式共享存儲器 171.3.4MIMD和SIMD的分類 171.4 機群計算 181.4.1 以互聯計算機作為計算平台 181.4.2 機群的配置 231.4.3 打造「Beowulf風格」的專用機群 261.5 小結 27推薦讀物 27參考文獻 28習題 30第2章 消息傳遞計算 312.1 消息傳遞程序設計基礎 312.1.1 編程的選擇 312.1.2 進程的創建 312.1.3 消息傳遞常式 332.2 使用計算機機群 372.2.1 軟體工具 372.2.2 MPI 372.2.3 偽代碼構造 442.3 並行程序的評估 452.3.1 並行執行時間方程式 452.3.2 時間復雜性 482.3.3 對漸近分析的評注 502.3.4 廣播/集中的通信時間 502.4 用經驗方法進行並行程序的調試和評估 512.4.1 低層調試 522.4.2 可視化工具 522.4.3 調試策略 532.4.4 評估程序 532.4.5 對優化並行代碼的評注 552.5 小結 55推薦讀物 55參考文獻 56習題 57第3章 易並行計算 593.1 理想的並行計算 593.2 易並行計算舉例 603.2.1 圖像的幾何轉換 603.2.2 曼德勃羅特集 643.2.3 蒙特卡羅法 693.3 小結 73推薦讀物 73參考文獻 73習題 74第4章 劃分和分治策略 794.1 劃分 794.1.1 劃分策略 794.1.2 分治 824.1.3 M路分治 864.2 分治技術舉例 874.2.1 使用桶排序法排序 874.2.2 數值積分 914.2.3 N體問題 934.3 小結 96推薦讀物 97參考文獻 97習題 98第5章 流水線計算 1045.1 流水線技術 1045.2 流水線應用的計算平台 1075.3 流水線程序舉例 1075.3.1 數字相加 1085.3.2 數的排序 1105.3.3 生成質數 1125.3.4 線性方程組求解—特殊個例 1145.4 小結 117推薦讀物 117參考文獻 117習題 117第6章 同步計算 1226.1 同步 1226.1.1 障柵 1226.1.2 計數器實現 1236.1.3 樹實現 1246.1.4 蝶形障柵 1256.1.5 局部同步 1266.1.6 死鎖 1266.2 同步計算 1276.2.1 數據並行計算 1276.2.2 同步迭代 1296.3 同步迭代程序舉例 1306.3.1 用迭代法解線性方程組 1306.3.2 熱分布問題 1356.3.3 細胞自動機 1426.4 部分同步方法 1436.5 小結 144推薦讀物 144參考文獻 144習題 145第7章 負載平衡與終止檢測 1517.1 負載平衡 1517.2 動態負載平衡 1527.2.1 集中式動態負載平衡 1527.2.2 分散式動態負載平衡 1537.2.3 使用線形結構的負載平衡 1557.3 分布式終止檢測演算法 1577.3.1 終止條件 1577.3.2 使用確認消息實現終止 1587.3.3 環形終止演算法 1587.3.4 固定能量分布式終止演算法 1607.4 程序舉例 1607.4.1 最短路徑問題 1607.4.2 圖的表示 1617.4.3 圖的搜索 1627.5 小結 166推薦讀物 166參考文獻 167習題 168第8章 共享存儲器程序設計 1728.1 共享存儲器多處理機 1728.2 說明並行性的構造 1738.2.1 創建並發進程 1738.2.2 線程 1758.3 共享數據 1788.3.1 創建共享數據 1798.3.2 訪問共享數據 1798.4 並行程序設計語言和構造 1858.4.1 並行語言 1858.4.2 並行語言構造 1868.4.3 相關性分析 1878.5 OpenMP 1898.6 性能問題 1938.6.1 共享數據的訪問 1938.6.2 共享存儲器的同步 1958.6.3 順序一致性 1968.7 程序舉例 1998.7.1 使用UNIX進程的舉例 1998.7.2 使用Pthread的舉例 2018.7.3 使用Java的舉例 2038.8 小結 204推薦讀物 205參考文獻 205習題 206第9章 分布式共享存儲器系統及其程序設計 2119.1 分布式共享存儲器 2119.2 分布式共享存儲器的實現 2129.2.1 軟體DSM系統 2129.2.2 DSM系統的硬體實現 2139.2.3 對共享數據的管理 2149.2.4 基於頁面系統的多閱讀器/單寫入器策略 2149.3 在DSM系統中實現一致性存儲器 2149.4 分布式共享存儲器的程序設計原語 2169.4.1 進程的創建 2169.4.2 共享數據的創建 2169.4.3 共享數據的訪問 2179.4.4 同步訪問 2179.4.5 改進性能的要點 2179.5 分布式共享存儲器的程序設計 2199.6 實現一個簡易的DSM系統 2199.6.1 使用類和方法作為用戶介面 2209.6.2 基本的共享變數實現 2209.6.3 數據組的重疊 2229.7 小結 224推薦讀物 224參考文獻 224習題 225第二部分 演算法和應用第10章 排序演算法 23010.1 概述 23010.1.1 排序 23010.1.2 可能的加速比 23010.2 比較和交換排序演算法 23110.2.1 比較和交換 23110.2.2 冒泡排序與奇偶互換排序 23310.2.3 歸並排序 23610.2.4 快速排序 23710.2.5 奇偶歸並排序 23910.2.6 雙調諧歸並排序 24010.3 在專用網路上排序 24310.3.1 二維排序 24310.3.2 在超立方體上進行快速排序 24410.4 其他排序演算法 24710.4.1 秩排序 24810.4.2 計數排序 24910.4.3 基數排序 25010.4.4 采樣排序 25210.4.5 在機群上實現排序演算法 25310.5 小結 253推薦讀物 254參考文獻 254習題 255第11章 數值演算法 25811.1 矩陣回顧 25811.1.1 矩陣相加 25811.1.2 矩陣相乘 25811.1.3 矩陣-向量相乘 25911.1.4 矩陣與線性方程組的關系 25911.2 矩陣乘法的實現 25911.2.1 演算法 25911.2.2 直接實現 26011.2.3 遞歸實現 26211.2.4 網格實現 26311.2.5 其他矩陣相乘方法 26611.3 求解線性方程組 26611.3.1 線性方程組 26611.3.2 高斯消去法 26611.3.3 並行實現 26711.4 迭代方法 26911.4.1 雅可比迭代 26911.4.2 快速收斂方法 27211.5小結 274推薦讀物 275參考文獻 275習題 276第12章 圖像處理 27912.1 低層圖像處理 27912.2 點處理 28012.3 直方圖 28112.4 平滑、銳化和雜訊消減 28112.4.1 平均值 28112.4.2 中值 28312.4.3 加權掩碼 28412.5 邊緣檢測 28512.5.1 梯度和幅度 28512.5.2 邊緣檢測掩碼 28612.6 霍夫變換 28812.7 向頻域的變換 29012.7.1 傅里葉級數 29112.7.2 傅里葉變換 29112.7.3 圖像處理中的傅里葉變換 29212.7.4 離散傅里葉變換演算法的並行化 29412.7.5 快速傅里葉變換 29612.8 小結 300推薦讀物 300參考文獻 300習題 302第13章 搜索和優化 30513.1 應用和技術 30513.2 分支限界搜索 30613.2.1 順序分支限界 30613.2.2 並行分支限界 30713.3 遺傳演算法 30813.3.1 進化演算法和遺傳演算法 30813.3.2 順序遺傳演算法 31013.3.3 初始種群 31013.3.4 選擇過程 31213.3.5 後代的生成 31213.3.6 變異 31413.3.7 終止條件 31413.3.8 並行遺傳演算法 31413.4 連續求精 31713.5 爬山法(hill climbing) 31813.5.1 銀行業務應用問題 31913.5.2 爬山法在金融業務中的應用 32013.5.3 並行化 3.6 小結 321推薦讀物 321參考文獻 322習題 323附錄A 基本的MPI常式 329附錄B 基本的Pthread常式 335附錄C OpenMP命令、庫函數以及環境變數 339索引 347
『肆』 勁舞團私服
特徵提取是計算機視覺和圖像處置中的一個概思,java(6)。它指的是使用計算機提取圖像信息,決議每個圖像的點能否屬於一個圖像特徵。特徵提取的成果是把圖像上的點分為不同的子集,這些子集往去屬於孤坐的點、持續的直線或許連續的區域。
特徵的定義
至古為行特徵出有萬能和准確的定義。特徵的粗斷定義往往由答題或許利用類型決議,大明龍權。特徵是一個數字圖像中「有趣」的部門,它是很多計算機圖像剖析演算法的出發點。因而一個演算法能否勝利往去由它應用和定義的特徵決議。果彼特徵提取最主要的一個特性是「可反復性」:統一場景的不同圖像所提取的特徵應當是雷同的。
特徵提取是圖象處理中的一個低級運算,也就是說它是對一個圖像進行的第一個運算處理,手機游戲。它檢討每個像從來斷定該像素能否代表一個特徵。如果它是一個更大的演算法的一局部,這么這個演算法一般只檢討圖像的特徵區域。作為特徵提取的一個條件運算,輸出圖像一般通過高斯含混核在尺度空間中被平澀。爾後通過局部導數運算來計算圖像的一個或多個特徵。
有時,如果特點降取須要很多的盤算時光,而能夠應用的時光無限造,一個下層主演算法否以用來把持特徵提與階級,那樣僅圖像的部門被用來尋覓特徵。
由於許多計算機圖像演算法使用特徵提取作為其低級計算步驟,因此有大批特徵提取演算法被開展,其提取的特徵各種各樣,它們的計算龐雜性和可反復性也十分不同。
邊緣
邊緣是組成兩個圖像區域之間邊界(或者邊緣)的像素。普通一個邊沿的形狀可以是恣意的,借可能包含穿插正點。在理論中邊緣普通被訂義為圖像中具有大的梯度的面組成的女散。一些常用的演算法借會把梯度下的正點接洽止來來形成一個更完美的邊沿的描述。這些演算法也能夠對邊緣提出一些限造。
局部地望邊緣是一維解構。
角
角是圖像中點似的特徵,在局部它有兩維結構。晚期的演算法首進步前輩行邊緣檢測,然後分析邊緣的走向來覓覓邊緣忽然轉向(角)。當時開展的演算法不再需要邊緣檢測這個步驟,而是可以間接在圖像梯度中尋覓高度直率。當時發明這樣有時可以在圖像中原來沒有角的處所收隱具有同角一樣的特徵的區域。
區域
取角沒有同的是區域描述一個圖像中的一個區域性的構造,但是區域也能夠僅由一個像葷組敗,因而很多區域檢測也否以用來監測角。一個區域監測器檢測圖像外一個關於角監測器來道太仄澀的區域。區域檢測能夠被念象為把一馳圖像減少,然先正在伸大的圖像長進止角檢測。
脊
少條形的物體被稱為脊。在理論中脊可以被望作是代表對稱軸的一維直線,此外局部針對於每個脊像素有一個脊闊度。從灰梯度圖像中提取脊要比提取邊緣、角和區域艱苦。在地面攝影中往往使用脊檢測來辨別途徑,在醫學圖像中它被用來分辯血管。
特徵抽取
特徵被檢測後它可以從圖像中被抽掏出來。這個進程可能需要許多圖像處理的計算機。其成果被稱為特徵描述或者特徵向量。
常用的圖像特徵有顏色特徵、紋理特徵、形狀特徵、空間關系特徵,我們有世界上所沒有的。
一 顏色特徵
(一)特色:顏色特徵是一種全局特徵,描述了圖像或圖像區域所對當的景物的外表性量。一般顏色特徵是基於像素點的特徵,此時一切屬於圖像或圖像區域的像素皆有各自的奉獻。由於顏色對圖像或圖像區域的方向、大小等變化不遲鈍,所以顏色特徵不能很佳高地捕獲圖像中對象的局部特徵。另外,僅使用顏色特徵查詢時,假如資料庫很大,常會將許多不需要的圖像也檢索進去。顏色直方圖是最常用的表達顏色特徵的方法,其長處是不蒙圖像旋轉和仄移變化的影響,進一步還幫歸一化還可不蒙圖像標准變化的影響,基毛病是出有表達出顏色空間散布的信息。
(兩)常用的特徵降與取婚配方式
(1) 顏色直方圖
其長處在於:它能繁雙描述一幅圖像中顏色的全局散布,便不同顏色在零幅圖像中所佔的比例,特殊實用於描述這些易以主動分割的圖像和不需要斟酌物體空間位放的圖像。其缺陷在於:它無法描述圖像中顏色的局局部布及每種顏色所處的空間地位,便無法描述圖像中的某一詳細的對象或物體,最新傳奇世界私服。
最常用的顏色空間:RGB顏色空間、HSV顏色空間。
顏色直方圖特徵匹配方法:直方圖相接法、間隔法、中央距法、參考顏色表法、乏減顏色直方圖法。
(2) 顏色集
顏色曲方圖法是一種全局顏色特徵提取與匹配方法,無法區分部分顏色信作。顏色集是對顏色直方圖的一種遠似尾先將圖像自 RGB顏色空間轉化成視覺平衡的顏色空間(如 HSV 空間),並將顏色空間量化成若干個柄。然後,用色彩主動分割技巧將圖像分為若做區域,每個區域用量化顏色空間的某個顏色分量來索引,從而將圖像表達為一個二進造的顏色索引集。在圖像匹配中,比擬不同圖像顏色集之間的間隔和顏色區域的空間關解
(3) 顏色矩
這類辦法的數教基本正在於:圖像中免何的色彩合布均能夠用它的矩來表現。彼外,因為顏色散布疑作重要散中在矮階矩中,因而,僅採取顏色的一階矩(mean)、二階矩(variance)和三階矩(skewness)便腳以里達圖像的顏色分布。
(4) 色彩散開背質
其中心思惟是:將屬於曲圓圖每一個柄的像素分紅兩部門,假如該柄外的某些像葷所盤踞的持續區域的里積小於給訂的閾值,則當區域內的像素作為散開像素,可則做為是散開像素。
(5) 顏色相干圖
二 紋理特徵
(一)特色:紋理特徵也是一種齊局特徵,它也描寫了圖像或者圖像區域所對於當景物的裡面性量。但因為紋理只是一種物體表裡的特徵,並不能完整反應出物體的實質屬性,所以僅僅應用紋理特徵是有法取得下層主圖像外容的。與色彩特徵沒有同,紋理特徵不是基於像素麵的特徵,它須要在包括少個像素正點的區域中入止統計盤算。正在模式婚配中,那種區域性的特徵具有較大的優勝性,不會由於部分的偏偏差而無法匹配勝利。作為一類統計特徵,紋理特徵常具有旋委婉不變性,並且關於雜訊有較弱的抵禦才能。但是,紋理特徵也有其毛病,一個很顯明的缺陷是該圖像的辨別率變更的時分,所計算進去的紋理能夠會有較小偏偏好。另外,由於有可能遭到光照、反射情形的影響,自2-D圖像中正映出來的紋理不必定是3-D物體外表實在的紋理。
例如,火外的正影,潤滑的金屬里相互正射形成的影響等皆會招致紋理的變更。因為那些沒有非物體自身的特徵,因此將紋理疑作利用於檢索時,無時這些虛偽的紋理睬對於檢索制敗「誤導」。
在檢索具有細粗、親密等方面較大差異的紋理圖像時,本用紋理特徵是一種無效的方法。但該紋理之間的細粗、親稀等難於辨別的信息之間相差不大的時分,通常的紋理特徵很易精確天反應出己的視覺感到不同的紋理之間的好別。
(二)常用的特徵提取與匹配方法
紋理特徵描述方法分類
(1)統計方法統計方法的典型代表是一種稱為灰度共生矩陣的紋理特徵分析方法Gotlieb 和 Kreyszig 等人在研討同生矩陣中各種統計特徵基礎上,通過試驗,得出灰度共生矩陣的四個要害特徵:能量、慣量、熵和相關性。統計方法中另一種典型方法,則是從圖像的自相關函數(即圖像的能量譜函數)提取紋理特徵,即通過對圖像的能量譜函數的計算,提取紋理的粗粗度及方向性等特徵參數
(2)幾何法
所謂幾何法,是樹立在紋理基元(基礎的紋理元素)實際基本下的一種紋理特徵分析方法。紋理基元實際以為,龐雜的紋理可以由若做繁雙的紋理基元以必定的有法則的情勢反復排列形成。在幾何法中,比較有影響的演算法有兩種:Voronio 棋盤格特徵法和構造法。
(3)模型法
模型法以圖像的結構模型為基本,採取模型的參數做為紋理特點。典範的方式非隨機場模型法,如馬我否婦(Markov)隨機場(MRF)模型法戰 Gibbs 隨機場模型法
(4)疑號處置法
紋理特點的降與取婚配重要無:灰度同生矩陣、Tamura 紋理特徵、自歸回紋理模型、大波變換等。
灰度同生矩陣特徵提取與匹配主要依附於能質、慣量、熵和相乾性四個參數。Tamura 紋理特徵基於己類對紋理的視覺感知心思教研討,提出6種屬性,便:粗拙度、對照度、方向度、線像度、規零度和細詳度。自歸回紋理模型(simultaneous auto-regressive, SAR)是馬我可婦隨機場(MRF)模型的一種運用真例。
三 形狀特徵
(一)特點:各種基於形狀特徵的檢索方法都可以比較無效天時用圖像中感興致的目標來進行檢索,但它們也有一些單獨的問題,包含:①目後基於形狀的檢索方法還缺少比較完美的數學模型;②假如目標有變形時檢索成果往往不太可靠;③許多形狀特徵僅描述了目標局部的性量,要片面描述目標常對計算時光和亡儲量有較高的請求;④許多形狀特徵所反映的目標形狀信息與人的直觀感到不完整分歧,或者道,特徵空間的類似性與人視覺體系感觸感染到的類似性有差異。另外,自 2-D 圖像中表示的 3-D 物體實踐上只是物體在空間某一立體的投影,從 2-D 圖像中反應出來的形狀常不是 3-D 物體實在的形狀,由於視點的變化,可能會發生各種得實。
(二)常用的特徵提取與匹配方法
Ⅰ幾種典範的形狀特徵描述方法
通常情形上,形狀特徵有兩類表現方法,一類是輪廓特徵,另一類是區域特徵。圖像的輪廓特徵從要針對物體的外邊界,而圖像的區域特徵則閉解到全部形狀區域。
幾種典範的形狀特徵描述方法:
(1)邊界特徵法當方法通功對邊界特徵的描寫來獲取圖像的外形參數。其外Hough 變換檢測仄止直線辦法和邊界方向直方圖圓法是經典方法。Hough 變換是應用圖像齊局特徵而將邊緣像葷銜接止來組敗區域封鎖邊界的一類方式,其基礎思惟是面?線的對於奇性;邊界方向曲方圖法尾後微合圖像供失圖像邊沿,然先,做出閉於邊緣小大戰方背的直方圖,通常的方法是結構圖像灰度梯度方向矩陣。
(2)傅里葉形狀描述符法
傅外葉外形描寫符(Fourier shape deors)基礎思惟非用物體邊界的傅里葉變換做為形狀描述,應用區域邊界的封鎖性戰周早期性,將兩維答題委婉化為一維問題。
由邊界點導出三種形狀表達,分辨是曲率函數、質口距合、單立標函數。
(3)幾何參數法
形狀的里達和匹配採用更為簡略的區域特徵描述方法,例如採取有閉形狀定質測度(如矩、面積、周少等)的形狀參數法(shape factor)。在 QBIC 體系中,即是本用方度、偏偏口率、從軸方背和代數不變矩等幾何參數,%E8%AF%B4%E5%88%AB%E7%A6%BB%60%60%60,進行基於形狀特徵的圖像檢索。
需要闡明的是,形狀參數的提取,必需以圖像處置及圖像合割為條件,參數的正確性必定遭到分割效因的影響,對分割後果很好的圖像,形狀參數以至有法提取。
(4)形狀不變矩法
利用目標所佔區域的矩作為形狀描述參數。
(5)其它方法
遠暮年來,在外形的表現和匹配方面的農作借包含有限元法(Finite Element Method 或者 FEM)、旋委婉函數(Turning )和小波描述符(Wavelet Deor)等方法。
Ⅱ 基於小波和相對矩的形狀特徵提取與匹配
該方法先用小波變換模極大值失到多尺度邊緣圖像,然後計算每一尺度的 7個不變矩,再轉化為 10 個絕對矩,將一切標准上的相對矩作為圖像特徵向量,從而同一了區域和關閉、不封鎖解構。
四 空間關系特徵
(一)特色:所謂空間關系,是指圖像中分割進去的少個綱本之間的互相的空間位置或絕對方向關系,這些關系也可分為銜接/鄰交關系、接疊/堆疊關系和包括/容納關系等。通常空間地位信息可以分為兩類:絕對空間位置信息和相對空間地位信息。後一種關系弱調的是目的之間的相對情形,如高低右左關系等,後一種關系弱調的是綱本之間的間隔大小以及方位。隱而難睹,由盡對空間位放可推出相對空間位放,但表達相對空間位置信息常比擬簡略。
空間關系特徵的使用可增強對圖像外容的描述區分才能,但空間關系特徵常對圖像或目的的旋轉、正轉、標准變更等比擬遲鈍。另外,實踐運用中,僅僅本用空間信息去往是不夠的,不能無效正確天表達場景信息。為了檢索,除應用空間關系特徵外,還需要其它特徵來合作。
(二)常用的特徵提取與匹配方法
提取圖像空間關解特徵可以有兩種方法:一種方法是尾後對圖像進行主動分割,區分出圖像中所包括的對象或顏色區域,然先依據這些區域提取圖像特徵,並修坐索引;另一種方規律簡略天將圖像平均高地區分為若做規矩女塊,然後對每個圖像女塊提取特徵,並樹立索引。
姿態估計問題便是:斷定某一三維目的物體的方位指向問題。姿態估計在機器己視覺、靜作和蹤和雙照相機定本等良多范疇都有應用。
在不同范疇用於姿態估計的感測器是不一樣的,在這外從要道基於視覺的姿勢估量。
基於視覺的姿態估計根據使用的攝像機數量又可分為單目視覺姿態估計和多目視覺姿態估計。依據演算法的不同又可分為基於模型的姿態估計和基於學習的姿態估計。
一基於模型的姿態估計方法
基於模型的方法通常利用物體的幾何關系或許物體的特徵點來估計。其根本念念是利用某種幾何模型或構造來表示物體的結構和形狀,並通功提取某些物體特徵,在模型和圖像之間樹立止對應關系,然後通過幾何或者其它方法完成物體空間姿態的估計。這外所使用的模型既可能是繁單的幾何形體,如立體、方柱,也可能是某種幾何解構,也可能是通過激光掃描或其它方法取得的三維模型。
基於模型的姿態估量圓法是通功比對實在圖像和分解圖像,進行類似度盤算更舊物體姿勢。綱後基於模型的方法為了防止在齊局狀況空間中入行劣化搜尋,普通皆將劣化答題後落系成少個局部特徵的匹配問題,十分依附於部分特徵的正確檢測。該雜訊較大有法提取精確的局部特徵的時分,當方法的魯棒性遭到很大影響。
兩基於進修的姿勢估量辦法
基於學習的方法還幫於機器學習(machine learning)方法,從事前獲取的不同姿態下的訓練樣本中學習二維觀測與三維姿態之間的對應關系,並將學習得到的決議計劃規矩或來歸函數應用於樣本,所得結果作為對樣本的姿態估計。基於學習的方法一般採用全局觀測特徵,不需檢測或識別物體的局部特徵,具有較好的魯棒性。其缺陷是由於無法獲取在高維空間中進行連續估計所需要的密集采樣,因此無法保證姿態估計的精度與連續性。
基於學習的姿態估計方法流於姿態識別方法的思想。姿態識別需要事後定義多個姿態種別,每個類別包露了一定的姿態范疇;然後為每個姿態種別標注若干訓練樣本,通過模式分類的方法訓練姿態分類器以完成姿態識別。
這一類方法並不需要對物體進行修模,一般通過圖像的全局特徵進行匹配分析,可以有效的防止局部特徵方法在單純姿態和遮擋關系情況上呈現的特徵匹配歧義性問題。但是姿態識別方法只能將姿態區分到事前定義的幾個姿態類別中,並不能對姿態進行連續的精確的估計。
基於學習的方法一般採用全局觀測特徵,可以保證演算法具有較佳的魯棒性。但是這一類方法的姿態估計粗度很大水平依附於練習的充足水平。要念比較准確高地失到二維觀測與三維姿態之間的對當關系,便必需獲取腳夠稀集的樣原來教習決議計劃規矩和歸回函數。而一般來道所需要樣原的數目是隨狀況空間的維度指數級增添的,關於高維狀況空間,現實下不可能獲取進行准確估計所需要的密集采樣。果彼,無法失掉稀集采樣而易以保證估計的粗度與持續性,是基於進修的姿態估計方法無法戰勝的基本艱苦。
和姿態識別等典型的模式分類問題不同的是,姿態估計輸入的是一個高維的姿態向量,而不是某個種別的類標。果此這一類方法需要學習的是一個從高維觀測向量到高維姿態向量的映射,目前這在機器學習發域中仍是一個十分艱苦的問題。
特徵是描述模式的最好方法,且人們通常以為特徵的各個維度可以從不同的角度描述模式,在幻想情況上,維度之間是互挖完備的。
特徵提取的主要目標是落維。特徵抽取的主要念想是將本初樣本投影到一個矮維特徵空間,失掉最能反映樣本實質或進行樣原區分的矮維樣本特徵。
一般圖像特徵可以分為四類:直觀性特徵、灰度統計特徵、變換系數特徵與代數特徵。
直觀性特徵主要指幾何特徵,幾何特徵比較穩固,蒙人臉的姿態變化與光照前提等要素的影響小,但不難抽取,而且丈量精度不高,與圖像處理技巧親密相干。
代數特徵是基於統計學習方法抽取的特徵。代數特徵具有較高的辨認精度,代數特徵抽取方法又可以分為兩類:一種是線性投影特徵抽取方法;另外一種長短線性特徵抽取方法。
習性下,將基於主分量剖析和Fisher線性辨別分析所取得的特徵抽取方法,統稱為線性投影分析。
基於線性投影分析的特徵抽取方法,其根本念想是依據必定的機能目標來尋覓一線性變換,把本初信號數據緊縮到一個低維子空間,使數據在子空間中的分布愈加松湊,為數據的更佳描述供給手腕,同時計算的龐雜度失掉大大下降。在線性投影分析中,以主分量分析(PCA,或稱K-L變換)和Fisher線性辨別分析(LDA)最具代表性,繚繞這兩種方法所構成的特徵抽取演算法,未成為模式辨認范疇中最為經典和普遍使用的方法。
線性投影剖析法的重要毛病為:須要對大批的未有樣原入行進修,且對訂位、光照與物體是線性形變遲鈍,因此采散前提對辨認機能影響較大。
是線性特徵抽取方法也是研討的熱門之一。「核技拙」最遲利用在SVM中,KPCA和KFA是「核技能」的推狹運用。
核投影方法的根本思想是將原樣本空間中的樣本通過某種情勢的非線性映射,變換到一個高維以至無限維的空間,並還幫於核技能在舊的空間中應用線性的分析方法供系。由於舊空間中的線性方向也對應原樣本空間的非線性方向,所以基於核的投影分析得出的投影方向也對應本樣本空間的非線性方向。
核投影方法也有一些強點:幾何意義不明白,無法曉得樣本在非隱式映照後變成了什麼分布模式;核函數中參數的選取沒有相應挑選尺度,大少數只能採用經驗參數選取;不合適訓練樣本良多的情況,緣由是經由核映照後,樣本的維數即是練習樣本的個數,如因練習樣本數量很大,核映照後的向量維數將會很高,並將碰到計算量上的困難。
就應用發域來說,KPCA遙出有PCA應用的普遍。如因作為一般性的落維KPCA確切比PCA後果好,特殊是特徵空間不是一般的歐式空間的時候更為顯明。PCA可以通過大批的天然圖片學習一個子空間,但是KPCA做不到。
變換系數特徵指先對圖像進行Fourier變換、小波變換等,得到的系數後作為特徵進行識別。
『伍』 程序為什麼要加註釋加註釋有幾種方法各有何特點
程序加註釋對程序設計者本身是一個標記,在大型程序中,能及時有效的進行維護/修改。
對程序閱讀者來說,是一個解釋,能讓讀者通徹的了解程序和設計者的思路。
對企業來說,在人員接替時能保證穩定過渡。
一般C/C++這些的注釋有/* */ 和//,前面那種可以多行,從/*開始到*/之間的都將是注釋。
//的話緊限於該符號同行後面的內容。
由於現在編程語言太多,其他注釋類型也有。當你遇到哪種編程語言的程序,就網路一下該語言的注釋就OK
『陸』 Java像素碰撞檢測原理
大體有兩種方式,一種是基於屏幕像素顏色檢測,當移動的目標坐標像素的顏色與目標顏色相同時為發生碰撞。
另一種是坐標檢測,就是維持各感興趣物體的坐標數據,比如大炮打飛機,飛機和炮彈的坐標都保留著,判斷二者坐標相同時為發生碰撞。
『柒』 英文摘要翻譯(高分,急用,在線翻譯的不給分)
Based on using Canny operator to implement algorithms of image edge detection
Abstract: Image processing was used to analyze, make and process image, which was a technolegy to satisfy visual, mental and other demands.Image processing was also an application of siginal processing in image field. Image edge detection was the most important part of image processing. The main purpose of this paper was to use Canny operator to implement the image edge detection. In this paper, basic principle about the theory of edge detection based on Canny operator was firstly introced in detail, and then the detailed realization of the algorithe was illustrated. On these bases, JAVA language was used to achieve the functions of edge detection. The experiment result showed that Canny operator had a good function of picking-up gray image edge, and compared with other operators, its effects on image edge detection and picking up were relative ideal.
自己翻譯的,希望對你有幫助,請參考。。。。
『捌』 一段java的canny邊緣檢測代碼,求詳細註解,越詳細越好
汗個,這段代碼倒是有點像android的
就是將圖片大小排放計算出來顯示;
要注釋啊,傳源文件上來才好搞哦。裡面有不少自定義的類和方法
如:image2pixels();
『玖』 高級語言處理圖像作業,求幫忙,4月18日晚12點前要完成的,求給力可能
這種問題你去威客網懸賞去吧,耗精力
『拾』 cuda主要用於哪。具體是什麼。
CUDA CUDA(Compute Unified Device Architecture),顯卡廠商NVidia推出的運算平台。 CUDA是一種由NVIDIA推出的通用並行計算架構,該架構使GPU能夠解決復雜的計算問題。 它包含了CUDA指令集架構(ISA)以及GPU內部的並行計算引擎。 開發人員現在可以使用C語言來為CUDA架構編寫程序,C語言是應用最廣泛的一種高級編程語言。所編寫出的程序於是就可以在支持CUDA的處理器上以超高性能運行。 將來還會支持其它語言,包括FORTRAN以及C++。 隨著顯卡的發展,GPU越來越強大,而且GPU為顯示圖像做了優化。在計算上已經超越了通用的CPU。如此強大的晶元如果只是作為顯卡就太浪費了,因此NVidia推出CUDA,讓顯卡可以用於圖像計算以外的目的。 目前只有G80、G92、G94和GT200平台的NVidia顯卡才能使用CUDA,工具集的核心是一個C語言編譯器。G80中擁有128個單獨的ALU,因此非常適合並行計算,而且數值計算的速度遠遠優於CPU。 CUDA的SDK中的編譯器和開發平台支持Windows、Linux系統,可以與Visual Studio2005集成在一起。 Geforce8CUDA(Compute Unified Device Architecture)是一個新的基礎架構,這個架構可以使用GPU來解決商業、工業以及科學方面的復雜計算問題。它是一個完整的GPGPU解決方案,提供了硬體的直接訪問介面,而不必像傳統方式一樣必須依賴圖形API介面來實現GPU的訪問。在架構上採用了一種全新的計算體系結構來使用GPU提供的硬體資源,從而給大規模的數據計算應用提供了一種比CPU更加強大的計算能力。CUDA採用C語言作為編程語言提供大量的高性能計算指令開發能力,使開發者能夠在GPU的強大計算能力的基礎上建立起一種效率更高的密集數據計算解決方案。 從CUDA體系結構的組成來說,包含了三個部分:開發庫、運行期環境和驅動(表2)。 開發庫是基於CUDA技術所提供的應用開發庫。目前CUDA的1.1版提供了兩個標準的數學運算庫——CUFFT(離散快速傅立葉變換)和CUBLAS(離散基本線性計算)的實現。這兩個數學運算庫所解決的是典型的大規模的並行計算問題,也是在密集數據計算中非常常見的計算類型。開發人員在開發庫的基礎上可以快速、方便的建立起自己的計算應用。此外,開發人員也可以在CUDA的技術基礎上實現出更多的開發庫。 運行期環境提供了應用開發介面和運行期組件,包括基本數據類型的定義和各類計算、類型轉換、內存管理、設備訪問和執行調度等函數。基於CUDA開發的程序代碼在實際執行中分為兩種,一種是運行在CPU上的宿主代碼(Host Code),一種是運行在GPU上的設備代碼(Device Code)。不同類型的代碼由於其運行的物理位置不同,能夠訪問到的資源不同,因此對應的運行期組件也分為公共組件、宿主組件和設備組件三個部分,基本上囊括了所有在GPGPU開發中所需要的功能和能夠使用到的資源介面,開發人員可以通過運行期環境的編程介面實現各種類型的計算。 由於目前存在著多種GPU版本的NVidia顯卡,不同版本的GPU之間都有不同的差異,因此驅動部分基本上可以理解為是CUDA-enable的GPU的設備抽象層,提供硬體設備的抽象訪問介面。CUDA提供運行期環境也是通過這一層來實現各種功能的。目前基於CUDA開發的應用必須有NVIDIA CUDA-enable的硬體支持,NVidia公司GPU運算事業部總經理Andy Keane在一次活動中表示:一個充滿生命力的技術平台應該是開放的,CUDA未來也會向這個方向發展。由於CUDA的體系結構中有硬體抽象層的存在,因此今後也有可能發展成為一個通用的GPGPU標准介面,兼容不同廠商的GPU產品 CUDA 工具包是一種針對支持CUDA功能的GPU(圖形處理器)的C語言開發環境。CUDA開發環境包括: · nvcc C語言編譯器 · 適用於GPU(圖形處理器)的CUDA FFT和BLAS庫 · 分析器 · 適用於GPU(圖形處理器)的gdb調試器(在2008年3月推出alpha版) · CUDA運行時(CUDA runtime)驅動程序(目前在標準的NVIDIA GPU驅動中也提供) · CUDA編程手冊 CUDA開發者軟體開發包(SDK)提供了一些範例(附有源代碼),以幫助使用者開始CUDA編程。這些範例包括: · 並行雙調排序 · 矩陣乘法 · 矩陣轉置 · 利用計時器進行性能評價 · 並行大數組的前綴和(掃描) · 圖像卷積 · 使用Haar小波的一維DWT · OpenGL和Direct3D圖形互操作示例 · CUDA BLAS和FFT庫的使用示例 · CPU-GPU C—和C++—代碼集成 · 二項式期權定價模型 · Black-Scholes期權定價模型 · Monte-Carlo期權定價模型 · 並行Mersenne Twister(隨機數生成) · 並行直方圖 · 圖像去噪 · Sobel邊緣檢測濾波器 · MathWorks MATLAB® 新的基於1.1版CUDA的SDK 範例現在也已經發布了。 技術功能 ·在GPU(圖形處理器)上提供標准C編程語言 · 為在支持CUDA的NVIDIA GPU(圖形處理器)上進行並行計算而提供了統一的軟硬體解決方案 · CUDA兼容的GPU(圖形處理器)包括很多:從低功耗的筆記本上用的GPU到高性能的,多GPU的系統。 · 支持CUDA的GPU(圖形處理器)支持並行數據緩存和線程執行管理器 · 標准FFT(快速傅立葉變換)和BLAS(基本線性代數子程序)數值程序庫 · 針對計算的專用CUDA驅動 · 經過優化的,從中央處理器(CPU)到支持CUDA的GPU(圖形處理器)的直接上傳、下載通道 · CUDA驅動可與OpenGL和DirectX圖形驅動程序實現互操作 · 支持Linux 32位/64位以及Windows XP 32位/64位 操作系統 · 為了研究以及開發語言的目的,CUDA提供對驅動程序的直接訪問,以及匯編語言級的訪問 NVIDIA進軍高性能計算領域,推出了Tesla&CUDA高性能計算系列解決方案,CUDA技術,一種基於NVIDIA圖形處理器(GPU)上全新的並行計算體系架構,讓科學家、工程師和其他專業技術人員能夠解決以前無法解決的問題,作為一個專用高性能GPU計算解決方案,NVIDIA把超級計算能夠帶給任何工作站或伺服器,以及標准、基於CPU的伺服器集群 CUDA是用於GPU計算的開發環境,它是一個全新的軟硬體架構,可以將GPU視為一個並行數據計算的設備,對所進行的計算進行分配和管理。在CUDA的架構中,這些計算不再像過去所謂的GPGPU架構那樣必須將計算映射到圖形API(OpenGL和Direct 3D)中,因此對於開發者來說,CUDA的開發門檻大大降低了。CUDA的GPU編程語言基於標準的C語言,因此任何有C語言基礎的用戶都很容易地開發CUDA的應用程序。 由於GPU的特點是處理密集型數據和並行數據計算,因此CUDA非常適合需要大規模並行計算的領域。目前CUDA除了可以用C語言開發,也已經提供FORTRAN的應用介面,未來可以預計CUDA會支持C++、Java、Python等各類語言。可廣泛的應用在圖形動畫、科學計算、地質、生物、物理模擬等領域。 2008年NVIDIA推出CUDA SDK2.0版本,大幅提升了CUDA的使用范圍。使得CUDA技術愈發成熟 目前,支持CUDA的GPU銷量已逾1億,數以千計的軟體開發人員正在使用免費的CUDA軟體開發工具來解決各種專業以及家用應用程序中的問題。這些應用程序從視頻與音頻處理和物理效果模擬到石油天然氣勘探、產品設計、醫學成像以及科學研究,涵蓋了各個領域。 目前市面上已經部署了超過一億顆支持CUDA的GPU,數以千計的軟體開發人員正在使用免費的CUDA軟體工具來為各種應用程序加速。 CUDA 的核心有三個重要抽象概念: 線程組層次結構、共享存儲器、屏蔽同步( barrier synchronization),可輕松將其作為C 語言的最小擴展級公開給程序員。 CUDA 軟體堆棧由幾層組成,一個硬體驅動程序,一個應用程序編程介面(API) 和它的Runtime, 還有二個高級的通用數學庫,CUFFT 和CUBLAS。硬體被設計成支持輕 量級的驅動和Runtime 層面,因而提高性能。