導航:首頁 > 源碼編譯 > 基於gpu的rma演算法

基於gpu的rma演算法

發布時間:2022-12-20 08:58:21

A. 計算機視覺領域主流的演算法和方向有哪些

人工智慧是當下很火熱的話題,其與大數據的完美結合應用於多個場景,極大的方便了人類的生活。而人工智慧又包含深度學習和機器學習兩方面的內容。深度學習又以計算機視覺和自然語言處理兩個方向發展的最好,最火熱。大家對於自然語言處理的接觸可能不是很多,但是說起計算機視覺,一定能夠馬上明白,因為我們每天接觸的刷臉支付等手段就會和計算機視覺掛鉤。可以說計算機視覺的應用最為廣泛。

目標跟蹤,就是在某種場景下跟蹤特定對象的過程,在無人駕駛領域中有很重要的應用。目前較為流行的目標跟蹤演算法是基於堆疊自動編碼器的DLT。語義分割,則是將圖像分為像素組,再進行標記和分類。目前的主流演算法都使用完全卷積網路的框架。實例分割,是指將不同類型的實例分類,比如用4種不同顏色來標記4隻貓。目前用於實例分割的主流演算法是Mask R-CNN。

B. 做數據集群訓練,如何比較好的資源調度做到程序穩定(多深度學習GPU的調度策略)

藍海大腦液冷數據中心研發人員指出:這是一個就是GPU集群管理調度的一個問題,現在主流的GPU系統在國內可以分成2部分,一類是交通系統,一類是基於容器的一個比如K8S的調度編排的一個調度系統。K8S裡面是支持了GPU設備的自發現,然後你只是去提交GPU的一個請求的個數以及GPU資源的類型,然後它會自動去幫你去做調度。另外的話是以HPC為傳統的那種,比如說PPS或SLAM調度,SLAM裡面也有支持GPU設備的一個自我調度,然後把GPU設備作為一個計算對象可以去請求。當然由於GPU系統的拓撲結構是一樣的,不同的調度演算法,給你分配的GPU資源可能會存在一些GPU拓撲不是最優的情況。然後針對這種情況,不管是SLAM還是K8S系統,NVIDIA寫了一個拓撲自我檢測的小程序演算法,它可以很好的集成到K8S以及SLAM裡面,然後在做GPU資源分配時,根據這個演算法去分配GPU資源,以保證你分配的CPU資源是最優的,拓撲最優,而且也會保證以後的分配,對以後資源的拓撲最優也會有保證。

C. HartSift: 一種基於GPU的高准確性和實時SIFT

尺度不變特徵變換 (SIFT) 是最流行和最強大的特徵提取演算法之一,因為它對尺度、旋轉和光照保持不變。它已被廣泛應用於視頻跟蹤、圖像拼接、同時定位和映射(SLAM)、運動結構(SFM)等領域。然而,高計算復雜度限制了其在實時系統中的進一步應用。這些系統必須在准確性和性能之間進行權衡以實現實時特徵提取。他們採用其他更快但精度較低的演算法,如 SURF 和 PCA-SIFT。為了解決這個問題,本文提出了一種使用 CUDA 的 GPU 加速 SIFT,命名為 HartSift,充分利用單機CPU和GPU的計算資源,實現高精度、實時的特徵提取。實驗表明,在 NIVDIA GTX TITAN Black GPU 上,HartSift 可以根據圖像的大小在 3.14-10.57ms (94.61-318.47fps) 內處理圖像。此外,HartSift 分別比 OpenCV-SIFT(CPU 版本)和 SiftGPU(GPU 版本)快 59.34-75.96 倍和 4.01-6.49 倍。同時,HartSift 的性能和 CudaSIFT(迄今為止最快的 GPU 版本)的性能幾乎相同,而 HartSift 的准確度遠高於 CudaSIFT。

