作者rod5438 (逍遙仙人)
看板C_and_CPP
標題Re: [問題] c語言程式求助
時間Wed Oct 14 11:26:27 2009
CUDA版
__global__ void VecAdd(
float* A)
{
int i =
blockIdx.x*
blockDim +
threadIdx.x*;
//把所有核心給予Index
A[
i]/=0.454;
//公斤轉換成磅
}
int main()
{
int i;
//總人數
size_t size = 100000 *
sizeof(
float);
//記憶體空間
float h_A[100000];
//主記憶體重資料(十萬筆)
float* d_A;
//GPU記憶體指標
for(
i=0;
i<1;
i++)
{
cout<<"請輸入體重(公斤)"<<endl;
//使用者輸入體重
cin>>
h_A[
i];
//目前只支援輸入一筆
}
cudaMalloc((void**)&
d_A,
size);
//動態存取顯示卡記憶空間
cudaMemcpy(
d_A,
h_A,
size,
cudaMemcpyHostToDevice);
//主記憶體複製到顯卡
int threadsPerBlock = 256;
//開了256個程序
int threadsPerGrid = 256;
//開了256個核心
VecAdd<<<
threadsPerGrid, threadsPerBlock>>>(
d_A);
//理論上可以同步處理
//65536個程序
cudaMemcpy(
h_A, d_A, size,
cudaMemcpyDeviceToHost);
//顯卡複製到主記憶體
cudaFree(
d_A);
//釋放顯卡記憶體
for(
i=0
;i<1
;i++)
{
cout<<"你的體重是"<<
h_A[
i]<<"磅"<<endl;
//印出你的體重
//目前只支援印出一筆
}
return(0); //就只是return零
}
///////////////////版權沒有 歡迎複製 不用告知 不保證能跑XDD////////////////
//P.S. 原po第二個作業 可能是輸入10個 人的體重 你只要五秒就可以改完!!
//P.S.1 而且支援 平行運算 所以1000萬人也可以算很快
//P.S.3 但是你主幾版BUS沒很快的話應該還是算很慢XD
//P.S.4 一定要有 支援CUDA的顯示卡
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.106.44
→ rod5438:上色不好 請多包含XD 10/14 11:27
※ 編輯: rod5438 來自: 140.123.106.44 (10/14 11:37)
推 baddrink:87 10/14 11:39
推 yoco315:XDDDDDDDDDDDDDDDDDDDDDDDDDDD 10/14 12:38
推 Nuaaukw://目前只支援輸入一筆 10/14 13:55
→ Nuaaukw:開10萬的陣列是開心酸的 還把10萬個都丟進CUDA XDDDD 10/14 13:57
推 suhorng:....................................... 10/14 21:39