基于CUDA的GPU计算PI值

news2024/11/17 2:51:03

访问【WRITE-BUG数字空间】_[内附完整源码和文档]
基于CUDA的GPU计算PI值。本项目使用CUDA编程模型并行计算PI值,研究GPU与CPU效率的比较,分析不同GPU线程分块对性能的影响。
异构计算试验报告
—实验1:基于CUDA的GPU计算PI值

第一部分:实验环境
OS:Windows 10
CPU:intel® Core™ i7-10510U CPU@mailto:CPU@ 1.80Ghz
GPU:NVIDIA GeForce MX250
编译器: cl :v19.29.30133
nvcc:Cuda compilationn tools, release 11.4, V11.4.120
第二部分:实验内容
使用 CUDA 编程模型并行计算 PI 值,研究 GPU 与 CPU 效率的比较,分析不同 GPU 线程分块对性能的影响
第三部分:实验原理
数学原理为
1 积分求解

编辑

切换为居中
添加图片注释,不超过 140 字(可选)

2 幂级数求解

编辑

切换为居中
添加图片注释,不超过 140 字(可选)

使用 CUDA 编程模型,程序执行过程为
CUDAMALLOC -> CUDAMEMCPY(HTOD) ->KERNEL->CUDAMEMCPY(DTOH)

在执行和函数时指定 <<<grid,block>>> 来控制线程的数量和结构
第四部分:性能分析

define N 迭代次数

1 CPU VS GPU
1.1 单核比较
N = (10001000100)=100M
CPU(thread = 1):4.887(s)
GPU(grid = 1,block=1):用时过长…无法测量
1.2 多核比较
首先要发挥出最大的 CPU 性能,由于机器的 CPU 是逻辑 8 核的,所以理论上开启 8 个线程可以发挥最大性能。所以我写了一个 8 线程并行的程序来计算,同样循环 N=(10001000100)次

编辑

切换为居中
添加图片注释,不超过 140 字(可选)

可以看出新的时间为 0.768s 快了不少
(PS:这里的程序是使用 GCC 编译的,而 CUDA 程序 NVCC 调用的是 MSCV 的编译器,Windows 平台上 NVCC 不支持 GCC,但是结果应该是差不多的)
2 GPU 性能分析
接下来就是找出 GPU 的最高性能了。
首先在 grid = 1 下探究 block 里的线程数对性能的影响。这里可以直接用 nvprof 分析,非常方便。
2.1 grid = (1,1,1) block = (10,1,1)

编辑

切换为居中
添加图片注释,不超过 140 字(可选)

一共用时:34.5556s 线程数:10
可以注意到,在本程序中,主要的时间是消耗在计算上的,由于没有什么要拷贝的内存,所以瓶颈只会出现在计算上
2.2 grid=(1,1,1) block=(100,1,1)

编辑

切换为居中
添加图片注释,不超过 140 字(可选)

一共用时:2.58383s 线程数:100
2.3 grid=(1,1,1) block=(1000,1,1)

编辑

切换为居中
添加图片注释,不超过 140 字(可选)

一共用时:1.543s 线程数:1000
每个 block 的最大线程数限制是 1024,这里就不能再增加 block 了在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/497764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

原型模式--深拷贝和浅拷贝

定义 Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype. &#xff08;使用原型实例指定将要创建的对象类型&#xff0c;通过复制这个实例创建新的对象。&#xff09; 从定义中我们我们可以发现&#x…

2023年4月Web3行业月度发展报告区块链篇 | 陀螺科技会员专享

4月&#xff0c;以太坊上海升级与香港Web3动向成最大热点&#xff0c;上海升级的完成是转POS的重要里程碑&#xff0c;从市场而言&#xff0c;由于升级解锁质押ETH是否引发抛压备受关注&#xff0c;仅以交易表现来看&#xff0c;并未出现大范围的抛压与离场。另一方面&#xff…

算力提升+AIGC,是驱动元宇宙发展的核心引擎|数据猿直播干货分享

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 “元宇宙”是美国科幻小说家尼奥斯蒂文森1992年在《雪崩》中提出的概念&#xff0c;书中设定现实世界中的人在网络世界中都有一个分身&#xff0c;这个由分身组成的世界就是“元宇宙”。如今&#xff0c;随着虚拟现实技术的…

60+开箱即用的工具函数库xijs更新指南(v1.2.5)

xijs 是一款开箱即用的 js 业务工具库, 聚集于解决业务中遇到的常用函数逻辑问题, 帮助开发者更高效的开展业务开发. 接下来就和大家一起分享一下v1.2.5 版本的更新内容以及后续的更新方向. 贡献者列表: 1. 数据深拷贝cloneDeep 该模块主要由 20savage 贡献, 支持 symbol, map,…

BM58-字符串的排列

题目 输入一个长度为 n 字符串&#xff0c;打印出该字符串中字符的所有排列&#xff0c;你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数据范围&#xff1a;n < 10。 要求&#xff1a;空…

[架构之路-191]-《软考-系统分析师》-8-软件工程 - 解答什么是面向功能的结构化程序设计:算法+数据结构 = 程序

目录 1. 什么是结构化程序设计 2. 结构化程序设计的局限性 3.程序设计的三种基本结构 (1) 顺序结构 (2) 选择结构 (3) 循环结构 1. 什么是结构化程序设计 功能 》 Function 》 函数 》 算法 数据流Data Flow 》 数据结构Data Strucuture 程序 算法 数据结构 》 数…

36. Kubernetes 网络原理——CNI 网络插件

