使用CUDA加速CPU程式的步驟

2021-08-25 19:26:42 字數 396 閱讀 8595

通過效能分析工具(如vs)找到cpu程式最耗時的多個地方,並確定耗時程式的入口函式

將cpu函式進行清理

1.將迴圈部分的**找出來。

2.將函式內所用到的資料從c++類結構變成c的結構體。

3.標準化輸入輸出,保證其為c結構,並與原程式的資料進行無縫對接。

4.將迴圈內部的函式也做相同處理,最終得到c版本的且輸入輸出與原程式對接的cpu程式。

5.保證清理後的cpu程式正常正確執行。

將清理後的cpu函式變為cuda核函式

1.申請裝置記憶體

2.拷貝主機記憶體到裝置記憶體

3.核函式計算

4.拷貝裝置記憶體回主機記憶體

5.釋放資源

優化cuda核函式

效能分析

如何使用CUDA達到加速程式

from 1 block內的 thread 我們是都飽和使用嗎?答 不要,一般來說,我們開128 或256 個執行緒,二維的話就是 16 16。2 grid內一般用幾個 block呢?答 牛人告訴我,一般來說是你的流處理器的4 倍以上,這樣效率最高。回答這兩個問題的解釋,我想抄襲牛人的一段解釋,解釋...

使用cpu如何加速linux命令?

我們都知道 linux系統 中grep,bzip2,wc,awk,sed等等,都是單執行緒的,只能使用乙個cpu核心。那麼如何才能使用這些核心?要想讓linux命令使用所有的cpu核心,我們需要用到gnu parallel命令,它讓我們所有的cpu核心在單機內做神奇的map reduce操作,當然,...

使用mkldnn為cpu執行網路加速

最近要在用crnn,跑的pytorch模型,本來在gpu跑的好好的,但是後來由於各種原因,需要在cpu上跑,才發現cpu上跑的是真的慢,後來發現了mkldnn這個東西,這是intel開發的開源專案,就是針對cpu上執行神經網路做了一些並行優化。用了以後,大概速度快了7,8倍吧,效果還是比較明顯的。g...