cuda 简单数组运算
2014-12-29 11:07
183 查看
#include "cuda_runtime.h" #include "device_launch_parameters.h" #include "device_functions.h" #include <stdio.h> #include <stdlib.h> #include <iostream> #define data_size 1026 #define thread_num 256 using namespace std; __global__ static void sumOfSquares(int *d_idata,int *d_odata) { const int tid=threadIdx.x; printf("%d ",tid); d_odata[tid]=d_idata[tid]*d_idata[tid]; __syncthreads(); } int main() { int h_idata [data_size]; for (int i = 0; i < data_size; i ++) { h_idata[i] = i;//rand()%10; } int * d_idata; int * d_odata; cudaMalloc((void **)&d_idata,sizeof(int)*data_size); cudaMalloc((void **)&d_odata,sizeof(int)*data_size); cudaMemcpy(d_idata,h_idata,sizeof(int)*data_size,cudaMemcpyHostToDevice); sumOfSquares<<<1,data_size,0>>>(d_idata,d_odata); int gpu_sum[data_size]; cudaMemcpy(&gpu_sum,d_odata,sizeof(int)*data_size,cudaMemcpyDeviceToHost); cudaFree(d_idata); cudaFree(d_odata); int final_gpu_sum=0; for (int i=0;i<data_size;i++) { final_gpu_sum+=gpu_sum[i]; } printf("final_gpu_sum=%d\n",final_gpu_sum); int cpu_sum = 0; for(int i = 0; i < data_size; i++) { cpu_sum+= h_idata[i] * h_idata[i]; } printf("cpu_sum: %d\n", cpu_sum); cin.get(); }
相关文章推荐
- 指针数组的要运用和运算以及类的简单阐述
- CUDA初学,实现1000*256的数组运算
- 用linq对数组排序及简单运算
- 一些简单的数组运算
- 利用textbox接收两个数,列出一个数组,并做简单的运算
- <Power Shell>01 四则运算和数组简单使用
- C中关于数组以及数组的简单运算
- C中数组以及数组相关的简单运算
- 用linq对数组排序及简单运算
- 数组的一些简单运算
- 基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版
- 对象数组与ArrayList互转的简单方法[摘录]
- javascript入门·简单运算和数据类型转换
- 基于逻辑运算的简单权限系统(实现) JS 版
- 一个简单的oracle函数返回数组的例子
- 最简单的int数组
- 基于逻辑运算的简单权限系统(实现) JS 版
- 用C#实现简单的控件数组
- 基于逻辑运算的简单权限系统(实现) JS 版
- 基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版