CUDA初始化與核函式

2021-08-21 03:11:11 字數 1481 閱讀 6428

**:

#include 

#include

#include

#define data_size 1048576

int data[data_size];

void generatenumbers(int *number, int size)

}bool init_cuda()

int i;

for ( i = 0; i < count; i++)

}if (i == count)

cudasetdevice(i);

return

true;}/*

在 cuda 中,在函式前面加上__global__ 表示這個函式是要在顯示晶元上執行的,

所以我們只要在正常函式之前加上乙個__global__就行了

【注意】顯示晶元上執行的程式,不能有返回值!

*/__global__ static

void sumofsquares(int *num, int *result)

*result = sum;

}int main()

printf("cuda initialized.\n");

//生成隨機數

generatenumbers(data, data_size);

//把資料複製到顯示卡記憶體

int *gpudata, *result;

//在顯示卡中分配一塊大小為 sizeof(int)*data_size 的記憶體

cudamalloc((void**)&gpudata, sizeof(int)*data_size);//&gpudata代表指標gpudata的位址----(void**)是型別轉換

cudamalloc((void**)&result, sizeof(int));

cudamemcpy(gpudata, data, sizeof(int)*data_size, cudamemcpyhosttodevice);

// dst , src----把cpu中的data 傳到 gpu中的gpudata

// 在cuda 中執行函式 語法:函式名稱<<

sumofsquares <<<1, 1, 0 >>> (gpudata, result);

intsum;

cudamemcpy(&sum, result, sizeof(int), cudamemcpydevicetohost);

//free

cudafree(gpudata);

cudafree(result);

printf("gpusum = %d\n", sum);

sum = 0;

for (int i = 0; i < data_size; i++)

printf("cpusum = %d\n", sum);

getchar();

return

0;}

CUDA的初始化

首先介紹一下開發環境,visual studio 2008 cuda wizard for visual studio 確保顯示卡支援cuda geforce 8系列之後,否則只能用模擬模式 並安裝cuda ddk及cuda toolkit。安裝完cuda wizard for visual stu...

cuda的初始化

首先介紹一下開發環境,visual studio 2008 cuda wizard for visual studio 確保顯示卡支援cuda geforce 8系列之後,否則只能用模擬模式 並安裝cuda ddk及cuda toolkit。安裝完cuda wizard for visual stu...

CUDA程式設計二(CUDA初始化)

cuda安裝成功之後,新建乙個工程還是十分簡單的,直接在新建專案的時候選擇nvidia cuda專案就可以了,我們先新建乙個cuda工程,刪掉自帶的示例kernel.cu,然後新建項,新建乙個cuda c c file 我們首先看一下如何初始化cuda,因此我命名為initcuda.cu 1.首先我...