cuda编程学习2——add
2015-12-08 21:39
369 查看
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;
}
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;
}
相关文章推荐
- PHP实现在文章中加内链的实例(只替换一次)
- 利用github-pages建立个人博客
- PHP页面跳转报错
- C语言1——基础
- java中的包装类及与String之间的互相转换
- 黑马程序员——jdk1.5的新特性
- Struts2的国际化
- Struts2的国际化
- 使用Github Pages建独立博客
- cuda编程学习1——hello world!
- 在Github上搭建Jekyll博客和创建主题
- C#读取摄像头处理图片AForge
- Spring事务配置的五种方式
- 华为交换机STP的配置
- ShiroDbRealm 导致spring 事务配置无效原因分析
- PHP生成缩略图的方法和实例
- git配置及多个ssh key的问题
- 如何自动增加和从代码读取Xcode项目的版本号
- 如何自动增加和从代码读取Xcode项目的版本号
- 如何自动增加和从代码读取Xcode项目的版本号