SIFT演算法可以提取大量顯著特徵,這些特徵在縮放、旋轉、光照和3D視點保持不變,還提供了跨越雜訊和仿射失真的穩健匹配。但SIFT的高計算復雜度限制了其在大規模數據和實時系統中的進一步應用。而復雜度較低的演算法,如SURF、PCA-SIFT的准確性又不太高。因此,在主流計算平台上實現高精度、實時的SIFT是一個重要而有意義的研究課題。

而SIFT演算法具有很好的並行性,可以正確移植到GPU上。因此,在配備GPU的異構計算系統上實現高性能的SIFT具有重要的實用價值。

SIFT 演算法包含三個階段,包括高斯差分(DoG)金字塔的構建、精確的關鍵點定位和 128 維描述符生成。由於每個階段都有自己的並行特性,因此必須使用不同的並行粒度和優化來實現高性能。尤其是後兩個階段,負載不平衡不利於GPU優化,會導致性能下降。

本文的主要貢獻和創新可以概括如下:

有許多工作嘗試在GPU上使用SIFT演算法。

然而,為了實現高性能,他們省略了 SIFT 演算法的一些重要步驟,例如將輸入圖像加倍、保持尺度變化的連續性和擬合二次函數以定位準確的關鍵點信息。作者的實驗表明,這些遺漏會導致 SIFT 丟失很多關鍵點和准確性。

Lowe將輸入圖像尺寸加倍作為高斯金字塔 的最底層,每個尺度 通過高斯卷積產生:

高斯金字塔確定之後,利用相同Octave的層級相減,得到差分金字塔:

其中 ,在本文中, .

檢測尺度空間極值

將DoG金字塔每個像素與相鄰像素比較,同層8個,上下層9個,若像素是局部最大值或局部最小值,將其視為關鍵點候選。

去除無效關鍵點

去除較低對比度和不穩定邊緣響應的候選關鍵點,通過將3D二次函數擬合到附近數據執行子像素插值,以獲取精確的位置、比例和主曲率比。

方向分配

將候選關鍵點周圍的梯度累積到36 bins的直方圖中,根據每層的尺度計算搜索半徑。每個緊鄰像素由一個高斯加權窗口加權,梯度方向累計到36 bins的方向直方圖中。峰值為主要梯度方向,同時超過峰值80%的局部峰值bin也被視為關鍵點方向。

對關鍵點周圍像素計算梯度直方圖,搜索半徑比上一步驟大得多,同樣用一個高斯加權函數用於為每個鄰居的梯度值分配權重。

根據梯度方向將最終的梯度值累積到一個 360-bin 的圓形方向直方圖。最後,直方圖將被歸一化、平滑並轉換為 128D 描述符。

構建金字塔應該保持順序,以保證尺度空間變化連續性。Acharya和Bjorkman為加快這一過程,犧牲准確性打破構建順序。考慮到不能使准確性降低,構建順序在HartSift中保留。

分離卷積核

對於 大小的卷積核處理 大小的圖像需要進行 次運算,如果將2D卷積核拆解為兩個1D的卷積核,計算量減少至 . 通過使用共享內存和向量化方法,更容易實現合並全局內存訪問並減少一維卷積的冗餘訪問。

Uber 內核

Uber內核將多個不同任務放到一個物理內核中,在一個內核中並行處理任務,而不需要在內核之間切換。差分金字塔第 層由高斯金字塔第 和第 層決定。將高斯差分金字塔和高斯卷積核封裝在單個核中,可以充分挖掘並行性。

線程不需要重復讀取高斯金字塔第 層的值,這是由於第 層的值計算完後,結果會放在寄存器內而不是全局內存中。藉助Uber內核的優勢,我們可以節省 的空間和 的內核運行時間

異構並行

HartSift 採用異構並行方法來加速這一階段。CPU 和 GPU 將並行協作,構建 DoG 金字塔。

由於GPU處理小圖像沒有優勢,作者將 以下的圖像放到CPU處理,大圖像放到GPU處理。用戶也可以自行設置分離點,確保CPU和GPU負載平衡。

存在兩個問題:

負載均衡

