CUDA C編程入門-編程介面

來源:互聯網
上載者:User

標籤:style   使用   strong   資料   代碼   工作   時間   管理   

  CUDA C給熟悉C程式設計語言的人提供一個簡單的途徑去編寫在裝置(GPU)上執行的代碼。

  由一個最小的C語言的擴充集和執行階段程式庫組成。

  核心的語言擴充在編程模型這一章節已經介紹過了。允許程式員定義核函數並且使用一些新的文法指定核函數每次運行時的grid和block的維數。可以在C語言擴充這個章節裡找到擴充的完整描述。所有的含有這些擴充的原始碼都需要使用nvcc編譯,nvcc的概述可以查看使用nvcc編譯這一小節。

  在CUDA C運行這一小節介紹運行時。運行時提供在主機執行的用於分配和回收裝置記憶體、裝置和主機記憶體之間傳輸資料、多個裝置的管理等的C函數。可以在CUDA 查考手冊中查看關於運行時的完整描述。

  運行時由低級的C API-可被應用訪問的CUDA驅動API,作為基礎。驅動API通過低級的概念比如CUDA上下文-就像主機處理器的上下文一樣、CUAD模組-就像裝置動態載入庫一樣而提供額外層級的控制。大多數應用程式因為不需要額外層級的控制,所以不會使用驅動API,而是用運行時時,上下文和模組管理是隱式的,這樣的結果是編寫的代碼就會簡單明了。驅動API在驅動API這一章節介紹,完整的描述在參考手冊。

3.1 使用NVCC編譯

  可以使用一個叫PTX的CUDA指令集架構編寫核函數,PTX的描述在PTX參考手冊。然而一般使用更加有效進階語言,比如C。這兩種情況,核函數都必須通過nvcc編譯成二進位代碼,這樣才能在裝置上執行。

  nvcc是一個編譯器,簡化編譯C和PTX代碼的流程:提供簡單和熟悉的命令列選項,執行相關命令去調用實現不同編譯階段的工具集。這節給出nvcc工作流程和命令列選項的概述。可以在nvcc使用者手冊找到完整的描述。

3.1.1 編譯的工作流程

3.1.1.1 離線編譯

  使用nvcc編譯的原始碼可以混有主機(在主機執行的)和裝置(在裝置執行的)的代碼。ncvv的工作流程主要在於分離主機和裝置的代碼:

  1. 編譯裝置代碼成裝配形式(PTX代碼)或者二進位形式(cubin對象)。
  2. 修改主機代碼:把調用核函數的<<<...>>>替換成必要的從PTX代碼和cubin對象載入和啟動並執行已經編譯的核函數的CUDA C運行時函數。

  修改的主機代碼輸出不是被另外的工具編譯的C代碼就是允許直接讓nvcc調用主機編譯器完成最後編譯階段的對象代碼。

  然後應用程式能:

  1. 連結已經編譯的主機代碼(大多數的情況下)
  2. 或者忽略已經被修改的主機代碼(如果有的話),使用CUDA驅動API載入和執行PTX或者cubin對象。

3.1.1.2 即時編譯

  任何被應用程式在運行時載入的PTX代碼都會被裝置驅動編譯成二進位代碼。這就叫做即時編譯。即時編譯增加應用載入的時間,但是能使應用從新的裝置驅動帶的新的效能更好的編譯器獲得益處。只有這一條路能使那些在編譯時間沒裝置的應用在裝置上運行,詳細在應用相容性這一小節描述。

  當裝置驅動程式為應用即時編譯一些PTX代碼時,為了避免應用再次調用時重複編譯,會自動緩衝產生的二進位代碼的副本。緩衝-指得是電腦緩衝,當裝置驅動更新時會自動無效,因此應用可以從新的的裝置驅動的更加完善的新的即時編譯器獲得益處。

  可用的控制即時編譯的環境變數在CUDA環境變數這一章節裡描述。

3.1.2 二進位相容性

  未完待續...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.