《CUDA C++ Programming Guide》第一章 CUDA介绍

这篇具有很好参考价值的文章主要介绍了《CUDA C++ Programming Guide》第一章 CUDA介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用GPUs的好处

在相同的价格和功耗范围内,图形处理器 GPU 比 CPU 提供了更高的指令吞吐量和内存带宽, 许多应用程序利用这些更高的功能在 GPU 上比在 CPU 上运行得更快。相比较其他计算设备,如 FPGA,也是非常节能的,但其提供了比 GPU 少得多的编程灵活性。

GPU 和 CPU 之间的这种性能差异之所以存在,是因为它们在设计时考虑到了不同的目标。CPU 被设计成能够尽可能快地执行一系列操作(称为线程) ,并且能够并行地执行几十个这样的线程。GPU 被设计成能够并行执行数以千计的线程(缓冲较慢的单线程性能以获得更大的吞吐量)。

作为一个并行数据计算设备的图形处理器单元仅仅几年的时间,可编程的图形处理器单元演变成为了一匹绝对的计算悍马,正如图所示。
当极高的内存带宽驱动多核处理器时,GPU 为图型和非图型处理提供了难以置信的计算资源

《CUDA C++ Programming Guide》第一章 CUDA介绍,c++,人工智能,性能优化

这个演变背后的主要原因是由于GPU 被设计用于高密度和并行计算,更确切地说是用于图形渲染

因此更多的晶体管被投入到数据处理而不是数据缓存和流量控制

示图显示了 CPU 芯片资源与 GPU 芯片资源的示例分布

将更多的晶体管用于数据处理,例如浮点运算,有利于高度并行的计算;GPU 可以通过计算隐藏存储器访问延迟,而不需要依赖大型数据缓存和复杂的流控制来避免长的存储器访问延迟,因为这两者在晶体管方面都很昂贵。

一般来说,应用程序具有并行部分和顺序部分的混合,因此系统设计采用 GPU 和 CPU 的混合,以最大限度地提高整体性能。具有高度并行性的应用程序可以利用图形处理器的这种大规模并行处理机特性来获得比 CPU 更高的性能。
《CUDA C++ Programming Guide》第一章 CUDA介绍,c++,人工智能,性能优化
更加具体地看,GPU 是特别适合于并行数据运算的问题-同一个程序在许多并行数据元素,并带有高运算密度(算术运算与内存操作的比例)。由于同一个程序要执行每个数据元素,降低了对复杂的流量控制要求; 并且,因为它执行许多数据元素并且据有高运算密度,内存访问的延迟可以被忽略

并行数据处理,意味着数据元素以并行线程处理。处理大量数据集,例如数组的应用程序可以使用一个并行数据的编程模型来加速计算。

在3D 渲染上,大的像素集和顶点被映射到并行线程。同样,图像和媒体处理的应用程序例如图像处理,录像编码和解码,图像缩放比例,立体视觉,以及图像识别也可以映射图像块和像素到并行处理线程。

实际上,在图像领域外,许多算法同样可以通过并行数据处理得到加速、物理模拟到金融计算或者生物计算均可。

然而直到今天,尽管强大的计算能力包装进了GPU,而它对非图形应用的有效支持依然有限

  1. GPU 只能通过图型API 来编程,导致新手很难学习和非图形API 上很不充分的应用
  2. GPU 程序可以从DRAM 收集数据元素。但GPU 程序不能写入信息到DRAM 的任何部分,相比CPU 丧失了很多编程的灵活性
  3. 有些应用是由于DRAM 内存带宽而形成的瓶颈,未能充分利用GPU 的计算能力

CUDA: 一个通用的并行计算平台和编程模型

2006年11月,NVIDIA 推出了 CUDA,这是一个通用的并行计算平台和编程模型,利用 NVIDIA 图形处理器中的并行计算引擎

比 CPU 更有效的方式解决许多复杂的计算问题。

CUDA: 一个在GPU 上计算的新架构CUDA(Compute Unified Device Architecture) 统一计算设备架构,在GPU 上发布的一个新的硬件和软件架构,它不需要映射到一个图型API 便可在GPU 上管理和进行并行数据计算。从G80 系列和以后的型号都可以支持。操作系统的多任务机制通过几个CUDA 和图型应用程序协调运行来管理访问GPU。

CUDA 软件堆栈由几层组成,如图所示:一个硬件驱动程序,一个应用程序编程接口(API)和它的Runtime, 还有二个高级的通用数学库,CUFFT 和CUBLAS。硬件被设计成支持轻量级的驱动和Runtime 层面,因而提高性能。

《CUDA C++ Programming Guide》第一章 CUDA介绍,c++,人工智能,性能优化
CUDA API 更像是C 语言的扩展,以便最小化学习的时间

CUDA 提供一般DRAM 内存寻址方式:“发散” 和“聚集”内存操作

《CUDA C++ Programming Guide》第一章 CUDA介绍,c++,人工智能,性能优化
从而提供最大的编程灵活性。从编程的观点来看,它可以在DRAM的任何区域进行读写数据的操作,就像在CPU 上一样