Warp是GPU最小並行執行單元,即以鎖步方式執行的 32 個線程的集合。若負載不均衡,則warp執行時間取決於最後一個線程完成的時間,warp負載不均衡會導致GPU效率降低。

由於候選關鍵點分布的隨機性,幾乎所有經線都包含不同數量的空閑線程。如果這些warp繼續處理以下部分,就會出現兩個級別的負載不平衡.

在去除無效的候選關鍵點部分時,線程將進行亞像素插值以獲得准確的候選關鍵點信息,從而去除具有低對比度或不穩定邊緣響應的關鍵點候選。換句話說,一些線程會比其他線程更早返回一次。負載不平衡會變得更加嚴重。

為了突破性能瓶頸,HartSift 引入了重新平衡工作負載和多粒度並行優化。

重新平衡工作負載

當檢測到負載不平衡時,HartSift 將通過啟動具有適當粒度的新內核並分派每個具有 32 個活動線程的新經線來重新平衡工作負載。

此外,啟動三個內核分別處理這三個部分,不僅可以重新平衡工作量,還可以根據不同部分的並行特性提供多粒度的並行。

多粒度並行

重新平衡工作負載優化保證每個內核中的線程和經線被完全載入,多粒度並行優化保證工作負載將平均分配到線程和經線。此外,不同內核的並行粒度取決於工作負載的特性。

HartSift通過將一個線程映射到一個或多個像素,採用與關鍵點候選檢測部分和無效關鍵點去除部分並行的線程粒度。然而,線程粒度並行會導致方向分配部分的負載不平衡,因為不同關鍵點的相鄰區域半徑不同。線程粒度並行會為單個線程分配過多的工作,這在某些情況下限制了硬體資源的利用率。所以在這部分應用混合粒度並行:扭曲粒度構建直方圖,線程粒度找出並將主導方向分配給相應的關鍵點。

基於扭曲的直方圖演算法

作者針對每個關鍵點提出了一種基於扭曲粒度和原子操作的高性能直方圖演算法,以充分利用局部性。

該階段關鍵點的鄰域半徑遠大於前一階段。需要為每個關鍵點累積數千個鄰居到一個 360-bin 直方圖。如果採用前一階段的基於原子扭曲的直方圖演算法,會對這一階段的性能產生不同的影響。

HartSift引入了一種atomic-free的直方圖演算法,進一步提升了這一階段的性能。

該演算法包含三個步驟:

為了消除線程間的負載不平衡,實現全局合並訪問,HartSift 使用一個warp 來處理一個keypoint 的所有鄰居。當線程計算出它們的方向 bin 時,它們需要根據bin變數的值將梯度值累加到局部直方圖。考慮到有如此多的鄰居並且一個經線的一些線程可能具有相同的 bin,演算法1引入了一種無原子的多鍵約簡方法來累積每個經線的部分和。這種方法可以利用warp級shuffle和vote指令完全消除原子操作和本地同步。它根據bin對經紗的線程進行分組並指定每組具有最低車道的線程作為隊長線程。隊長線程將保存他們自己的 bin 的部分總和,並將它們並行地累積到駐留在共享內存中的本地直方圖,而不會發生 bank 沖突和同步。在遍歷所有鄰居後,HartSift 將最終的局部直方圖復制到駐留在全局內存中的全局直方圖。

本文提出了一種GPU上的並行SIFT,命名為Hart-Sift,它可以在單機內同時使用CPU和GPU來實現高精度和實時的特徵提取。HartSift根據每個階段的不同特點,通過適當採用不同的優化策略來提升性能,例如負載均衡、基於warp的直方圖演算法和不同尺度樣本的atomic-free直方圖演算法等。在NVIDIA GTX TITAN Black GPU上,HartSift可以在3.14 ~ 10.57ms(94.61 ~ 318.47fps)內提取高精度特徵,輕松滿足高精度和實時性的苛刻要求。另外,與OpenCV-SIFT和SiftGPU相比,HartSift獲得了59.34 ~ 75.96倍和4.01 ~ 6.49倍加速分別。同時,HartSift 和 CudaSIFT 的性能幾乎相同,但 HartSift 遠比 CudaSIFT 准確。

