圖一: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
沒有留言:
張貼留言