二維vector傳遞到CUDA中實現平行計算

2021-10-02 07:28:43 字數 1285 閱讀 1309

std::vector傳遞到cuda中實現平行計算

我們知道std::vector記憶體分配時連續的,但是對於二維陣列或多維陣列來說,內部vector不占用外部vector的空間,所以二維陣列或多維陣列內部每一行的記憶體都是連續的,外部vector儲存內部vector的相關資訊,也是連續的。詳細內容可參考這篇部落格:

在cuda中儲存方式為線性儲存,一般使用cudamalloc()、cudamemcpy等函式申請拷貝記憶體,還有二維以及三維記憶體申請。

#include

#include

#include

#include

#define voxel_cols (3)

__global__ void

init

(double

**a,

double

*a_data,

int n,

int m)

}__global__ void

findnearvoxel

(double

** strvector,

double pitch)

}void

voxelmakesides

(std::vectordouble

>>

&voxel, std::vectorint>>

&sideindex,

double pitch)

int* index;

cudamalloc((

void**

)(&index)

, voxel_index_cols *

sizeof

(int))

; init<<

512+1,

512>>

>

(devvoxel, devvoxeldata, voxelrows, voxel_cols)

;//將每一行的首位址繫結到外圍

init<<

512+1,

512>>

>

(devvoxel, pitch)

;for

(int i =

0;i)for

(int i=

0;isize()

;i++

)printf

("\n");

}cudafree

(devvoxel)

;cudafree

(sideindexdev)

;}

二維向量 vector

又學一招!二維向量vector 在vc下的使用技巧。隨著對c 學習的逐步加深,發現stl確實是個好咚咚。vector是我用到的第乙個stl容器,它一直吸引我學習和使用stl。但當我用到二維的vector時 比如 vector 卻發現似乎不能用。我用的vc6就是不認它,竟報 error c2146 s...

vector 二維陣列

1052 賣個萌 20分 萌萌噠表情符號通常由 手 眼 口 三個主要部分組成。簡單起見,我們假設乙個表情符號是按下列格式輸出的 左手 左眼 口 右眼 右手 現給出可選用的符號集合,請你按使用者的要求輸出表情。輸入首先在前三行順序對應給出手 眼 口的可選符號集。每個符號括在一對方括號內。題目保證每個集...

vector 二維陣列

int p p newint m 注意,int m 表示乙個有m個元素的指標陣列 p new int 8 表示分配乙個int空間並初始化為8 外層 vector int a 內層 a.push back 1 a.push back 2 a.push back 3 vector int b b.pus...