D. 如何用python一門語言通吃高性能並發,GPU計算和深度學習

第一個就是並發本身所帶來的開銷即新開處理線程、關閉處理線程、多個處理線程時間片輪轉所帶來的開銷。

實際上對於一些邏輯不那麼復雜的場景來說這些開銷甚至比真正的處理邏輯部分代碼的開銷更大。所以我們決定採用基於協程的並發方式,即服務進程只有一個(單cpu)所有的請求數據都由這個服務進程內部來維護,同時服務進程自行調度不同請求的處理順序,這樣避免了傳統多線程並發方式新建、銷毀以及系統調度處理線程的開銷。基於這樣的考慮我們選擇了基於Tornado框架實現api服務的開發。Tornado的實現非常簡潔明了,使用python的生成器作為協程,利用IOLoop實現了調度隊列。

第二個問題是資料庫的性能,這里說的資料庫包括MongoDB和Redis,我這里分開講。

先講MongoDB的問題,MongoDB主要存儲不同的用戶對於驗證的不同設置,比如該顯示什麼樣的圖片。
一開始每次驗證請求都會查詢MongoDB,當時我們的MongoDB是純內存的,同時三台機器組成一個復制集,這樣的組合大概能穩定承載八九千的qps,後來隨著我們驗證量越來越大,這個承載能力逐漸就成為了我們的瓶頸。
為了徹底搞定這個問題,我們提出了最極端的解決方案,乾脆直接把資料庫中的數據完全緩存到服務進程里定期批量更新,這樣查詢的開銷將大大降低。但是因為我們用的是Python,由於GIL的存在,在8核伺服器上會fork出來8個服務進程,進程之間不像線程那麼方便,所以我們基於mmap自己寫了一套夥伴演算法構建了一個跨進程共享緩存。自從這套緩存上線之後,Mongodb的負載幾乎變成了零。
說完了MongoDB再說Redis的問題,Redis代碼簡潔、數據結構豐富、性能強大,唯一的問題是作為一個單進程程序,終究性能是有上限的。
雖然今年Redis發布了官方的集群版本,但是經過我們的測試,認為這套分布式方案的故障恢復時間不夠優秀並且運維成本較高。在Redis官方集群方案面世之前,開源世界有不少proxy方案,比如Twtter的TwemProxy和豌豆莢的Codis。這兩種方案測試完之後給我們的感覺TwemProxy運維還是比較麻煩,Codis使用起來讓人非常心曠神怡,無論是修改配置還是擴容都可以在配置頁面上完成,並且性能也還算不錯,但無奈當時Codis還有比較嚴重的BUG只能放棄之。
幾乎嘗試過各種方案之後,我們還是下決心自己實現一套分布式方案,目的是高度貼合我們的需求並且運維成本要低、擴容要方便、故障切換要快最重要的是數據冗餘一定要做好。
基於上面的考慮,我們確定基於客戶端的分布式方案,通過zookeeper來同步狀態保證高可用。具體來說,我們修改Redis源碼,使其向zookeeper注冊,客戶端由zookeeper上獲取Redis伺服器集群信息並根據統一的一致性哈希演算法來計算數據應該存儲在哪台Redis上,並在哈希環的下一台Redis上寫入一份冗餘數據,當讀取原始數據失敗時可以立即嘗試讀取冗餘數據而不會造成服務中斷。

E. GPU上圖像拼接的快速計算

圖像拼接已被研究並廣泛應用於計算機科學的許多領域,但在特徵匹配、扭曲和混合步驟中存在大量計算。從而無法滿足某些應用的實時性需求。幸運的是,已經在圖形處理器單元 (GPU) 上開發並實現了一些可以加快拼接過程的相關並行操作。在本文中,我們使用統一計算設備架構 (CUDA) 提出了基於 GPU 的圖像拼接的並行實現。我們在執行時間方面獲得了比在中央處理單元 (CPU) 上實現更好的結果。在實驗中使用集成 GPU GTX745 時,我們對大輸入圖像實現了高達 27.6 倍的加速比。

