※ 引述《breathair (拆了?简单了)》之铭言:
: 小弟请教各位大佬
: NV最大的优势,应该是CUDA
: CUDA让各AI专家可以编程NV GPU
: 让GPU跑你想跑的东西,而不侷限在图形运算
: AMD正是落后在这里
: 当大家都用CUDA编程AI芯片
: AMD不能用CUDA等于不能相容
: 于是AI芯片就被NV占据极大优势
: 以上不知对不对
: 如果对
: 小弟的疑问是
: 如果NV护城河是CUDA这种编程语言
: 而AI最大优势又是编程
: 难道以后不会因为随着AI的强大
: 各路AI芯片可以把CUDA编程
: 转译成自家AI芯片可以接受的语言
: 这样护城河还会在吗?
讲一下图学历史好了
其实programmable GPU不是啥新概念
狭义的 GPU 把它定义成 3D 绘图硬件开始
规格是 OpenGL 1.1 跟 DirectX 7.0
硬件设计是 fixed-function pipeline
绘图主要分两个步骤
1. Tessellation
三角形画 - 由硬件 Vertex processor (VP) 处理
2. Rasterization
着色(填充) - 由 Pixel processor (PP) 处理
步骤1比较简单,就是把3D model变成一连串的三维空间中的三角形资料
喂到步骤2 步骤2会依据光源设定/贴图 去把三角形用pixel填充在萤幕上
离题一下:
那时绘图规格还很简单 没有所谓的材质特性 反光阿 折射 漫散射都没有
也没有啥阴影的
光源只有背景光 (ambient light)
点光源 (spot light)
方向光 (directional light)
这样功能 看起来很阳春 有办法做出画面好的游戏吗? 有的
游戏引擎开发神人 John Carmark (id soft)
在1999年推出 Quake3 (雷神之锤3)
并写出了 Quake3 Engine 到现在依然是封闭式场景的设计标准
quake3 engine 放弃了OpenGL提供的光源计算
利用场景分割 预先计算静态光源生成lightmap
把 lightmap 结合 贴图 (texture) 让游戏的关卡画面拟真大幅提升
多年以后 当Valve利用quake3引擎 开发出source engine (Half-Life 2)
肯定会回想起把lightmap 大幅翻新的遥远的午后
五年后的2004年 Valve公司推出半条命2
这游戏依然是FPS+带入剧情的顶级游戏
Valve把lightmap改掉 改用物理光学公式radiosity
去计算新的光学贴图 有兴趣的可以看一下他们的pdf
https://advances.realtimerendering.com/s2006/
Mitchell-ShadingInValvesSourceEngine.pdf
回正题:
由于步骤1 太简单
所有的bottleneck 都卡在 PP 像素填充速度
所以大部分时间 VP 都是闲置的
下一代的设计把 VP/PP 结合 从 fixed shader改成 unified shader
也是现在GPGPU的雏形
第一个这么做的还是 ATI (所以AMD现在落后不要怪人阿)
unified shader只要tessellation工作做完了
就会被分配rasterization的工作
所以不会有硬件闲置的问题
shader的加强 加上OpenGL 2.0/DirectX 9.0的更新
让开发者可以写 shader program 去控制每个stage
shader的工作
这时已经有programmable GPU了
这边是 OpenGL 的 GLSL(GL Shading Language) 范例
https://learnopengl.com/Getting-started/Shaders
微软是推 HLSL (High Level Shading Language)
然后 NV 很找死的 又研发自己的语言叫做 cg (C for Graphics)
大家说老黄是因为CUDA才成为AI霸主
其实他在更早推出的cg才是
黄仁勋:没有CG,辉达早就死了!挺过倒闭危机,他这一豪赌反转壮大AI帝国
那时大学修电脑图学 期末作业刚好是要搞 shader programming
结果助教也不教 GLSL 跑去用 CG 搞得资料更少更难写
而且写到一半才发现 我的烂显卡根本不支援 cg这功能
还花了快六千多块买一张NV显卡才搞定
那时NV就开始大力推动电脑图学
他有推出 GPU GEMS系列
GPU GEMS 还主打 cg
到了 GPU GEMS2/GPU GEMS3 就开始推 cuda 主打GPGPU了
算一算 也是十几年前的事了