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;
}
cuda编程学习2——add的更多相关文章
- CUDA编程学习笔记1
CUDA编程模型是一个异构模型,需要CPU和GPU协同工作. host和device host和device是两个重要的概念 host指代CPU及其内存 device指代GPU及其内存 __globa ...
- CUDA编程学习相关
1. CUDA编程之快速入门:https://www.cnblogs.com/skyfsm/p/9673960.html 2. CUDA编程入门极简教程:https://blog.csdn.net/x ...
- CUDA编程学习(一)
/****c code****/ #include<stdio.h> int main() { printf("Hello world!\n); ; } /****CUDA co ...
- cuda编程学习3——VectorSum
这个程序是把两个向量相加 add<<<N,1>>>(dev_a,dev_b,dev_c);//<N,1>,第一个参数N代表block的数量,第二个参数1 ...
- CUDA编程学习(四)
利用Block和Thread进行并行加速 _global_ void add(int *a, int *b, int *c) { int index = threadIdx.x + blockIdx. ...
- CUDA编程学习(三)
我们知道一个grid包含多个block,而一个block又包含多个thread,下面将是如何进行下thread中的并行. /**** Splot a block into parallel threa ...
- CUDA编程学习(二)
将数据加载到GPU后,如何在grid下的block进行并行计算(一个grid包含多个block) /****How do we run code in parallel on the device** ...
- cuda编程学习6——点积dot
__shared__ float cache[threadPerBlock];//声明共享内存缓冲区,__shared__ __syncthreads();//对线程块中的线程进行同步,只有都完成前面 ...
- cuda编程学习5——波纹ripple
/共有DIM×DIM个像素,每个像素对应一个线程dim3 blocks(DIM/16,DIM/16);//2维dim3 threads(16,16);//2维kernel<<<blo ...
随机推荐
- Windows 10 IoT Serials 5 - 如何为树莓派应用程序添加语音识别与交互功能
都说语音是人机交互的重要手段,虽然个人觉得在大庭广众之下,对着手机发号施令会显得有些尴尬.但是在资源受限的物联网应用场景下(无法外接鼠标键盘显示器),如果能够通过语音来控制设备,与设备进行交互,那还是 ...
- linux文件相关的命令
1.linux下的文件分为字符设备文件和块设备文件 2.文件的属性有读写权限.执行权限.访问时间.修改时间.状态改变时间等. 状态改变时间指修改了文件的读写权限或者所有者等操作. 3.ls -l 执行 ...
- 都能读懂的css3 3D变形效果
css3 3D变形效果 CSS3 transform3D变形 transform的含义是:改变,使-变形:转换 三维变换使用基于二维变换的相同属性,如果您熟悉二维变换,你们发现3D变形的功能和2D变换 ...
- 关于Ansi_Nulls、Quoted_Identifier、Ansi_Padding的用法
--QUOTED_IDENTIFIER 语法SET QUOTED_IDENTIFIER { ON | OFF } 注释当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号 ...
- udp服务器监听(多线程)
项目一:udp1111 监听的有三个文件分别为: guiHello.java 有关界面和事件响应功能 UdpFunc.java是udp类的封装:发送和接收 udpServer.java是入口函数,无实 ...
- Unity编程标准导引-3.2 MonoBehavior 组件父类重构
本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 3.2MonoBehavior 组件父类重构 为了让我们的组件类用起来更方便,我们将上一节的 ...
- android开发过程中踩过的坑
1) 4.X下 viewgroup 不一定会向下传递requestLayout,当onlayout的速度比较慢(比如子View比较复杂之类的原因),系统会跳帧!此时子View下层的view可能就不会再 ...
- jQuery动态生成不规则表格前后端
一.需求:有这么一张表 前四个属性当作联合主键 需要把该表所有的行在前端以表格形式显示出来,要求activityId相同时合并成一行,activityCode相同时,合并一行,activityVers ...
- ionic接入广告
一.获取Admob phonegap 广告插件(cordova 广告平台插件) 在cordova 和phonegap等html5手机应用里面展示Admob,百度移动联盟,广点通广告需要Cordova ...
- Javascript高级程序设计——语法、关键字、保留字、变量、数据类型
1.了解基本语法,JS大小写区分.注释风格.什么是严格模式等. 2.知道ES3和ES5的关键字和保留字大概有哪些,如果使用关键字会报什么错,使用保留字决定于特定浏览器引擎. 3.全局变量和局部变量的定 ...