典型的拼接過程主要包括三個不同的圖像處理步驟,即配准、扭曲和插值以及混合。圖像配準是圖像拼接的關鍵任務。配準是指在描繪同一場景的一對圖像之間建立幾何變換,該變換由一個8自由度的平面單應性決定。

GPU以其強大的並行計算能力吸引許多領域的研究,作為一種協處理器對計算量大的演算法加速已成為實踐的重要途徑。在前人的研究中,他們都避免了考慮兩個極其耗時的步驟,即特徵匹配和隨機樣本共識(RANSAC)。作為圖像配准中的兩個關鍵過程,在提出的 GPU 加速並行演算法中應考慮它們。

使用GPU並行計算會遇到兩個限制

CUDA的出現解決了上述問題,並且CUDA使用C語言,最初為CPU編寫的C語言函數可以移植到CUDA內核,無需修改。

在CUDA中,一定數量的線程被分組到一個塊中,一定數量的塊以規則的網格模式在邏輯上排列(見圖1)。每個塊都映射到一個多處理器,一個多處理器可以同時運行多個線程塊。由於本地資源(寄存器和共享內存)在塊之間進行劃分,包含在同一塊中的線程可以訪問相同的共享內存並快速實現同步操作。但是,不同塊中的線程並不能直接實現通信和同步。除了本地寄存器和共享內存,所有線程都可以訪問全局內存、常量內存和紋理內存。

A. 特徵匹配

令點 經過仿射變換後得到 ,即

向量 是平移分量, 控制縮放、旋轉效果。利用齊次坐標系,方程(2)也可以寫為

接著計算兩幅圖像特徵點之間的歐幾里得距離,並將距離按照升序排序,比較升序排序中第一和第二的比值如果小於某個閾值,則認為是匹配點。

由於 中有六個未知參數,隨機選擇3對不共線的點匹配 ,使用該矩陣 計算剩餘 對匹配點的誤差。執行大量迭代,直到內點對最多。可以使用最小二乘估計器估計所有六個參數。

B. 變形和插值

扭曲變形過程中,可能使像素點位置出現負值或者沒有數值與之對應,在這種搶礦下需要插值演算法創建更平滑和准確的數值,進一步減少翹曲中產生的變形。最常用的插值方法是最近鄰插值、雙線性插值和雙三次插值。考慮到精度和計算復雜度之間的權衡,實驗採用雙線性插值演算法。

C. 混合

為了實現並行計算,本文採用了基於羽化的混合方法,其混合函數可以表示為:

其中 是像素 的權重函數。

A. 並行匹配

匹配分為粗匹配和精匹配。粗匹配過程中,塊線程數由特徵元素數決定,每個塊可以實現一個關鍵點之間的匹配,每個線程計算兩個圖像兩個特徵向量的距離。在計算完所有距離後,使用並行計算的歸並排序對距離值排序。最後,所有塊得到的匹配結果存儲在全局內存中,然後傳送到CPU。

精匹配過程,設計內核執行RANSAC迭代,只啟動一個block,線程數為 ,首先用CPU將三個非共線點計算得到的變換矩陣 ,然後將 、閾值和剩餘 個點傳到GPU,判斷內外點。

通過內存分配,可以實現精細匹配優化。

B. 平行變形和插值

將 矩陣的逆矩陣 存放在常量內存中,由於需要頻繁地調用。將待校正的圖像存放在紋理內存中,紋理內存是專門為本地訪問模式設計的。

為了進一步提升性能,若兩個坐標小數部分小於0.2則強度值分配為整數部分,否則使用雙線性插值。

C. 並行混合

由於混合數是像素和像素的混合,因此線程數等於重疊部分包含的像素。令重疊圖像的列數設置為16的倍數。 gridDim.x的大小等於重疊圖像的行數,gridDim.y的大小等於重疊圖像的列數重疊圖像除以16。

