程序流程
法1:
1 申请内存(host,device)
2 数据传输
//将host中的数据拷贝到device中 (CPU完成的内容)
cudaMemcpy((void*)d_x,(void*)x,nBytes,cudaMemcpyHostToDevice);//将cpu中的x拷贝到gpu中的d_x
/*(void*)d_x 目标区域
(void*)x 源数据
nBytes 需要复制的字节数
cudaMemcpyHostToDevice 数据传输的
*/
3 执行kernel,完成运算
4 device的结果传输回host
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include<iostream>
#include <stdio.h>
//包含库
using namespace std;
//cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size);
//host调用的在device上执行的函数
__global__ void add(float* x, float * y, float* z, int n)
{
// 获取全局索引
int index = threadIdx.x + blockIdx.x * blockDim.x;
// 步长
int stride = blockDim.x * gridDim.x;
for (int i = index; i < n; i += stride)
{
z[i] = x[i] + y[