学习计算机图形学(一)

今天上了第一节计算机图形学课,记一些学习笔记,欢迎批评指正。

一.CPU与GPU

一般的CPU都是四核八线程的,对应图中的四个ALU,而GPU有多个算术逻辑单元,每一个单元理解为一个“线程”,众多的线程保证了GPU并行计算的优势,而CPU更适合于逻辑运算复杂的操作。CPU擅长逻辑控制,是串行计算,而GPU擅长高强度计算,是并行计算。

GPU又分为集显和独显,集成显卡是集成在主板上,共用主存,而独立显卡的板子上有自己的显存,这样会减少数据通讯所用的时间。

二.线程架构

(1)知识点
Host :主机
Kernel:核程序(由C 程序员编写 的能被并行化的代码)
PTX(Parallel Thread Execution):并行线程执行程序
CTA(Cooperative Thread Arrays):并行或同时执行同一个 核的多个线程列(1D,2D, 3D
Grid: 将执行同一核程序的CTAs 组成一个Grid
注意: CTA中的线程执行的是相同的核 程序,Grid中的 CTA 是独立执行的
Why need Grid?
~ 对于同一核程序可调用的线程将会非常 多
~  减少线程间的通信和同步,(因为不同 CTA之间的线程不能相互通信和同步)
(2)自己理解
~ 一个kernel是由多个编程语句组成的,即多个并行计算
~ 一个Grid对应一个kernel
~ 一个Grid中的每一个CTA(block)对应一个并行计算的语句
~ 硬件中为CTA,CUDA中即软件层面叫block
~ 一个CTA由多个线程(可以理解为ALU)组成,不过CTA为基本单位

三.CUDA与CUDNN

(1)CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。
(2)CUDNN(CUDA Deep Neural Network library):是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。它能将模型训练的计算优化之后,再通过 CUDA 调用 GPU 进行运算。如果你要用GPU训练模型,CUDNN不是必须的,也就是说你也可直接使用 CUDA,而不通过 CUDNN ,但运算效率会低好多。

四.CUDA编程

理解:

(1)<<<...>>>CUDA语法,表示kernel被指定多少个CUDA线 程调用

(2)

~ threadIdx是一个uint3类型,表示一个线程的索引。

~ blockIdx是一个uint3类型,表示一个线程块的索引,一个线程块中通常有多个线程。

~ blockDim是一个dim3类型,表示线程块的大小。

~ gridDim是一个dim3类型,表示网格的大小,一个网格中通常有多个线程块。

五.流处理器

  1.  GPU围绕一系列流式多处理器(SMs)。多线程程序被分割成线程块,彼此独立,有更多的多处理器的GPU执行相同的程序将会使用更少的时间。
  2. 协处理器,是一种协助中央处理器完成其无法执行或执行效率、效果低下的处理工作而开发和应用的处理器。这种中央处理器无法执行的工作有很多,比如设备间的信号传输、接入设备的管理等;而执行效率、效果低下的有图形处理、声频处理等。为了进行这些处理,各种辅助处理器就诞生了。需要说明的是,由于现在的计算机中,整数运算器与浮点运算器已经集成在一起,因此浮点处理器已经不算是辅助处理器。而内建于 CPU 中的协处理器,同样不算是辅助处理器,除非它是独立存在。

六.存储结构

 

  1. 每一线程拥有自己私有的存储,并且每个线程可以有多个私有存储,可以理解为多个寄存器。
  2. 同一CTA有一个对CTA中所有 线程可见的共享存储,其生命 周期在CTA执行完毕释放。
  3. 同一block的所有的线程都可访问同一块全局存储。
  4. 同一grid的所有的线程都可访问同一块全局存储.
  5. 常量、纹理和表面存储这些额 外的存储空间都可被所有线程 访问。(常数和纹理存储是只读的;表面存储是可读写的。
  6. 纹理可以理解为一小块图像,再多次复制平铺在图片上。图片是贴在物体表面,用来展示物体的纹理,纹理即纹路,是颜色与透明度的排列方式。

      

 上面说到的thread、CTA、block、grid都是虚拟机中的架构,实际的物理结构如下图,通常一个sm上运行一个block,当设备内存足够时,多个block可以在同一个sm上运行。

      

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习计算机图形学的路线可以包括以下步骤: 1. 掌握基础数学知识:计算机图形学涉及很多数学概念,如线性代数、向量和矩阵运算、几何学等。建议先学习这些基础数学知识,以便更好地理解后续的图形学概念和算法。 2. 学习图形学基础概念:了解计算机图形学的基本原理,包括坐标系统、颜色表示、光照模型、渲染管线等。可以阅读相关的教材或在线教程,如《计算机图形学原理与实践》等。 3. 学习图形库和API:掌握使用图形库和API进行图形编程的基本技巧。常用的图形库包括OpenGL和DirectX,它们提供了一套函数和工具集,用于图形渲染、对象建模和交互等。 4. 学习图形算法和技术:了解常用的图形算法和技术,如线段裁剪、多边形填充、光照计算、纹理映射等。掌握这些算法和技术可以帮助你实现各种复杂的图形效果。 5. 实践项目和练习:通过实践项目和练习来巩固所学的知识。可以从简单的图形渲染开始,逐渐扩展到更复杂的场景和效果。参与开源项目或自己设计和实现小游戏也是一个很好的锻炼机会。 6. 深入研究和学术探索:如果你对图形学有更深入的兴趣,可以进一步研究和学术探索。阅读相关的研究论文、参加学术会议,了解最新的图形学进展和技术。 记住,图形学是一个广阔而复杂的领域,需要持续的学习和实践才能掌握。不断地编写代码、阅读文献、参与讨论和交流,将有助于你不断提升自己的图形学技能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值