Fiori-like Prototype ( Nvidia CUDA C / C++ )

Fiori-like Prototype ( Nvidia CUDA C / C++ )

Play with Visual C / C++

Play with Visual C / C++

Model rendering

Model rendering

Demos / Prototypes / Mockups

ZFiori Studio ( Nvidia CUDA C/C++ Mockups ) S1

ZFiori Studio ( Nvidia CUDA C/C++ Mockups ) S1

Nvidia CUDA Community

Fiori-like Prototype ( Nvidia CUDA  C/C++ )

CUDA 是 NVIDIA 发明的一种并行计算平台和编程模型。它通过利用图形处理器 (GPU) 的处理能力,可大幅提升计算性能。

2006 年 11 月,NVIDIA® 推出了 CUDA®,这是一种通用并行计算平台和编程模型,它利用 NVIDIA GPU 中的并行计算引擎以比 CPU 更有效的方式解决许多复杂的计算问题。

CUDA 附带一个软件环境,允许开发人员使用 C++ 作为高级编程语言。

如下图所示,支持其他语言、应用程序编程接口或基于指令的方法,例如 FORTRAN、DirectCompute、OpenACC。

GPU Computes

可扩展的编程模型

多核 CPU 和众核 GPU 的出现意味着主流处理器芯片现在是并行系统。挑战在于开发能够透明地扩展可并行的应用软件,来利用不断增加的处理器内核数量。就像 3D 图形应用程序透明地将其并行性扩展到具有广泛不同内核数量的多核 GPU 一样。

CUDA 并行编程模型旨在克服这一挑战,同时为熟悉 C 等标准编程语言的程序员保持较低的学习曲线。

其核心是三个关键抽象——线程组的层次结构、共享内存和屏障同步——它们只是作为最小的语言扩展集向程序员公开。

这些抽象提供了细粒度的数据并行和线程并行,嵌套在粗粒度的数据并行和任务并行中。它们指导程序员将问题划分为可以由线程块并行独立解决的粗略子问题,并将每个子问题划分为可以由块内所有线程并行协作解决的更精细的部分。

Nvidia NVLink

这种分解通过允许线程在解决每个子问题时进行协作来保留语言表达能力,同时实现自动可扩展性。实际上,每个线程块都可以在 GPU 内的任何可用multiprocessor上以乱序、并发或顺序调度,以便编译的 CUDA 程序可以在任意数量的多处理器上执行,如下图所示,并且只有运行时系统需要知道物理multiprocessor个数。

这种可扩展的编程模型允许 GPU 架构通过简单地扩展multiprocessor和内存分区的数量来跨越广泛的市场范围:

高性能发烧友 GeForce GPU ,专业的 Quadro 和 Tesla 计算产品 。

SM: Streaming Multiprocessors

注意:GPU 是围绕一系列流式多处理器 (SM: Streaming Multiprocessors) 构建的(有关详细信息,请参阅硬件实现)。 多线程程序被划分为彼此独立执行的线程块,因此具有更多multiprocessor的 GPU 将比具有更少多处理器的 GPU 在更短的时间内完成程序执行。

英伟达GPU硬件架构

在英伟达的设计里,多个核心组成一个Streaming Multiprocessor(SM),一张GPU卡有多个SM。从“Multiprocessor”这个名字上也可以看出SM包含了多个处理器。实际上,英伟达主要以SM为运算和调度的基本单元。

Pascal微架构示意图:一个GPU中有多个SM,每个SM里有计算核心、Shared Memory和L1 Cache

英伟达不同时代产品的芯片设计不同,每代产品背后有一个微架构代号,微架构均以著名的物理学家为名,以向先贤致敬。当前比较火热的架构有:

Ampere 安培2020年5月发布专业显卡:Telsa A100

Turing 图灵2018年发布消费显卡:GeForce RTX 2080 Ti、Titan RTX

Volta 伏特2017年末发布专业显卡:Telsa V100 (16或32GB显存 5120个CUDA核心)

Pascal 帕斯卡2016年发布专业显卡:Telsa P100(12或16GB显存 3584个CUDA核心)

Telsa微架构:Tesla V100共有84个Streaming Multiprocessor

上图为Tesla V100的设计,它共有84个SM。图中密密麻麻的绿色小格子就是GPU计算核心,多个计算核心一起组成了一个SM。将SM放大,单个SM如下图所示。

