体系结构课程报告

一、CUDA概念

CUDA,英文全名Compute Unified Device Architecture,中文名统一计算设备架构,是一种革命性的并行计算架构。它同时支持硬件和软件的技术,统一了 GPU 的通用计算编程模式,同时引入的共享存储器,提高计算速度。CUDA 不需要借助图形学 API,而是采用了类 C 语言进行开发。同时,CUDA 采用了统一处理架构,降低了编程的难度,这使得CUDA 架构更加适合进行 GPU 通用计算。这里所说的GPU,GPU (Graphic Processing Unit) 是图形处理单元的简称,最早用于图形渲染。我们知道图形处理对计算性能要求是比较高的,GPU本来是用来进行图形处理的高性能并行处理器,由于他的并行计算性能,开发者尝试对其的硬、软件进行改进,使得GPU
的可编程能力逐步提高,GPU 通用计算应运而生。由于 GPU 具有比 CPU更为强大的计算性能,为科学计算的应用提供了新的选择。

上图可以看GPU相比CPU有更多的处理单元。

二、CUDA 架构

下面这幅图CUDA的总体结构:

1.软件层面

CUDA 软件堆栈由以下几层组成:

A、硬件驱动程序

B、应用程序编程接口(API)和它的Runtime

C、二个高级的通用数学库(CUFFT 和CUBLAS)

其中A属于驱动层的API,B和C属于运行层的API,运行层 API 是建立在驱动层API之上的,是对驱动层 API 的封装和扩展。这就像纯C++和STL的关系一样,纯C++是STL的底层实现。

2.硬件层面

sp:streaming processor,底层最基本的处理单元,所有指令和任务最终都是在sp上处理的。GPU并行计算的本质就是多个相同功能部件sp同时处理;

sm:streaming multiprocessor,多个sp加上其他相关资源组成一个sm,这里的其他资源特指存储资源:共享内存、寄储器等;

warp:GPU执行程序时的调度单位,目前CUDA的warp的大小为32,同在一个warp的线程,以不同数据资源执行相同的指令;

grid、block、thread:在利用CUDA进行编程时,一个grid分为多个block,而一个block分为多个thread。如下图:

一个sm只会执行一个block里的warp,当该block里warp执行完才会执行其他block里的warp。进行划分时,最好保证每个block里的warp比较合理,这样可以使一个sm交替执行里面的warp,好比多体交叉存储器可以在一定程度上做到并行,从而提高计算效率,此外,在分配block时,要根据GPU的sm个数,合理分配的block数,让GPU的sm都利用起来,提高设备利用率。分配时,也要考虑到同一个线程block的资源分配问题,不要出现资源相关等问题。

三、CUDA 编程

CUDA专用于解决数据并行计算(同一程序在许多数据元素上并行执行)、具有高运算密度(算术运算与内存操作的比例)的问题。

1.CUDA 程序的基本模式

* 分配内存空间和显存空间

* 初始化内存空间

* 将要计算的数据从内存上复制到显存上

* 执行 kernel 计算

* 将计算后显存上的数据复制到内存上

* 处理复制到内存上的数据

CUDA 支持线程级并行,并在硬件中动态地创建、调度和执行线程。在 CPU 中,这些操作是重量级的;但是在 CUDA 中,这些操作是轻量级的,原因在于CPU中线程并行很大程度上是靠软件实现的,而CUDA中则主要靠硬件,硬件直接实现起来速度快、效率高。CUDA 编程模型将 CPU 作为主机(Host),而将 GPU 做为协处理器(Coprocessor)或者设备(Device),以CPU来控制程序整体的串行逻辑和任务调度,而让GPU来运行一些能够被高度线程化的数据并行高性能计算部分。二者有机结合, GPU 与
CPU 协同工作,更确切的说是 CPU 控制 GPU 工作,GPU 在高性能计算方面有巨大的先天优势(结构决定性质,这从CUDA的硬件组成可以看出一二)。 一般而言,CUDA 并行程序也包括包括串行计算部分和并行计算部分,并行计算部分称之为内核(Kernel),内核只是一个在GPU 上执行的数据并行代码段。理想情况下,串行代码的作用应该只是清理上个内核函数,并启动下一个内核函数。但目前技术遇到平瓶颈,串行计算部分仍然占据着比较大的比率,从而在一定程度上影响了CUDA的推广使用。

四、CUDA前景

    GPU正逐渐将并行计算推向主流,并行计算与异构处理器系统的“联姻”将是大势所趋,而主导这场变革的就是CUDA。随着越来越多的开发者加入到CUDA怀抱,支持CUDA的软件将逐渐渗透到我们生活的方方面面。由于GPU的特点是处理密集型数据和并行数据计算,因此CUDA非常适合需要大数据高性能并行计算的领域。目前CUDA除了可以用C语言开发,也已经提供FORTRAN的应用接口,未来可以预计CUDA会支持C++、Java、Python等多种高级编程语言。现在CUDA技术和思想主要应用在图形动画、游戏、地质、生物、物理模拟等领域,由于GPU本身的通用特性和CUDA提供的简便高效的开发环境,我们想象CUDA大展身手的应用领域:

  ◇ 搜索引擎、文本分类等相关算法的应用

  ◇ 数据库、数据挖掘

  ◇ 电信、金融、证券数据分析

  ◇ 数理统计分析

  ◇ 生物医药工程

  ◇ 图像语音识别

  这些领域的计算都是属于大规模的数据密集型计算,需要高性能、高并行的计算结构,因此我们完全有理由相信,在CUDA的驱动下,GPU能够在这些领域建立一个属于自己的新时代。

