2014年5月9日 星期五

CUDA程式執行流程(CUDA Programming Flow)

在上一篇簡單介紹了CUDA是什麼之後,我們來講講CUDA基本的programming flow,

圖一:CUDA Programming Flow
如圖一流程:

1. 先在CPU端準備好data
2. 把data從GPU端傳送到GPU端
3. 呼叫GPU function運算
4. GPU執行程式
5. 把data從GPU傳送到CPU


簡單的來說就是我GPU需要你CPU先給我資料,GPU運算完後再把資料丟給你CPU,圖二我們搭配其CUDA 常用的API來對這流程作說明:

圖二:CUDA Programming Flow - API

一、配置Device Memory
  • Device為GPU端
  • 使用cudaMalloc API


二、將Host端資料Copy至Device端的Memory
  • Host端CPU端
  • 使用cudaMemcpy API
  • 參數設定:cudaMemcpyHostToDevice


三、執行Kernel
  • 可執行多個Kernel
  • Kernel所指為GPU所處理的函式

四、將Device端運算完之資料Copy回Host端
  • 使用cudaMemcpy API
  • 參數設定:cudaMemcpyDeviceToHost

五、釋放所分配之記憶體
  • 使用cudaFree API

以上是CUDA程式運算流程以及常用的API,下一篇我們再來仔細討論如何使用這些API,並撰寫簡單的code


沒有留言:

張貼留言