CUDA学习(三)之使用GPU进行两个数相加
在CPU上定义两个数并赋值,然后使用GPU核函数将两个数相加并返回到CPU,在CPU上显示
#include "cuda_runtime.h" #include "device_launch_parameters.h"#include <iomanip> #include <iostream> #include <stdio.h>using namespace std;//检测GPU bool CheckCUDA(void){int count = 0;int i = 0;cudaGetDeviceCount(&count);if (count == 0) {printf("找不到支持CUDA的设备!\n");return false;}cudaDeviceProp prop;for (i = 0; i < count; i++) {if (cudaGetDeviceProperties(&prop, i) == cudaSuccess) {if (prop.major >= 1) {break;}}}if (i == count) {printf("找不到支持CUDA的设备!\n");return false;}cudaGetDeviceProperties(&prop, 0);printf("GPU is: %s\n", prop.name);cudaSetDevice(0);printf("CUDA initialized success.\n");return true; }//使用指针相加 __global__ void addNumber(double a, double b, double *c);int main(){//检测GPUif (!CheckCUDA()){cout << "No CUDA device.";return 0;}cout << "*************************************************************************************************************" << endl;double h_a, h_b, h_c; //在CPU上定义三个变量double *d_c; //定义一个将指向GPU的指针 h_a = 2.2;h_b = 3.3;cudaMalloc((void **)&d_c, sizeof(double)); //为指针在GPU上分配内存空间 //调用核函数并启用一个线程块和一个线程addNumber<<<1, 1>>>(h_a, h_b, d_c); //只是单独的两个数相加,不是两个数组相加,只需使用单线程,数组相加可以使用多线程cudaMemcpy(&h_c, d_c, sizeof(double), cudaMemcpyDeviceToHost); //将GPU上计算好的结果返回到CPU上定义好的变量//setw(10)表示输出10个空格,需添加 #include <iomanip>cout << setw(10) << h_a << " + " << h_b << " = " << h_c << endl; cout << endl << endl;system("pause");return 0; }__global__ void addNumber(double a, double b, double *c){*c = a + b; }
显示结果如下
转载于:https://www.cnblogs.com/xiaoxiaoyibu/p/10088972.html
CUDA学习(三)之使用GPU进行两个数相加相关推荐
- 【java】java 如何不使用第三个变量来交换两个数的值
文章目录 1.概述 2.方案 2.1 算术运算 2.2 位运算 1.概述 今天是一个悲伤的一天,我的悲伤逆流成河.非常非常的悲伤.主要是有这个一个面试题.如何不使用第三个变量来交换两个数的值. 考官说 ...
- c语言不用第三个变量 实现两个数的对调,下面程序功能是不用第三个变量,实现两个数对调操作 ....docx...
下面程序功能是不用第三个变量,实现两个数对调操作 ... [3.1]下面程序的功能是不用第三个变量,实现两个数的对调操作.#include main(){ int a,b:scanf("%d ...
- 求数组最大数,该数为数组中某两个数相加
题目: 百度笔试:在一个正整数集合S中,找出一个最大数C,使得C=A+B,其中A和B也是S种的元素. 思想: 首先,我们将数组从小到大进行快速排序.其次: 1.将最后一个数设为最大数设定为S: 2.用 ...
- 在O(N)时间内求解 正数数组中 两个数相加的 最大值
一,问题描述 给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相加的最大值,其中被加数的下标大于加数的下标.由加法运算的可逆性,j >i 这个条件可以去掉. 即求出: max ...
- python怎么设编程两个数相加时_黄哥Python, LeetCode 第二题两数相加代码
来源力扣leetcode-cn.com 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相 ...
- 【LeetCode-面试算法经典-Java实现】【002-Add Two Numbers (单链表表示的两个数相加)】...
[002-Add Two Numbers (单链表表示的两个数相加)] 原题 You are given two linked lists representing two non-negative ...
- mysql 两个数相加_LeetCode 01两数之和02两数相加
LeetCode01两数之和 题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案 ...
- 作业帮:给定一个整数数组,找出其中两个数相加等于目标值(去重set)
题目描述 给定一个整数数组,找出其中两个数相加等于目标值输入 [1,3,5,7,9,11] 10输出 1,9 3,7 代码: import java.util.HashMap; import java ...
- python每个数都可由集合中的某两个数相加而得
python每个数都可由集合中的某两个数相加而得(这两个数可以相同) 问题表述 思路 代码 运行结果 问题表述 有一个自然数集合,其中最小的数是1,最大的数是100.这个集合中的数除了1之外,每个数都 ...
最新文章
- 洞悉linux下的Netfilteriptables
- 笔记本软件页面分辨率低_AMD宠粉日 适合设计师的高色域笔记本电脑
- java中intvalue_Java Short类intValue()方法及示例
- [LeetCode]--3. Longest Substring Without Repeating Characters
- 中的图片文字识别_文字识别 图片转文字【小程序】
- ORDER BY分类
- nodejs生成pdf文件
- 华为移动路由Pro测评:不用办理固话宽带也可高速上网
- python 常用股票走势图绘制
- MySQL提示Can‘t connect to MySQL server on localhost (10061)解决方法
- JS VLC插件 js
- 小白科研笔记:简析图神经网络收敛性的理论证明
- 模板会有多层镜像_【保持最新版本】EVE-NG 新版模板,镜像。2020-12-27有更新
- 按Enter键起到Tab键的效果
- TED演讲集 TED视频打包下载(MP4+中英字幕) TED中英文对照字幕视频 TED资料文档 完整
- 从one hot vector到Attention, Bert——NLP基本思想串连回顾
- Maxthon广告猎手规则,简简单单屏蔽广告
- python语言程序设计基础网课-沿河高校邦数据科学通识课【Python基础语法】答案...
- 2021年安全员-B证新版试题及安全员-B证证考试
- android Q获取SN
热门文章
- Data Lake Analytics: 基于OSS文件自动推断建表
- 数字信号处理2:傅里叶变换
- opencvpython图像代码_PythonOpenCV各种图像库的图像读写 增强 方式的简单介绍(附代码)...
- 代理后台中间件_Golang Gin 实战(十三)| 中间件详解看这一篇就够了
- Java获取泛型类的实际类型的实例
- Spring源码解析 -- SpringWeb请求参数获取解析
- vb连接mysql出现的问题_连接数据库问题用户定义类型未定义【vb6】
- 实验三 lr分析器的设计与实现_实验室规划设计趋势之一灵活性|无风管通风柜的灵活性是如何实现的?...
- gba徽章机器人_《徽章机器人》倒计时网站开启 20周年纪念插画欣赏
- java 三种错误类型 区别_请列举至少三种在java语言中发生“严重错误”的情况...