程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 數組求和的快速方法(利用cuda的共享內存)--第三部分之性能分析

數組求和的快速方法(利用cuda的共享內存)--第三部分之性能分析

編輯:C++入門知識


測試的數組數量是 const int num_elements = 1<<20;

運算次數是1000次。



發現gpu的分配內存和拷貝操作很花時間。


1 對數量為 1<<20的數組,1000次cpu求和操作,時間是7720.0 ms。


2 在gpu,一次分配內存和拷貝,1000次求和,時間是360.0 ms。


3 在gpu,1000次分配內存和拷貝,1000次求和,時間是2700.0 ms。


哈哈,如果省去分配內存和拷貝時間,求和操作,在 gpu比cpu快20倍。

但是加上的話,就快不了多少了。

所以,設計GPU程序的時候,一定要減少內存分配和拷貝的操作。

其實可能內存分配花不了多少時間,主要是拷貝, 1<<20這麼多個元素拷貝,想想都知道久。



做了個一次的實驗,

cpu是10ms。

gpu,加上分配內存和拷貝,要60ms,

不算內存分配和拷貝,0ms。


所以,如果數據本來是在gpu的話,那gpu做計算肯定快。

但是如果數據本來在cpu,先拷貝到gpu,再做運算,這種效率肯定低。


所以,

內存分配要合理,該在gpu的放在gpu。

盡量減少內存拷貝。














  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved