這個消息 Heresy 是在 nVIDIA 部落格看到的,原文是《CUDA Now Available For Multiple x86 Processors》。而實際上去年九月 GTC 2010 的時候,Heresy 有貼過一篇《CUDA 程式也將可以在 x86 CPU 上執行?nVIDIA 和 PGI 發表 CUDA-x86》的文章。當時的新聞就是 nVIDIA 和 PGI 共同發表了「CUDA-x86」 、準備讓 CUDA 的程式可以在 x86 CPU 上執行。
而這段期間來,Heresy 也一直沒有去注意它的後續發展,不過現在看來,這東西的產品已經做出來的!它的官方網站是在:http://www.pgroup.com/resources/cuda-x86.htm,
基本上,nVIDIA CUDA(簡介)是 nVIDIA 為了實現用自家 GPU 來進行通用大量平行化計算、充分發揮顯示卡上 GPU 計算能力所提出來的架構,而在一開始,就是提供 nVIDIA CUDA C 這種語言,讓程式開發者來使用。而理所當然的,使用 nVIDIA 提供的套件,所編譯出來的程式,也就只能在nVIDIA 的顯示卡上運作了∼
而 PGI(The Portland Group)所推出的 CUDA-x86(PGI CUDA C for x86 compiler)這個技術的目的,則是讓 CUDA C 的程式可以編譯成多核心/多處理器 x86 平台可以執行的程式!它在處理 CUDA C 的程式時的功能包括了:
- Inlining device kernel functions
- 將 chevron syntax 轉譯為 parallel/vector loops
- 使用多核心與 and SSE/AVX 指令集
而在執行時,每一顆核心會執行一個 CUDA Thread Block、以減少同步的需要。而 PGI 也相信,透過 CUDA C 來寫出 x86 的平行程式,在效能上有辦法到達其他平行化程式開發的水平(例如 OpenMP)。
不過,目前的 CUDA-x86 主要是針對 CUDA Runtime API 來做處理,Driver API 的部分則還沒有計畫去做;而某些 GPU 的功能(例如 texture memory)在目前的版本也還不支援。
PGI 目前對於 CUDA C for Multi-core x86 的規劃基本上分成三個階段:
- 第一個成品的發布,包含了大部分 CUDA C 的功能,但是它不是一個 performance release
- 2011 年第四季發布 Performance release,將充分利用多核心以及 SSE/AVX 來實作 low-overhead native parallel/SIMD execution
- 2012 年中、使用 PGI Unified Binary™ technology,讓單一執行檔可以同時在 x86 處理器或 GPU 上執行。
基本上,到了第三個階段的話,應該就相當方便了∼到時候只要放出一個執行檔,不管電腦裡有沒有 nVIDIA CUDA 相容的 GPU,也都可以執行了∼而開發者也不需要針對沒有支援 CUDA 的情況、另外去寫 CPU 版的程式了∼