- 博客(9)
- 收藏
- 关注
转载 GPU体系架构(二):GPU存储体系
GPU是一个外围设备,本来是专门作为图形渲染使用的,但是随着其功能的越来越强大,GPU也逐渐成为继CPU之后的又一计算核心。但不同于CPU的架构设计,GPU的架构从一开始就更倾向于图形渲染和大规模数据的并行计算处理。而大规模的并行计算,离不开大规模的数据传输,只有深入了解了GPU的存储体系,才能真正发挥GPU的威力,写出高性能的软件产品。但是由于GPU存储体系相关的资料非常少,加之非常分...
2019-06-14 16:13:00
1385
转载 GPU体系架构(一):数据的并行处理
最近在了解GPU架构这方面的内容,由于资料零零散散,所以准备写两篇博客整理一下。GPU的架构复杂无比,这两篇文章也是从宏观的层面去一窥GPU的工作原理罢了GPU根据厂商的不同,显卡型号的不同,GPU的架构也有差别,但是大体的设计基本相同,原理的部分也是相通的。下面我们就以NVIDIA的Fermi架构为蓝本,从降低延迟的角度,来讲解一下GPU到底是如何利用数据的并行处理来提升性能...
2019-04-12 14:34:00
743
转载 Linux虚拟内存系统详解
本文章以Linux为例,讲解一下虚拟内存系统的工作原理,windows系统的原理也是大同小异,有兴趣的读者可以自行查阅相关资料。linux内核以及它管理用户内存的机制,下面我们以应用程序gonzo的内存示意图为例,进行详细说明。Linux进程在内核中是以一个task_struct实例来实现的,称为进程描述符。task_struct的mm字段指向了内存描述符,即mm_s...
2019-02-28 17:03:00
277
转载 多线程渲染框架
Introduction现在很多游戏引擎都在使用一种称为“多线程渲染渲染器”的特殊渲染系统。多线程在一段时间内已经变得非常的普及了,但是究竟什么是多线程渲染器,它又是如何工作的呢?在这篇文章里,我将解释这些问题,并将实现一个简单的多线程渲染的框架。Why Use Threads at All其实这是一个比较简单的问题,假如你是一个饭店的老板,你的饭店有15名雇员,然而你...
2019-01-30 12:02:00
333
转载 OpenGL Loading
什么是 OpenGL loading?OpenGL是一份API规范,并不是一个库。记住这点非常重要!它意味着每一个API背后的具体实现都依赖于你的GPU硬件、操作系统以及显卡驱动。OpenGL规范定义了很多不同的函数,并且规范会定期进行更新,你的显卡驱动可能不会支持全部的函数。你的显卡和显卡驱动的能力决定了你能使用的API规范的子集。这也是不把所有的OpenGL函数静态定义在一个...
2019-01-24 16:44:00
144
转载 C++ Memory System Part3 : 优化
前面的系列我们讲了自定义new和delete操作,其中针对deleteArray的问题还有需要优化的地方。我们这次就针对POD类型进行一次优化。下面的代码是针对POD类型的模板函数实现,分别为NewArrayPOD和DeleteArrayPOD:template <typename T, class ARENA>T* NewArrayPOD(ARENA&...
2018-12-10 22:09:00
124
转载 C++ Memory System Part2: 自定义new和delete
在第一部分中,我们介绍了new / delete的具体用法和背后的实现细节,这次我们将构建我们自己的小型工具集,可以使用我们自定义的allocator类来创建任意类型的实例(或者实例数组),我们需要做好准备,因为这里面涉及到了函数模板,type-based dispatching,模板黑魔法,以及一些巧妙的宏定义。理想中,我们准备做的自定义内存系统需要创建实例的语法大概像下面这...
2018-12-09 15:56:00
153
转载 C++ Memory System Part1: new和delete
在深入探索自定义内存系统之前,我们需要了解一些基础的背景知识,这些知识点是我们接下来自定义内存系统的基础。所以第一部分,让我们来一起深入了解一下C++的new和delete家族,这其中有很多令人吃惊的巧妙设计,甚至有很多高级工程师都对其细节搞不清楚。new operator and operator new首先我们来看一个使用new的简单语句:T* i = new ...
2018-12-08 11:12:00
113
转载 OpenGL进阶之Instancing
InstancingInstancing绘制我想很多童鞋都不陌生,这个技术主要用来快速渲染大量相同的几何体,可以大大提高绘制效率。每个instance在shader中都有一个独一无二的索引,可以用来访问每个instance对应的渲染参数。使用Instancing技术之所以能够大大提高效率,主要是因为它大大减少了dip(draw indexed primitive)的数量。在实际应...
2018-04-20 16:03:00
312
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人