天天看點

GPU程式設計--開山篇

昨天搭建了環境今天就開始了第一天的學習,學習一門語言無非就是文法的學習以及一些機制的學習,考研剛剛結束,很長時間沒有寫過代碼了,說實話很多東西都會忘記但是有很多基礎的東西是不會忘了的,講到學習語言的開篇都是以hello world為開始的,是以我也一樣
           
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>

__global__ void add (int a,int b ,int *c  ){
	*c=a+b;
}

int main (void){
	int c;
	int* dev_c;
	cudaMalloc((void **)&dev_c,sizeof(int));
	add<<<1,1>>>(2,7,dev_c);
	cudaMemcpy(&c,dev_c,sizeof(int),cudaMemcpyDeviceToHost);
	printf ("%d\n",c);
	printf ("hello world !");
	getchar();
	return 0;	
           

當然隻有hello world 有些同學是看不出來和c語言的差別的是以就添加了cuda的一些東西,也是很簡單的東西,比如說__glonle__定義的内容就是在顯存中運作的内容,然後利用add<<<1,1>>>調用 這裡的尖括号還有參數我們後面學到了在再進行解釋。

其中需要注意的是cudaMalloc 以及cudaMemcpy函數 這些函數的應用跟c中的malloc以及Memcpy沒有什麼兩樣 ,我想下一節說明我這個cudaMemcpy中的參數的一些注意事項。這就是我的第一個Gpu的代碼。也以此表明我開始了gpu程式設計的路程 ,希望大家一同進步。

繼續閱讀