CUDA 允许并行数据缓冲或者在On-chip 内存共享,可以进行快速的常规读写存取,在线程之间共享数据。

《CUDA C++ Programming Guide》第一章 CUDA介绍,c++,人工智能,性能优化
应用程序可以最小化数据到DRAM 的overfetch 和round-trips ,从而减少对DRAM 内存带宽的依赖文章来源地址https://www.toymoban.com/news/detail-610772.html

到了这里,关于《CUDA C++ Programming Guide》第一章 CUDA介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《人工智能》第三版 第一章 概述 课后习题

    第一章 讨论题 1.你如何定义人工智能? 人工智能利用计算机和机器模仿人类大脑解决问题和决策的能力 2.区分强人工智能和弱人工智能。 区分强人工智能和弱人工智能的关键在于它们的功能和应用范围:强人工智能能够执行任何人类智能任务,而弱人工智能则专注

    2024年01月25日
    浏览(48)
  • 人工智能( 第 3 版)第一章学习笔记

    第 1 章 人工智能概述 1.0 引言 本文对人工智能的观点:人工智能是由人(people)、想法(idea)、方法(method)、机器(machine)和结果(outcome)等对象组成的。人通过机器(计算机)将自己的想法以某种方法进行实现,最终实现的东西称为结果。 研究人工智能或实现人工智能系

    2024年01月25日
    浏览(50)
  • CUDA编程第一章:windows下安装visual studio 2019+CUDA10.2的整体图文流程

    去年虽然看了CUDA编程的基础知识(没学完つ﹏⊂),但是没有整理成笔记,并且一直没有使用,导致忘了好多。今年打算重新再把CUDA的基础知识学习一边,并进行总结梳理,记录成文,便于后续的复习。 本篇博客是CUDA编程系列笔记的开篇,我打算先介绍下搭建CUDA编程环境

    2024年02月15日
    浏览(51)
  • 第一章--第二篇--GPT-3.5 人工智能模型

    一、引言 GPT-3.5 是自然语言处理领域的一种基于深度学习的模型,它是 GPT-3 模型的进一步发展和完善。GPT-3.5 模型采用了更加先进的深度学习技术和更加丰富的语料库,可以生成更加自然、流畅和准确的文本。本文将从以下几个方面介绍 GPT-3.5 模型:模型原理、模型结构、应

    2024年02月02日
    浏览(51)
  • 【读书周】人工智能(第3版) 第一章概述笔记

    此份笔记是个人看书总结见解,如有错误不合理之处可以提出 p11如何规划学时 ch1 3h ch2 2h ch3 4h 由潜意识引出什么是人工智能,从人工与智能分开思考 评估智能可以通过问答的间接方式,感觉类似于chatgpt形式 接着具体介绍图灵测试以及相关争议,有人认为测试存在“背答案

    2024年01月22日
    浏览(55)
  • 人工智能发展简史第一章:起步期-20世纪50年代及以前

    引言 人工智能到底是什么?通常来说,人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人智能的理论、方法、技术及应用系统的一门新技术科学。人工智能领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。 但是事实上,给一门学

    2024年01月23日
    浏览(101)
  • ElasticSearch第一章(入门介绍)

    ElasticSearch(弹性搜索),简称ES。 ES是一个分布式,RESTFul风格的搜索和数据分析引擎 ,能够解决不断涌现出的各种用例。作为 Elastic Stack(Elastic技术栈简称ELK) 的核心,Elasticsearch 会集中存储您的数据,让您飞快完成搜索,微调相关性,进行强大的分析,并轻松缩放规模。 我

    2024年02月22日
    浏览(43)
  • 苍穹外卖-第一章项目介绍

    1)管理端功能 员工登录/退出 , 员工信息管理 , 分类管理 , 菜品管理 , 套餐管理 , 菜品口味管理 , 订单管理 ,数据统计,来单提醒。 2)用户端功能 微信登录 , 收件人地址管理 , 用户历史订单查询 , 菜品规格查询 , 购物车功能 , 下单 , 支付、分类及菜品浏览。 1)管理端 餐饮企业

    2024年02月08日
    浏览(43)
  • 小满nestjs(第一章 介绍nestjs)

    视频课程 小满nest js 系列_哔哩哔哩_bilibili Nestjs 是一个用于构建高效可扩展的一个基于Node js 服务端 应用程序开发框架 并且完全支持typeScript  结合了 AOP 面向切面的编程方式 nestjs 还是一个spring MVC 的风格 其中有依赖注入 IOC 控制反转 都是借鉴了Angualr nestjs 的底层代码运用了

    2024年02月01日
    浏览(37)
  • 第一章 C++语言简介之——c++语言的特点

    C++是一种 编译式的、通用式、大小写敏感 的编程语言, 完全支持面向对象程序设计 。 C++语言与C语言相比,在求解问题方法上进行的最大改进是 面向对象 Windows环境下,由C++源程序文件编译而成的 目标文件的扩展名是.obj , 源文件的扩展名为.cpp , 所有的obj文件连接成为

    2024年01月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包