CUDA程式設計 CPU計時與GPU計時

2021-10-24 22:17:43 字數 1214 閱讀 1041

使用cuda進行程式設計,主要目的就是時間上加速。為此,如何計時必不可少。在cuda中,我們可以使用cpu計時函式和gpu計時函式。對於cpu計時,我們在之前的文章(精確系統計時:秒、毫秒、微秒)中已經介紹在一般的c/c++程式設計中的計時方法。下面我們介紹在cuda中如何計時:

cpu計時

cuda中的核函式是非同步執行的,即呼叫核函式後(而非等待其執行結束)就繼續執行後面的語句。因此,使用cpu計時的時候,我們需要加上同步函式,這樣才能得到核函式的執行時間,否則就是呼叫時間。下面給出乙個簡單的例項,由於**簡單,這裡不再過多說明:

#include"cuda_runtime.h"

#include"device_launch_parameters.h"

#include#include#includeusing namespace std;

__global__ void kernel_function()

//timing using cpu

int main()

需要注意的是:在計時前最好先warming up一下,即先把要計時的函式執行一遍。

gpu計時

這裡我們可以使用cuda提供的事件管理api來實現計時,具體可以參考nvidia官方的文件。具體例項如下:

#include"cuda_runtime.h"

#include"device_launch_parameters.h"

#include#include#includeusing namespace std;

__global__ void kernel_function()

timing using gpu

int main()

cpu和gpu計時的結果分別如下:

另外,上述cpu和gpu計時上的主要區別在於是否需要同步:cpu計時需要在核函式後呼叫同步函式。為此,當需要同步時,我們可以使用cpu計時;當不能同步時,我們使用gpu計時。當然,gpu計時也能用於需要同步的場景,此時的同步函式cudadevicesynchronize()需要放置在計時模組的後面。

GPU計算與CUDA程式設計

1.來自nvidia的 cuda 並行程式設計框架是 gpgpu 正規化的一種特定的實現。它提供了gpu程式設計的簡易介面,基於cuda程式設計可以構建基於gpu計算的應用程式。2.cuda 在技術上是一種異構計算環境,也就是說它利用了同時在 cpu 和 gpu 上的協調計算。cuda 架構由主機 ...

GPU與CPU簡單區別

gpu的運算速度取決於僱了多少小學生,cpu的運算速度取決於請了多麼厲害的教授。教授處理複雜任務的能力是碾壓小學生的,但是對於沒那麼複雜的任務,還是頂不住人多。當然現在的gpu也能做一些稍微複雜的工作了,相當於公升級成初中生高中生的水平。但還需要cpu來把資料喂到嘴邊才能開始幹活,究竟還是靠cpu來...

GPU 高效能程式設計 CUDA 執行緒協作

並行執行緒塊的分解 在向量加法中,為向量中的每乙個元素都啟動乙個執行緒塊 add dev a,dev b,dev c 尖括號中的第乙個引數建立的執行緒塊的數量,第二個引數表示每個執行緒塊中建立的執行緒數量,所以上述啟動的執行緒數量為 n n 1 使用執行緒實現 gpu 上的向量求和 需要修改兩個地方...