NVIDIA 及 ATI 的 GPU 又或者 PS3(使用Cell) 技術稱為" Many Core"技術,這類的很多核心技術都奠基在所謂的Stream Processor(串流處理器)上,每個小核心都是一個Stream Processor,這類的Processor基本的運作模式是每一個時脈(Clock)都必須做一模一樣的計算,但是,每個Processor可以針對不同的資料進行一模一樣的計算,這就是向量平行的概念。
"Many Core"技術,各家提供的平行程式語言都不一樣,例如 NVIDIA 提供 CUDA,ATI 提供 CAL/IL,APPLE 更是提出了 OpenCL。 但是,學一個新語言需花很長的時間,而把一個現有的程式完全改寫成新的語言所花得時間更是所費不貲。
HMPP 正是一種新的很多核心技術的指令集。注意,他並非新的程式語言,而是指令集再加上一些工具,讓我們就可以很快速地將現有的程式(C / C++ / Fortran) 透過下指令的方式,也就是在現有程式中增加一些指令,就可以快速地將現有程式轉譯成 CUDA、CAL/IL,甚至是 OpenCL。這樣,可以縮短用戶將現有程式平行化至 Many Core 上面的時間,而 HMPP 具備全方位的功能,可以協助用戶一步一步把平行程式進行優化,達成最高效率,無須為了優化,甚至必須將整個程式再重新修改。而且,更重要的好處是,用戶僅僅只需維護他現有的程式即可,無須為了自己程式的 CPU 版本 GPU 版本作多重維護。HMPP 重視的不僅僅是Performance,他還為用戶設想,如何在很多核心平行上幫助用戶提昇整個 ROI。
|
![](../../images_2/hmpp/roi.jpg) |
|
在這樣的 ROI 公式之下,相信讓使用者可以深深地體認到使用 HMPP 為他們所帶來的實質效益。 |
|