理解二維block和二維thread

2021-10-01 12:30:57 字數 1121 閱讀 1031

#include

"cuda_runtime.h"

#include

"device_launch_parameters.h"

#include

"device_functions.h"

#include

#include

#define w 20

#define h 20

#define tx 32

//每個block中一行後32個執行緒

#define ty 32

//同理在y上

//float2 表示float型別的二維陣列

__global__ void

distancekernel

(float

*d_out,

int w,

int h, float2 pos)

intmain()

;const dim3 blocksize

(tx, ty)

;//設定乙個行有tx個執行緒,列有ty個執行緒的block

const

int bx =

(w + tx -1)

/ tx;

//防止執行緒不夠

const

int by =

(h + ty -1)

/ ty;

const dim3 gridsize

(bx, by)

;//開始執行

distancekernel <<

>

>

(d_out, w, h, pos)

;//將結果寫回主機

cudamemcpy

(out, d_out, w*h *

sizeof

(float

), cudamemcpydevicetohost)

;//釋放裝置上的記憶體

cudafree

(d_out)

;//列印結果

//for (int i = 0; i < w*h; i++)

//free

(out)

;system

("pause");

}

二維指標和二維陣列

二維指標和二維陣列有三種形式 1,type ptr 2,type ptr或者type prt 3,type prt 三種形式意思相近,也有區別。首先三種形式都能表示二維的資料結構。1,type ptr 表示乙個指向指標的指標 但是在一開始宣告的時候 type ptr ptr到底指向幾個指標是不知道的...

二維陣列 二維陣列和指標

include using namespace std int main 如上面這段程式所示,通過取位址符 指標 p 獲得了變數 a 的位址,那麼解引用符 就可以從 p 中得到變數 a 的值。也就是說,p a和 p a是等價的。p 是變數 a 的位址,從 p 中就可以取出 a 的值。反之,能從 p ...

關於二維陣列和二維指標的理解總結

二維陣列和二維指標有很多相似也有很多不同 相同點是他們都可以通過位址去取資料,不同點是 首先二維陣列本身儲存資料,二維指標需要指向別的資料才有用。其次陣列的指標是不可變的,指標是可變的。例 比如上面的二維陣列 a是位址,相當於 int p 3 4 a,單位為 int 3 4 sizeof a 4 而...