基於 CPU 的演算法在配備 16GMB DDR3 RAM 的 Intel Core i7-4790、3.60GHz 處理器上實現。基於 GPU 的演算法在 NVIDIA GeForce GTX745 集成顯卡上進行測試,每塊最大 1024 個線程和 4096 MB 全局內存。

可以清楚地看到,這兩種圖像之間幾乎沒有差異。原因是實驗中使用的GPU卡支持浮點計算,與CPU版本相比產生的誤差非常小。

在本文中,我們提出了一種使用 CUDA 架構在 GPU 上運行的並行圖像拼接方法。順序演算法通過幾個 CUDA 內核轉換為並行版本。通過使用不同類型的內存,我們實現了並行演算法的優化。同時,將GPU獲得的結果與CPU獲得的結果進行比較,我們實現了高達27.6的加速比。盡管所提出的方法顯著提高了計算性能,但仍有許多工作要做。例如,更精確的插值方法(雙三次插值)和可變權重 c( x, y) 可以考慮進一步改善鑲嵌結果。此外,並行鑲嵌演算法也可以在多個GPU平台上運行,對於大數據可以更有效地執行演算法。在今後的工作中,我們將一一處理這些問題。

F. c# 如何使用gpu計算

如何通過編程將GPU用於通用計算任務

隨著現代圖形處理器(GPU)可編程能力及性能的提高,應用開發商們一直希望圖形硬體可以解決以前只有通用CPU才能完成的高密集計算任務。盡管利用通用GPU進行計算很有發展前景,但傳統圖像應用編程介面仍然將GPU抽象成一個包括紋理、三角形和像素在內的圖像繪制器。尋找一種能夠使用這些基本元素的映射演算法並不是一項簡單的操作,即便對最先進的圖形開發商而言也是如此。
幸運的是,基於GPU的計算從概念上講很容易理解,並且現有多種高級語言和軟體工具可以簡化GPU的編程工作。但是,開發商必須首先了解GPU在圖像繪制過程中是如何工作的,然後才能確定可用於計算的各個組件。
在繪制圖像時,GPU首先接收宿主系統以三角頂點形式發送的幾何數據。這些頂點數據由一個可編程的頂點處理器進行處理,該處理器可以完成幾何變換、亮度計算等任何三角形計算。接下來,這些三角形由一個固定功能的光柵器轉換成顯示在屏幕上的單獨「碎片(fragment)」。在屏幕顯示之前,每個碎片都通過一個可編程的碎片處理器計算最終顏色值。