V100 SM:单个SM有各种不同类型的计算核心,包括浮点运算、整型运算以及专门为深度学习设计的Tensor Core

可以看到一个SM中包含了计算核心、存储等部分:

针对不同类型计算的小核心,包括64位浮点核心(FP64),整型核心(INT),32位浮点核心(FP32),优化深度学习的Tensor Core。

计算核心直接从寄存器(Register)中读写数据。

调度和分发器(Scheduler和Dispatch Unit)。

L0和L1级缓存。

具体而言:

SM中的FP32进行32位浮点加乘运算,INT进行整型加乘运算,SFU(Special Functional Unit)执行一些倒数和三角函数等运算。

这里对Tensor Core做一些简单解释。

Tensor Core是英伟达新的微架构中提出的一种混合精度的计算核心。

我们知道,当前深度神经网络中使用到最频繁的矩阵运算是:D=A×B+CD = A \times B + CD=A×B+C。

Tensor Core可以对4*4的矩阵做上述运算。

其中,涉及乘法的AAA和BBB使用FP16的16位浮点运算,精度较低;涉及加法的CCC和DDD使用FP16或FP32精度。

Tensor Core是在Volta架构开始提出的,使用Volta架构的V100在深度学习上的性能远超Pascal架构的P100。

Tensor Core是一种为优化深度学习计算核心

前面提到的以物理学家命名的名称是英伟达各代GPU的微架构代号,微架构表示英伟达不同时代的芯片设计。不同微架构里各类计算核心和显卡存储的设计不同。2020年,比较流行的微架构为Volta和Turing。

对于消费者而言,英伟达主要有两条产品线:

消费级产品 GeForce 系列:GeForce RTX 2080 Ti ...

针对数据中心的高性能计算产品 Telsa 系列:Telsa V100、Telsa P100、Telsa P40 ...

其中,消费级产品GeForce可以用在个人电脑上,用来加速游戏和视频,Telsa系列产品一般用在数据中心的高性能计算加速场景上。

此外,还有使用在工作站上的Quadro系列,一般用在CAD、视频制作和部分科学计算上,是一个介于GeForce和Telsa之间的产品线。英伟达产品的命名中暗含了微架构:Telsa V100的V表示使用Volta微架构,Telsa P100的P表示使用Pascal微架构;GeForce系列中,20xx系列使用了Turing微架构。

英伟达显卡型号众多,但是归根结底需要关注两方面问题:采用哪种微架构、显卡存储(简称显存)多大。

为什么选择GPU

GPU(Graphics Processing Unit)在相同的价格和功率范围内,比CPU提供更高的指令吞吐量和内存带宽。许多应用程序利用这些更高的能力,在GPU上比在CPU上运行得更快(参见GPU应用程序)。其他计算设备,如FPGA,也非常节能,但提供的编程灵活性要比GPU少得多。

GPU和CPU在功能上的差异是因为它们的设计目标不同。虽然 CPU 旨在以尽可能快的速度执行一系列称为线程的操作,并且可以并行执行数十个这样的线程。但GPU却能并行执行成千上万个(摊销较慢的单线程性能以实现更大的吞吐量)。

GPU 专门用于高度并行计算,因此设计时更多的晶体管用于数据处理,而不是数据缓存和流量控制。

GPU VS CPU

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

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

将更多晶体管用于数据处理,例如浮点计算,有利于高度并行计算。

GPU可以通过计算隐藏内存访问延迟,而不是依靠大数据缓存和复杂的流控制来避免长时间的内存访问延迟,这两者在晶体管方面都是昂贵的。

Reference

CUDA C 和 C++ 的简单介绍

GPU软硬件基础知识

GPU加速02:超详细Python Cuda零基础入门教程,没有显卡也能学

anaconda的安装和使用(管理python环境看这一篇就够了)

Numba Deprecation Notices

CUDA 编程手册系列第一章:CUDA 简介

为啥 AMD 的 ROCm 没有被广泛使用,Nvidia 的 CUDA 一家独大?

ZFiori Studio ( Nvidia CUDA C/C++ Mockups ) S1

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,264评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,549评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,389评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,616评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,461评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,351评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,776评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,414评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,722评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,760评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,537评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,381评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,787评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,030评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,304评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,734评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,943评论 2 336

推荐阅读更多精彩内容