2012-05-16 71 views

回答

1

From Wikipedia

程序員使用 '的CUDA C'(C具有Nvidia擴展和某些限制),通過PathScale公司Open64 C編譯器編譯。

所以,你的回答是:它使用了一個編譯器。

而且在其上可以在多個卡(source)運行的原因摸:

CUDA C/C++提供了一個抽象,它是你表達你希望你的程序來執行的手段。編譯器生成的PTX代碼也不是硬件專用的。在運行時,PTX被編譯用於特定的目標GPU--這是驅動程序的責任,每次新GPU發佈時都會更新。

+0

值得注意的是,最近的CUDA對於GPU代碼對象使用基於elf的胖二進制格式,並且可執行文件可以在同一應用程序中包含多個體繫結構的最終彙編器。所以經常不需要驅動程序重新編譯PTX代碼,運行時庫只需從fat二進制有效內容中選擇適當的代碼對象。 – talonmies

0

不僅限於cuda,directx或opengl中的着色器也被編譯爲某種字節代碼並被底層驅動程序轉換爲本地代碼。