NVIDIA通用计算首代架构 Tesla 与 CUDA 1.0 剖析
我们大家都知道英伟达早期是通用做显卡的,在我上大学的计算架构时候 ,同学们给自己的首代电脑上配一块英伟达的显卡一般都是为了玩游戏更爽 。
但是通用近些年来随着比特币 、大模型等应用场景的计算架构火热 ,英伟达也早就完成了从显卡到通用计算 GPGPU 的首代华丽转身。造就了今天将近4.3万亿美金市值的通用巨无霸。源码库
我们今天就从英伟达的计算架构第一代数据中心 GPU - Tesla 说起。通过深入地了解第一代 Tesla 架构以及和它配套的首代 CUDA 1.0 。学习完本文后 ,通用我们将对以下问题有比较深入的计算架构理解 。
英伟达为啥要从游戏显卡转型科学计算?首代Tesla 中的统一着色架构到底是什么,为什么重要?通用通用GPU中 SM 流多处理器都包含了哪些硬件模块 ?为什么合理使用常量能大幅度提升 GPU 的计算能力?CUDA如何实现使用C/C++就能进行GPU编程的 ?好了 ,让我们开始今天的计算架构 GPU 学习之旅 !
一、云计算首代英伟达游戏卡的困局
先让飞哥带大家把地球时间进度条倒回到 2004 年 。
当时英伟达与 ATI(后被 AMD 收购)的显卡大战进入白热化阶段。尽管英伟达通过 GeForce 6/7 系列占据市场优势 ,但图形市场增长逐渐放缓 ,且 AMD 凭借 Radeon 9700 Pro 等产品在部分领域实现反超。此时,英伟达继续找到第二增长曲线 。
当时就有这么一个领域 ,科学领域面临计算瓶颈。传统 CPU 集群成本高且不说,而且且性能低下 。部分科学研究者开始利用 GPU 的图形 API 和各种 Shader语言(HLSL 、GLSL、源码下载Cg等)实现了一些图像分割、CT图像重建、快速傅立叶变换、图像以及音视频编解码等算法 。
这就让英伟达眼前一亮 ,原来 GPU 还可以这么玩 。于是灵感就来了 ,如果能在计算场景提供专用硬件,和更方便使用的编程工具 ,那是不是就能占据通用计算这块市场。这第二曲线不就打开了么!
说干就干。香港云服务器英伟达在 2006 年推出了 Tesla 系列的 GPU ,以及 CUDA 编程套件。开始了从显卡到通用计算的转型 。
二 、Tesla 架构介绍
英伟达在 2006 年开辟了新的通用计算系列产品名字叫 Tesla 。
首代 Tesla 通过统一着色架构(Unified Shader Architecture)将传统分离的顶点着色器、像素着色器、几何着色器统一为可编程的流处理器(Streaming Processor) 。该流处理器虽然设计上主要是处理可执行顶点 、像素等着色图形任务,免费模板但也可执行与图形无关的计算指令,为通用计算提供了基础