五、CUDA总结

GPU通用计算一般指计算密集的、高并行的计算,CUDA就是基于这种通用计算发展起来的架构;CUDA是一种革命性的并行统一计算设备架构,由一系列硬件软件技术支撑。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。

当下大数据理念很火,大数据时代除了要用运用数据的思想,还要用处理数据的技术手段。CUDA的发展,为某些并行计算、具有高运算密度的大数据问题的求解提供了技术支持。

时间: 2025-01-18 12:00:28

体系结构课程报告的相关文章

《软件工程》课程报告 —国土资源执法监察管理信息系统建模

一.问题描述与需求分析 国土资源执法监察管理信息系统的用户需求以及面向对象建模. 分析题目,可知软件的的重点不是国土资源的执法本身,而是对执法进行监察, 主要工作有各级各部门开展核查.整改查处.督查.验收和存档,另外还应能处理群众即投诉人的举报投诉.涉及的有关部门总的有投诉人.国土资源局.政府.监察局:而国土资源局里的分工比较明确,可以进一步划分为地籍科.规划科.用地科(利用科).耕保科.监察科(在国土资源局内部也有相应的监察科):政府也可以按等级进行细分,大体有市政府.省厅. 经过查阅相关资料

20189221 2018-2019-2 《密码与安全新技术专题》课程报告总结

20189221 2018-2019-2 <密码与安全新技术专题>课程报告总结 课程:<密码与安全新技术专题> 班级: 201892 姓名: 郭开世 学号:20189221 上课教师:谢四江 上课日期:2019年2月26日--2019年6月4日 必修/选修: 选修 专题讲座总结 第一讲:web安全与内容安全 第二讲:量子密码技术 第三讲:基于深度学习的密码分析与设计 第四讲:信息隐藏 第五讲:区块链技术 第六讲:漏洞挖掘及攻防技术 论文汇报总结 学习收获&建议意见 学习收获

代写程序作业、代写《大学计算机》课程报告作业

1 2 3 4 5A.(答案全面.准确,概念清楚,语言精炼流畅,文字通顺,观点有新意)B.(答案较全面,概念较清楚,文字通顺)C.(答案基本完整,概念基本清楚)D.(答案欠完整,有些概念不够清楚,达到最低要求)E.(不合格)分数(百分制): 评阅人:2018 年 05 月 07 日装订线第 1 题 任选一道实验 3 中的 Excel 操作题,描述操作过程(写清楚题目要求.分析思路.操作过程.遇到的问题及解决思路)第 2 题 根据课程学习,从下面两道题中选择一题并做出回答1)结合实例,对 SQL

第四章处理器体系结构 学习报告

第四章  处理器体系结构 4.1 Y86指令集体系结构 定义一个指令集体系结构,例如Y86,包括定义各种状态元素.指令集和他们的编码.一组变成规范和异常事件处理. 4.1.1 程序员可见的状态 ①程序员可见的状态:Y86中每条指令都会读取或修改处理器状态的某些部分.这里的“程序员”既可以是用汇编代码写程序的人,也可以是产生机器代码的编译器. Y86的处理器状态类似IA32.有8个程序寄存器:%eax,%ecx,%edx,%ebx,%esi,%esp和%ebp.处理器的每个程序寄存器存储一个字.

Mykernel 第三周课程报告

刘子健 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 使用gdb跟踪调试内核从start_kernel到init进程启动 详细分析从start_kernel到init进程启动的过程 使用gdb跟踪调试内核 qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S # 关于-s和-S选项的说明

机电传动控制个人课程报告

                                                                                                                    机械臂的机电传动控制研究 摘要 机械臂是机器人中的重要组成部分,作为执行机构,有着操作灵活.控制方便.不易受环境因素影响的特点,使得它在工业机器人.家用机器人中有很好的前景,能够极大的提高生产效率,带来良好的社会效益.然而,现如今在机械臂研究领域,人们发现:机械臂的难

第十二周课程报告

实验内容:编写一个图形界面. 1.实验代码 package Rectangle; import java.awt.*; import javax.swing.*; public class ActionHandle { public static void main(String[] args) { JFrame frame=new JFrame("偷星九月天");//声明一个窗体对象 JButton submit=new JButton("登录");//声明一个按

《Python编程》课程报告 python技术在数据分析中的应用之网络爬虫

摘要 引言 课题研究背景和研究现状 课题背景和目的      研究现状      意义      主要工作      课题安排      开发工具及其开发环境   需求分析与设计        功能性分析 爬虫页面抓取 爬虫页面处理 爬虫功能实现 爬虫总结  

跨文化管理课程报告

关于外派的思考 外派至美国 预期 众所周知,美国作为当代世界最为发达的资本主义国家,其政治.经济.军事.文化.创新等方面的实力均称霸全球.人类发展指数高达0.937,在各个方面都是世界唯一且当之无愧的超级强国. 在文化方面,不同于中国文化,美国文化更加看重个人的奋斗和努力.规则意识也更加强大,人情关系的重要程度也远低于中国."美国梦"也一直激励着世界各地无数怀揣梦想的的年轻人,历经千辛万苦,只为来到这片土地创造自己的价值. 同时,美国不同于中国传统的人情社会,为人处事.待人接物等等方面