cuda文档复述--1.简介

逐字逐句翻译太累了(我懒),我就只按照我理解的意思提炼+转述,不确保正确性哈,如有问题恳请大家批评指正。我的知识来源:cuda官方文档

1.Introduction

1.1

GPU比CPU计算速度更快,原因是GPU花更多精力去处理数据,而不是像CPU那样去做数据cache以及控制数据流(flow control)

1.2

某年某月,为了做并行计算,NVIDIA搞出了CUDA。CUDA有支持C C++ Fortran Java Python等语言的环境(具体还支持啥语言自己百度,总之支持很多语言,很通用很nb)

1.3

多核CPU和多核GPU的出现意味着主流芯片都采用并行系统。但这带来一个问题:

如何开发一个能//透明地改变其并行性/以此来充分利用日益增长的处理器内核//的应用软件,就像3D图像透明地改变其对于各种数量内核的GPU的并行性?

(说人话版)不同GPU内核数量不同,我该怎么搞出一个能适应所有GPU的、可移植性很强的软件?

可移植性:类似于JVM使得java能在各种操作系统上都能跑

scale v. change the size of sth.

leverage v. get as much advantage or profit as possible from sth. you have

CUDA可以实现可移植性!(我牛不牛)而且假如你会C,那学CUDA会很简单。

CUDA核心有3个模块:

1.线程组体系

我想不出恰当的词翻译,你就想象一个金字塔,≈西周等级制度,线程调度按照这个hierarchy金字塔来决定先调度谁

2.共享内存

3.障碍同步(只面向程序员,且是一个语言拓展的小集合)

barrier synchronization — that are simply exposed to the programmer as a minimal set of language extensions.

barrier synchronization?a minimal set of language extensions?我没理解这个意思 可能是我知识面没学到这个概念

以上3个模块为数据并行性、线程并行性、粗粒度数据并行性、进程并行性提供了很好的可移植性。

coarse adj. consisting of relatively large pieces

nest v. to put types of information together, or inside each other, so that they form a single unit

grain n. a small hard piece of particular substances

task 进程 job 作业

并且,

它们指导程序员将问题划分为粗略的子问题,这些子问题可以通过线程块并行独立解决,并将每个子问题划分为可以由块内的所有线程并行协作解决的更精细的部分。

(说人话版)这3个模块可以把一个问题拆分成能被独立解决的几个小问题,每个小问题又可以被拆解成更小的部分。

问题:拆分成小问题。每个小问题互相独立。所有小问题可以并行解决。

小问题:可以再拆分成更小的部分。1个小问题由1个线程块解决,1个线程块里有很多线程,它们合作(不是独立)解决这些更小的部分。

并且,

这种分解通过允许线程在解决每个子问题时进行协作来保持语言表达能力,同时启用自动可伸缩性。

通过在解决每个小问题时允许线程合作,这种拆解方式保留了语言的表述性,并且使得自动改变性(可移植性吧)呃…我觉得电脑翻译的比我好…

并且,

每个线程块都可以以任何顺序、并发或顺序在 GPU 内的任何可用多处理器上调度,以便编译的 CUDA 程序可以在任意数量的多处理器上执行,如图 3 所示,只有运行时系统需要知道物理多处理器计数。

每个线程块(thread block)就是一块砖,哪里需要哪里搬(通过cuda可以实现这样的按你心意分配thread block)。只要你运行的时候记录在册就行了。

scalable 想象一下向量/矩阵在被拉伸or压缩时那种…可以被任意揉捏的样子

1.4

介绍了一下目录每条大概是在讲什么的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值