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...