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