計算碎片顏色的運算一般包括集合向量數學操作以及從「紋理」中提取存儲數據,「紋理」是一種存儲表面材料顏色的點陣圖。最終繪制的場景可以顯示在輸出設備上,或是從GPU的存儲器重新復制到宿主處理器中。
可編程頂點處理器和碎片處理器提供了許多相同的功能和指令集。但是,大部分GPU編程人員只將碎片處理器用於通用計算任務,因為它通常提供更優的性能,而且可以直接輸出到存儲器。
利用碎片處理器進行計算的一個簡單例子是對兩個向量進行相加。首先,我們發布一個大三角形,其所包含的碎片數量和向量大小(容納的元素)相同。產生的碎片通過碎片處理器進行處理,處理器以單指令多數據(SIMD)的並行方式執行代碼。進行向量相加的代碼從存儲器中提取兩個待加元素,並根據碎片的位置進行向量相加,同時為結果分配輸出顏色。輸出存儲器保存了向量和,這個值在下一步計算中可以被任意使用。
可編程碎片處理器的ISA類似於DSP或Pentium SSE的指令集,由四路SIMD指令和寄存器組成。這些指令包括標准數·運算、存儲器提取指令和幾個專用圖形指令。
GPU與DSP的比較
GPU在幾個主要方面有別於DSP架構。其所有計算均使用浮點演算法,而且目前還沒有位或整數運算指令。此外,由於GPU專為圖像處理設計,因此存儲系統實際上是一個二維的分段存儲空間,包括一個區段號(從中讀取圖像)和二維地址(圖像中的X、Y坐標)。
此外,沒有任何間接寫指令。輸出寫地址由光柵處理器確定,而且不能由程序改變。這對於自然分布在存儲器之中的演算法而言是極大的挑戰。最後一點,不同碎片的處理過程間不允許通信。實際上,碎片處理器是一個SIMD數據並行執行單元,在所有碎片中獨立執行代碼。
盡管有上述約束,但是GPU還是可以有效地執行多種運算,從線性代數和信號處理到數值模擬。雖然概念簡單,但新用戶在使用GPU計算時還是會感到迷惑,因為GPU需要專有的圖形知識。這種情況下,一些軟體工具可以提供幫助。兩種高級描影語言CG和HLSL能夠讓用戶編寫類似C的代碼,隨後編譯成碎片程序匯編語言。這些語言編譯器可以從Nvidia和微軟公司的網站免費下載。盡管這些語言大大簡化了描影匯編代碼的編寫,但實際應用時仍然必須使用圖形API來建立並發布計算任務。
Brook是專為GPU計算設計,且不需要圖形知識的高級語言。因此對第一次使用GPU進行開發的工作人員而言,它可以算是一個很好的起點。Brook是C語言的延伸,整合了可以直接映射到GPU的簡單數據並行編程構造。
經GPU存儲和操作的數據被形象地比喻成「流」(stream),類似於標准C中的數組。核心(Kernel)是在流上操作的函數。在一系列輸入流上調用一個核心函數意味著在流元素上實施了隱含的循環,即對每一個流元素調用核心體。Brook還提供了約簡機制,例如對一個流中所有的元素進行和、最大值或乘積計算。
Brook編譯器是一個源到源的編譯器,能夠把用戶的核心代碼映射成碎片匯編語言,並生成C++短代碼,從而鏈接到大型應用中。這允許用戶只把應用中的性能關鍵部分輸入Brook。Brook還完全隱藏了圖形API的所有細節,並把GPU中類似二維存儲器系統這樣許多用戶不熟悉的部分進行了虛擬化處理。
用Brook編寫的應用程序包括線性代數子程序、快速傅立葉轉換、光線追蹤和圖像處理。Brook的編譯器和實時運行環境可以從http://brook網站上免費獲取。
sourceforge.net網站也為許多此類應用提供資源。利用ATI的X800XT和Nvidia的GeForce 6800 Ultra型GPU,在相同高速緩存、SSE匯編優化Pentium 4執行條件下,許多此類應用的速度提升高達7倍之多。
對GPU計算感興趣的用戶努力將演算法映射到圖形基本元素。類似Brook這樣的高級編程語言的問世使編程新手也能夠很容易就掌握GPU的性能優勢。訪問GPU計算功能的便利性也使得GPU的演變將繼續下去,不僅僅作為繪制引擎,而是會成為個人電腦的主要計算引擎。

閱讀全文

與基於gpu的rma演算法相關的資料

熱點內容
s型命令 瀏覽:23
php年薪5年 瀏覽:67
如何上網上設個人加密賬戶 瀏覽:44
linux打開ssh服務 瀏覽:78
微信位置可以加密嗎 瀏覽:470
演算法蠻力法 瀏覽:438
隨機排練命令 瀏覽:147
python多進程並發 瀏覽:41
安卓軟體安裝如何躲避安全檢測 瀏覽:647
奇幻潮翡翠台源碼百度雲盤 瀏覽:187
什麼軟體可以免費pdf轉word 瀏覽:15
php正則表達式大全 瀏覽:394
androidntp時間 瀏覽:299
輪機長命令簿英文 瀏覽:148
oppo鈴聲設置被加密怎麼處理 瀏覽:548
粵苗app圖形驗證碼怎麼填 瀏覽:899
管家婆架設雲伺服器 瀏覽:254
php的登錄界面代碼 瀏覽:997
php開發客戶端 瀏覽:998
theisle測試服怎麼搜伺服器 瀏覽:447