本章讲解知识点 Flannel 原理概述直接路由的原理和部署示例Calico 插件原理概述1. Flannel 原理概述 Flannel 是一个用于容器网络的开源解决方案,它使用了虚拟网络接口技术(如 VXLAN)和 etcd 存储来提供网络服务。它的原理概述如下: Flannel 协助 Kubernetes,给每一个 No…

界面交互篇:答题页的答题逻辑交互开发

微信小程序云开发实战-答题积分赛小程序 界面交互篇:答题页的答题逻辑交互开发 前面的那一篇文章,我们已经完成了使用云开发的聚合能力实现从题库中随机抽取题目功能。 在页面加载时,实现从题库中随机抽取题目功能。那么,拿到数据后要干什么?如何做? 动态数据绑定 实…

c++练习题

1、默认参数练习 创建默认参数函数 void stars(int cols ,int rows ) 该函数默认缺省值cols是10 rows是1。该函数完成功能是根据行和列数显示一个由星号组成的矩形。在main函数仲按照默认值调用该函数。按照cols是5调用该函数。按照列数和行数是7&#xff0c;3 调用该函数 #…

【MMdetection训练及使用脚本系列】MMdetection训练1——如何保存最优的checkpoint文件

MMdetection如何保存最优的checkpoint文件 以目标检测为例&#xff0c;进入到 configs/_base_/datasets/coco_detection.py将evaluation dict(interval1, metricbbox)改为evaluation dict(interval1, metricbbox, save_bestauto)即可。 但是不建议这样做&#xff0c;防止以…

软件设计师笔记--数据结构

文章目录 前言学习资料数据结构大 O 表示法时间复杂度线性结构和线性表线性表的顺序存储线性表的链式存储栈的顺序存储栈的链式存储队列的顺序存储与循环队列 串KMP 数组矩阵树二叉树二叉树的顺序存储结构二叉树的链式存储结构二叉树的遍历平衡二叉树二叉排序树最优二叉树(哈夫…

C/C++每日一练(20230507) 数列第n项值I/II、简化路径

目录 1. 求数列的第n项的值 ※ 2. 求数列的第n项的值 II ※ 3. 简化路径 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 求数列的第n项的值 已知数列…

摘要:PostgreSQL开发技术基础:过程与函数

原文地址 6.0 Language SQL与PL/pgSQL PL / PgSQL是基于SQL的特定于PostgreSQL的过程语言 。它有循环&#xff0c;variables&#xff0c;错误/exception处理等等。并不是所有的SQL都是有效的PL / PgSQL&#xff0c;正如你发现的那样&#xff0c;例如&#xff0c;你不能在没有…

Nature:时松海课题组揭示调控大脑新皮层神经元空间精细结构排布和环路组装的新机制

2022年12月7日&#xff0c;清华大学生命科学学院、清华-IDG/麦戈文脑科学研究院、生命科学联合中心、生物结构前沿研究中心时松海教授课题组在Nature杂志以长文的形式在线发表了题为“Patterned cPCDH expression regulates the fine organization of the neocortex”&#xff…

Python心经(2)

有关数字类型&#xff0c;字符串&#xff0c;函数 目录 有关数字类型&#xff0c;字符串&#xff0c;函数 数字 字符串 索引操作 切片操作 单个字符编码 运算符 还有一些常用的内置函数 Python输入函数 输出函数print()语法 python的函数也能给默认值 Python是个脚…

什么是事件驱动的微服务架构?

对于许多关键应用程序功能&#xff0c;包括流媒体和电子商务&#xff0c;单体架构已不再足够。随着实时事件数据和云服务使用的需求增加&#xff0c;许多现代应用程序&#xff0c;如Netflix和Lyft&#xff0c;已经转向了事件驱动的微服务方法。分离的微服务可以独立运行&#x…

体外诊断(IVD)高速发展

体外诊断&#xff08;IVD&#xff09;实际一直是临床的重要组成部分。体外诊断&#xff0c;是指通过对人体样本(血液、体液、组织等)进行检测而获取临床诊断信息&#xff0c;进而判断疾病或机体功能的产品和服务&#xff0c;其检测原理和方法涉及免疫学、微生物学、分子生物学等…

Cursor设置中文版 以及简单实用教程集成 GPT4 的代码神器 Cursor

官网&#xff1a;cursor.so 快捷键 ctrl K&#xff0c; 中英文提交需求&#xff0c;&#xff08;刚开始我整蹩脚的英语&#xff0c;后来发现支持中文&#xff09; 自动写代码 自动补充代码 自己修改代码 自动检查、完善代码 自己本地测试 然后再重复上面操作直到能用 最后让它…

ZooKeeper知识回顾(分布式协调框架,本质是分布式小文件存储系统,以分布式集群部署)

Apache ZooKeeperhttps://zookeeper.apache.org/官网为: 名字.apache.org 1.zookeep概念 一个团队里面&#xff0c;需要一个leader&#xff0c;leader是干嘛用的&#xff1f; &#xff08;分布式协调框架&#xff09; 1.管理什么的咱不说。 2.外面的人&#xff0c;想…

AI大神吴恩达与OpenAI官方合作推出的ChatGPT提示工程课,到底在讲什么?

ChatGPT提示工程课程&#xff0c;吴恩达&OpenAI 概述 本课程将着重介绍指令调优LM的开发最佳实践&#xff0c;以帮助开发人员利用LM技术构建聊天机器人等应用程序。 亮点 &#x1f4da; LM可用于快速构建软件应用程序&#xff0c;API可以使开发人员非常快速地构建。&#x…