GPU對資料的操作不可累加

2021-09-06 20:25:32 字數 760 閱讀 4996

我想當然的認為gpu處理資料時可以共同訪問記憶體,所以對資料的操作是累加的。

事實證明:雖然gpu多個核可以訪問同一塊記憶體,但彼此之間沒有依賴關係,它們對這塊記憶體的作用無法累加。

先看**:

#include #include #include #include using namespace std;

struct testfunc

{ float* list;

int size;

__host__ __device__

void operator()(const int& idx) const{

for(int i=0;ivlist(100,(float)10);

testfunc fn;

fn.size=vlist.size();

fn.list=vlist.data().get();

thrust::for_each(

thrust::counting_iterator(0),

thrust::counting_iterator(0)+11,

fn); for (int i=0;i<10;++i){

cout《這裡我在gpu的記憶體中建立了乙個陣列vlist,其每個單元值為10。

之後我用了11個核,每個核都對陣列vlist的每個元素減0.1,如果結果能夠累加,那麼執行結束後vlist每個元素的值應該為10-0.1*11=8.9。

但實際結果是:9.9

相當於只保留了乙個核的結果……果然是並行啊~

對資料庫的操作

資料庫的檔案 資料檔案 包含資料和物件,主資料檔案建議副檔名.mdf,其餘.ndf 事務日誌檔案 包含恢復資料庫中的所有事物所需的資訊,建議副檔名.ldf 至少包含乙個資料檔案和乙個日誌檔案 對資料庫的操作 選其中乙個,可以選 選其中乙個,必選 分割,表示多個選項 表示說明 建立create dat...

C 對資料的常用操作

在做專案的時候,少不了對資料的新增,刪除,修改等操作,有時候感覺到很簡單,但是如果要考慮到很多問題的話,那麼就不是那麼簡單了,因為需要考慮到很多的問題和因素,下面是樹形結構上採用資料來源方式對資料進行操作,感覺到還可以,所以記下來,以後對自己有用。新增物料分類的方法 private void bar...

對資料型別的操作

auther alex date 2020 12 26 12 26 23 28 description 測試使用proparedstatement操作blob型別的資料 verxion 1.0 public class blobtest1 test public void test2 throws ...