1. CUDA编程手册中文版---CUDA简介

2023-11-02

1.CUDA简介

1.1 我们为什么要使用GPU

更多精彩内容,请扫描下方二维码或者访问https://developer.nvidia.com/zh-cn/developer-program 来加入NVIDIA开发者计划

在这里插入图片描述

GPU(Graphics Processing Unit)在相同的价格和功率范围内,比CPU提供更高的指令吞吐量和内存带宽。许多应用程序利用这些更高的能力,在GPU上比在CPU上运行得更快(参见GPU应用程序)。其他计算设备,如FPGA,也非常节能,但提供的编程灵活性要比GPU少得多。
GPU和CPU在功能上的差异是因为它们的设计目标不同。虽然 CPU 旨在以尽可能快的速度执行一系列称为线程的操作,并且可以并行执行数十个这样的线程。但GPU却能并行执行成千上万个(摊销较慢的单线程性能以实现更大的吞吐量)。
GPU 专门用于高度并行计算,因此设计时更多的晶体管用于数据处理,而不是数据缓存和流量控制。
下图显示了 CPU 与 GPU 的芯片资源分布示例。

在这里插入图片描述

将更多晶体管用于数据处理,例如浮点计算,有利于高度并行计算。GPU可以通过计算隐藏内存访问延迟,而不是依靠大数据缓存和复杂的流控制来避免长时间的内存访问延迟,这两者在晶体管方面都是昂贵的。

1.2 CUDA®:通用并行计算平台和编程模型

2006 年 11 月,NVIDIA® 推出了 CUDA®,这是一种通用并行计算平台和编程模型,它利用 NVIDIA GPU 中的并行计算引擎以比 CPU 更有效的方式解决许多复杂的计算问题。
CUDA 附带一个软件环境,允许开发人员使用 C++ 作为高级编程语言。 如下图所示,支持其他语言、应用程序编程接口或基于指令的方法,例如 FORTRAN、DirectCompute、OpenACC。

在这里插入图片描述

1.3 可扩展的编程模型

多核 CPU 和众核 GPU 的出现意味着主流处理器芯片现在是并行系统。挑战在于开发能够透明地扩展可并行的应用软件,来利用不断增加的处理器内核数量。就像 3D 图形应用程序透明地将其并行性扩展到具有广泛不同内核数量的多核 GPU 一样。
CUDA 并行编程模型旨在克服这一挑战,同时为熟悉 C 等标准编程语言的程序员保持较低的学习曲线。
其核心是三个关键抽象——线程组的层次结构、共享内存和屏障同步——它们只是作为最小的语言扩展集向程序员公开。
这些抽象提供了细粒度的数据并行和线程并行,嵌套在粗粒度的数据并行和任务并行中。它们指导程序员将问题划分为可以由线程块并行独立解决的粗略子问题,并将每个子问题划分为可以由块内所有线程并行协作解决的更精细的部分。
这种分解通过允许线程在解决每个子问题时进行协作来保留语言表达能力,同时实现自动可扩展性。实际上,每个线程块都可以在 GPU 内的任何可用multiprocessor上以乱序、并发或顺序调度,以便编译的 CUDA 程序可以在任意数量的多处理器上执行,如下图所示,并且只有运行时系统需要知道物理multiprocessor个数。
这种可扩展的编程模型允许 GPU 架构通过简单地扩展multiprocessor和内存分区的数量来跨越广泛的市场范围:高性能发烧友 GeForce GPU ,专业的 Quadro 和 Tesla 计算产品 (有关所有支持 CUDA 的 GPU 的列表,请参阅支持 CUDA 的 GPU)。

在这里插入图片描述

注意:GPU 是围绕一系列流式多处理器 (SM: Streaming Multiprocessors) 构建的(有关详细信息,请参阅硬件实现)。 多线程程序被划分为彼此独立执行的线程块,因此具有更多multiprocessor的 GPU 将比具有更少多处理器的 GPU 在更短的时间内完成程序执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1. CUDA编程手册中文版---CUDA简介 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur

随机推荐

  • python经典百题之兔子出生问题

    题目 古典问题 有一对兔子 从出生后第3个月起每个月都生一对兔子 小兔子长到第三个月 后每个月又生一对兔子 假如兔子都不死 问每个月的兔子总数为多少 这是一个经典的 Fibonacci 数列问题 可以通过递归或循环来解决 递归方法 由题意可
  • 过零检测电路图,220V转5V直流单片机供电电路

    1 软件模拟电路 实现了220v单相交流电AC输入 AB脚 输出5v直流DC输出 CD脚 和一个过零检测的针脚 E脚 共5个脚 主要使用了比较器 三端稳压器 阻容降压 稳压二极管 最好用瞬态抑制二极管 等 模拟电路软件是Multisim 1
  • SSL/TLS协议信息泄露漏洞(CVE-2016-2183)

    1 漏洞描述 法国国家信息与自动化研究所 French Institute for Research in Computer Science and Automation INRIA 的两名科学家发布了一项新研究 这是一种针对64位分组密码
  • 基础使用指南

    基础使用指南 创建数据库 create databases example db 赋权 grant all on example db to test 在复合分区中 第一层称为Partition 即分区 用户可以指定某一维度列作为分区列 当
  • android官方博客

    androids http clients http android developers blogspot com 2011 09 androids http clients html
  • QT中简单的emit使用

    1 在这里需要感谢一下九月小姐姐的亲情帮助 2 在这个一般使用emit的时候都是用户自定义的一个信号 废话少说上代码 1 这里是两个不相关的类 在qt里可以是两个界面也可以是别的什么 这个一般都是在 h里写的 class A public
  • Pinia与Vuex的对比:Pinia是Vuex的良好替代品吗?

    文章目录 介绍 设置 Pinia 设置 Vuex 设置 使用 Pinia使用 Vuex使用 社区和生态系统的力量 学习曲线和文档 GitHub 评分 性能 比较 Pinia 2 和 Vuex 4 Vuex 和 Pinia 的优缺点 何时使用
  • 【1day】iRDM4000智慧站房管理员密码重置漏洞学习

    注 该文章来自作者日常学习笔记 请勿利用文章内的相关技术从事非法测试 如因此产生的一切不良后果与作者无关 目录 一 漏洞描述 二 资产测绘 三 漏洞复现 四 漏洞修复 一 漏洞描述
  • 百度tangram框架开发工具小结

    根据在开发流程中出现的顺序 对每个工具简要介绍如下 firebug 几乎所有写html css js代码的人都熟悉的工具 tangram开发调试中用到 官方站点 http getfirebug com closure linter gjsl
  • Windows中使用MySQL 数据查询(三)

    一 排序 select from employees order by name 字符型默认字符顺序 也就是说z永远比a大 不管大小写 如果想按编码值排序 也就是说小写永远大于大写 则使用 select from employees ord
  • 【模拟】Redraiment的遭遇

    描述 Redraiment的老家住在工业区 日耗电量非常大 是政府的眼中钉肉中刺 但又没办法 这里头住的可都是纳税大户呀 今年7月 又传来了不幸的消息 政府要在7 8月对该区进行拉闸限电 但迫于压力 限电制度规则不会太抠门 政府决定从7月1
  • ffmpeg实现web在线转码播放

    Offer 驾到 掘友接招 我正在参与2022春招打卡活动 点击查看活动详情 前提 公司项目中上传的视频编码格式不一 但是在浏览器播放中 却出现了黑屏 有声音 的情况 即使是MP4格式的视频 也存在无法播放 查询一番 了解到chrome浏览
  • 基于IEEE 802.15.4z的UWB信道分配

    基于IEEE 802 15 4z的UWB信道分配
  • 探究|Go JSON 三方包哪家强?

    引言 为了小伙伴理解 汇总了一下文章中会提及的术语名词解释 请放心品读 欢迎一起讨论交流 图片 你真的了解 Go 标准库吗 问题一 标准库可以反序列化普通的字符串吗 执行下面的代码会报错吗 var s string err json Unm
  • C语言sort函数如何使用

    https zhidao baidu com question 1754076342544723828 html c语言和c 中 对于sort函数的使用 不同 c语言中没有预置的sort函数 如果在c语言中 要调用sort函数 就需要自定义
  • BP神经网络实现简单数据二分类实战(matlab实现)

    题目 企业到金融商业机构贷款 金融商业机构需要对企业进行评估 评估结果为0和1两种形式 0表示企业两年后破产 将拒绝贷款 而1表示企业2年后具备还款能力 可以贷款 表5 9中 已知前20家企业的三项评价指标值和评估结果 试建立神经网络 决策
  • 有哪些比较基础的优质计算机书籍?

    不废话 推荐6本书 不是直接罗列6本书 而是有一个看书顺序 按我说的顺序看 学计算机基础事半功倍 1 C程序设计语言典藏版套装 首先 由于很多经典书籍大部分是用 C 语言或者类 C 语言实现 所以 C 语言本身应该作为计算机学习前的任何前置
  • canvas实现刮刮卡

    效果图如下 实现思路 1 定位实现布局 把文字放在画布下面 2 使用键盘的按下 弹起 离开 移动事件来实现刮开效果 代码如下
  • lol显示服务器正忙请稍后再试,LOL客户端报错崩溃怎么办_无法进入队列及服务器正忙提示解决方法一览_3DM网游...

    LOL作为一款较为火热的电子竞技游戏 同时在线人数非常多 因此会突发各种游戏状况 例如匹配不能进入队列 无法登陆游戏大厅 游戏经常出现报错等问题 那么这些问题有办法解决吗 下面小编将带来LOL客户端常见问题解决方法 有兴趣的小伙伴们一起来看
  • 1. CUDA编程手册中文版---CUDA简介

    1 CUDA简介 1 1 我们为什么要使用GPU 更多精彩内容 请扫描下方二维码或者访问https developer nvidia com zh cn developer program 来加入NVIDIA开发者计划 GPU Graphi