cuda如何提升运行速度

cuda小白 2017-11-18 11:07:54
有一个小程序 如何提升它的速度 求各位大神科普

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <iostream>
#include <stdio.h>
#include<time.h>
using namespace std;
#define numx 1000
#define numy 1024

__global__ void averge(float *xx, float *yy)
{
int tid = threadIdx.x + blockIdx.x * blockDim.x;
float sum = 0;
for (int j = tid; j < (numx - 1)*numy + 1 + tid; j += numy)
{
sum = sum + xx[j];
}
sum = sum / numx;

for (int j = tid; j < (numx - 1)*numy + 1 + tid; j += numy)
{
xx[j] = xx[j] - sum;
yy[j] = xx[j];
}
}

int main()
{
clock_t start, end;
// start = clock();
for (int i = 0; i < 1; i++)
{

float a[numx][numy] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
float c[numx][numy];
float *dev_a, *dev_b;

// start = clock();
cudaMalloc((void**)&dev_a, numx * numy * sizeof(float));
cudaMalloc((void**)&dev_b, numx * numy * sizeof(float));

// start = clock();
cudaMemcpy(dev_a, a, numx * numy * sizeof(float), cudaMemcpyHostToDevice);
// end = clock();

start = clock();
averge << <32, 32 >> >(dev_a, dev_b);
end = clock();

cudaMemcpy(c, dev_b, numx * numy * sizeof(float), cudaMemcpyDeviceToHost);
/* for (int i = 100; i < 110; i++)
{
cout << c[1][i] << endl;
}
*/

cudaFree(dev_a);
cudaFree(dev_b);
}
// end = clock();
cout << end - start << endl;
}
...全文
202 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

353

社区成员

发帖
与我相关
我的任务
社区描述
CUDA高性能计算讨论
社区管理员
  • CUDA高性能计算讨论社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