• cuda编程学习2——add


    cudaMalloc()分配的指针有使用限制,设备指针的使用限制总结如下:

    1.可以将其传递给在设备上执行的函数

    2.可以在设备代码中使用其进行内存的读写操作

    3.可以将其传递给在主机上执行的函数

    4.不能在主机代码中使用其进行内存的读写操作

    总的来说就是主机指针只能访问主机代码中的内存,设备指针只能访问设备代码中的内存

    这是两个数相加的cuda代码:

    #include<iostream>
    using namespace std;

    __global__ void add(int a,int b,int *c)
    {
    *c=a+b;
    }

    int main(void)
    {
    int c;
    int *dev_c;
    cudaError_t error;
    error=cudaMalloc((void**)&dev_c,sizeof(int));
    if(error!= cudaSuccess)
    {
    cout<<"cudaMalloc d_A returned error"<<cudaGetErrorString(error)<<"code:"<<error<<" line"<<__LINE__<<endl;
    exit(EXIT_FAILURE);
    }
    add<<<1,1>>>(2,7,dev_c);
    error=cudaMemcpy(&c,dev_c,sizeof(int),cudaMemcpyDeviceToHost);
    if(error!= cudaSuccess)
    {
    cout<<"cudaMemcpy returned error:"<<cudaGetErrorString(error)<<" code:"<<error<<" line:"<<__LINE__<<endl;
    exit(EXIT_FAILURE);
    }
    cout<<"2+7="<<c<<endl;
    cudaFree(dev_c);
    return 0;
    }

  • 相关阅读:
    better-scroll 介绍
    promise 异步编程
    vue网址路由的实时检测
    浏览器本地存储的使用
    获取元素的位置
    如何设置动画的运动效果
    实现对称加密及非对称公钥加密
    Centos 7系统启动修复
    Centos 7服务启动文件
    内核编译-4.12
  • 原文地址:https://www.cnblogs.com/shrimp-can/p/5031116.html
Copyright © 2020-2023  润新知