brook

2003年,史丹福大學的Ian Buck等人對ANSI C進行擴展,開發了基於NVIDIA Cg的Brook源到源編譯器。Brook可以將類似C的brook C語言通過brcc編譯器編譯為Cg代碼,隱藏了利用圖形學API實現的細節,大大簡化了開發過程。

簡介

早期的Brook編譯效率很低,並且只能使用像素著色器進行運算。受GPU架構限制,Brook也缺乏有效的數據通信機制。AMD/ATI公司在其GPGPU通用計算產品Stream中採用了Brook的改進版本Brook+作為高級開發語言。Brook+的編譯器的工作方式與Brook不同,提高了效率。

概念

Brook+語言中兩個最關鍵的概念:

1. 流。流就是一些類型相同的數據,他們可以被分配到不同的流處理器中進行處理。

2. 核心。核心程式其實就是GPU硬體的行為程式,它指定了硬體的行為特性。

Brook+的核心函式是被Brcc(Brook Code Compiler)編譯的,編譯後生成三個檔案,其中兩個是.h和.cpp檔案,就是定義了一些和函式相關的類,還有一個最關鍵的就是IL(IL是指AMD Intermediate Language。是一種彙編形式的語言)代碼。有了這些檔案,這三個檔案再和用戶的其他源檔案一起編譯,連結,從而生成可執行性檔案。Brook+的程式在運行時,是需要Brook runtime的。Brook+的核心程式也可以被CPU執行,還可以進行調試。

Brook+的版本是1.4版本。已經被提交到了SourceForge上,應該是沒有太多的維護了。由於Brook+還有一些限制,所以在靈活性方面並不如CUDA好。而且由

於過多的封裝,效率也並不很高,不支持多GPU, rook+的kernel不支持高級的GPU命令,比如本地共享記憶體和原子操作等。唯一的好處就在於用Brook+開發比較簡便

相關詞條

相關搜尋

熱門詞條

聯絡我們