
并行计算
文章平均质量分 90
GamebabyRockSun_QQ
曾经拥有的,不要忘记,
已经得到的,更要珍惜,
属于自己的,不要放弃,
已经失去的,留着回忆,
想要得到的,必须努力,
但最重要的,是好好爱惜自己!
展开
-
循环体并行优化(二)——多维循环迭代空间的仿射变换及循环上下界不等式的矩阵表示法
(重新整理于2020年冬。) 上回书说到(忘了我不是说书的了,习惯性口语,见谅!),我们可以通过一个简单的仿射变换将一维的“不连续”循环下标空间变换到一个“连续”的下标空间中。这次,我们则继续来看看如何将一个高维的“不连续”循环下标变换到“连续”的循环下标空间中。如果非要为这种变换加上一个理由的话,我认为那就是不要在我们的整数向量空间中留下太多的“洞”或者“空泡”。因为对于一个增量不为1的循环变量来说(包括绝对值大于1的负增量也就是递减量),跳过的坐标值形成的那些点就不能在这个迭代空间中,因而形成了这个原创 2020-12-04 09:37:36 · 1033 阅读 · 7 评论 -
循环体并行优化(一)——循环迭代空间的仿射变换
循环体并行优化(一)——循环迭代空间的仿射变换(重新整理于2020年冬。) 最近痴迷于编译原理而不能自拔,这么多年来一直是会在某一段时间痴迷于一件事物,性格使然,无法自控。随着钻研深入,多年前的一个模糊的想法——搞一个自带针对多处理器系统并行优化的编译器,慢慢的发现这个想法并不是遥不可及了。在看了编译原理第二版的并行性和局部性优化章节的内容后,眼前突然豁然开朗。 在多核处理器横行的今天,我的手机上都有八个可以同时执行任务的处理器的年代,很难想象不用并行计算,要如何去榨取这些硬件的“剩余价值”。甚至原创 2020-12-04 09:07:47 · 1713 阅读 · 1 评论 -
DirectX12(D3D12)基础教程(十四)——使用WIC、Computer Shader显示GIF动画纹理(下)
文章目录5、用DirectComputer完成GIF帧预处理5.1、Computer Shader中以数组方式访问纹理完成帧预处理5.2、Dispatch启动GIF帧绘制5、用DirectComputer完成GIF帧预处理 当看到这一小节的标题时,可能会有点蒙,为什么不把解析出来的帧直接当成纹理用?还需要“处理”什么?其实仔细想想这不是那么简单的。前面已经啰嗦了很多关于GIF以及帧的属性读取...原创 2020-03-23 00:04:56 · 1898 阅读 · 16 评论 -
DirectX12(D3D12)基础教程(十四)——使用WIC、Computer Shader显示GIF动画纹理(中)
文章目录4、Direct Computer基础知识4.1、Direct Computer简介4.2、Direct Computer编程基本框架4.3、Computer Shader简介4.4、Computer Shader示例4.5、[numthreads(x, y, z)]语义文法详解4.6、通过Dispatch来批量发起GPU线程盒4.7、SV_GroupID、SV_DispatchThrea...原创 2020-03-23 00:00:14 · 1640 阅读 · 0 评论 -
DirectX12(D3D12)基础教程(十四)——使用WIC、Computer Shader显示GIF动画纹理(上)
文章目录1、前言2、GIF文件简介3、使用WIC加载并解析GIF文件3.1、解析GIF全局背景色3.2、获取GIF的像素尺寸3.3、获取像素纵横比修正图片像素尺寸3.4、读取GIF帧和属性3.5、创建GIF纹理(画板)和帧纹理1、前言 在本系列教程开头的几章中,开初使用的纹理加载组件是WIC。后来在不断的编码过程中,通过慢慢的摸索学习我才发现之前可能一直有点误解WIC这个组件了。其实这个组件...原创 2020-03-22 23:02:25 · 2886 阅读 · 10 评论 -
DirectX12(D3D12)基础教程(六)——多线程渲染
目录 1、前言2、为什么要多线程渲染3、多线程3.1、什么是线程3.2、进程的主线程3.3、线程的入口函数3.4、创建线程3.5、CreateThread示例3.6、C/C++创建线程函数(VC版)3.7、_beginthreadex示例3.8、线程退出3.9、线程的暂停(挂起)和恢复3.10、线程的暂停式创建3.11、线程栈3...原创 2019-01-14 21:39:37 · 14516 阅读 · 31 评论 -
DirectX12(D3D12)基础教程(三)——使用独立堆以“定位方式”创建资源、创建动态采样器、初步理解采取器类型
目录 1、前言2、显卡架构和存储管理3、创建默认堆并在其上以“定位方式”创建2D纹理4、动态采样器5、完整代码1、前言经过了第二部分教程的“折腾”之后,后面的教程我觉得应该顺畅多了。至少我现在可以一天时间就把教程示例代码调通,并且可以按照自己的想法自由的去发挥了。我很喜欢这种感觉,就像在打游戏中虐那些无脑的机器AI角色一样。经过前面两章的学习,我相信大家对D3D...原创 2018-10-27 17:21:15 · 9314 阅读 · 23 评论 -
DirectX12(D3D12)基础教程(二)——理解根签名、初识显存管理和加载纹理、理解资源屏障
目录 1、前言及本章内容提要2、初步理解和使用根签名3、使用WIC库加载图片4、D3D12内存管理导论——上传堆和默认堆4.1、D3D12中创建资源的三种方式4.1.1、提交方式(CreateCommittedResource)4.1.2、定位方式(CreatePlacedResource)4.1.3、保留方式(CreateReservedResource)...原创 2018-10-16 01:10:25 · 24451 阅读 · 66 评论 -
D3D11和D3D12多线程渲染框架的比较(五)
1. 多趟渲染与多线程渲染接下来让我们更进一步,再来设想一个更复杂的场景,还是之前那个一个线程(CPU线程)+命令列表(GPU线程)渲染一个正方体,另一个线程+命令列表渲染一个球体的例子,当然我们还要加入一个线程+命令队列渲染一个平面,而球体和正方体都放在这个平面上(看起来有点像素描,原谅我很懒没有配任何图像),只不过在这里我们加入了阴影效果(求此时你看懂这个问题时的原创 2017-12-17 21:51:23 · 3100 阅读 · 8 评论 -
D3D11和D3D12多线程渲染框架的比较(四)
1. 命令列表及命令的原生并行性至此如果你还没有看晕的话,或者说你已经明白了前面的这些概念铺垫之后,或许心中还有一个疑问就是为什么说可以用多个命令列表来记录可能不同的命令,最后再来执行,这样不同的命令队列之间会不会冲突呢(更直白的说不通的命令列表直接会不会有什么先后关系的约束从而使得异步执行这种方式失去了意义)?举例来形象的说明,比如我们用一个CPU线程+一个命令队列原创 2017-12-16 12:24:43 · 3292 阅读 · 16 评论 -
D3D11和D3D12多线程渲染框架的比较(三)
1. CPU线程和GPU线程的区别另外我们还需要深刻的理解的一个概念就是CPU线程和GPU线程的区别。1.1. CPU线程CPU线程在Windows操作系统中更多的是指一个存储了几乎所有CPU寄存器状态以及堆栈等资源信息的内核对象(可能还有内核安全信息等),是一个复杂的重量级的对象,并且在Windows中线程是最小的执行单元。同时得益于CPU单核原创 2017-12-15 08:47:46 · 5390 阅读 · 4 评论 -
D3D11和D3D12多线程渲染框架的比较(二)
1. 多线程的一些基础知识和问题1.1. 并发和并行如果你对多线程编程理解比较深刻的话,那么首先第一个要搞明白的概念就是“并发”和“并行”的区别,并发很多时候指的是在一个时间段内,共同执行的任务数。比如1秒钟之内轮流执行了50个左右的线程;再比如说一个网站的并发访问峰值是1秒钟10000次,这些任务中的某几个可能在某一时刻内是同时执行的也可能是在某个时间段内是先后执行的,但总原创 2017-12-13 21:56:13 · 4189 阅读 · 0 评论 -
【原创】循环体并行优化(二) ——多维循环迭代空间的仿射变换及循环上下界不等式的矩阵表示法
上回书说到(忘了我不是说书的了,习惯性口语,见谅!),我们可以通过一个简单的仿射变换将一维的“不连续”循环下标空间变换到一个“连续”的下标空间中。这次,我们则继续来看看如何将一个高维的“不连续”循环下标变换到“连续”的循环下标空间中。如果非要为这种变换加上一个理由的话,我认为那就是不要在我们的整数向量空间中留下太多的“洞”。因为对于一个增量不为1的循环变量来说(包括绝对值大于1的负增量也就是递减量原创 2017-10-10 14:23:17 · 1040 阅读 · 2 评论 -
【原创】循环体并行优化(一)——循环迭代空间的仿射变换
最近痴迷于编译原理而不能自拔,这么多年来一直是会在某一段时间痴迷于一件事物,性格使然,无法自控。随着钻研深入,多年前的一个模糊的想法——搞一个自带针对多处理器系统并行优化的编译器,慢慢的发现这个想法并不是遥不可及了。在看了编译原理第二版的并行性和局部性优化章节的内容后,眼前突然豁然开朗。 在多核处理器横行的今天,我的手机上都有八个可以同时执行任务的处理器的年代,很难想象不用并行处理如何去榨取这原创 2017-10-10 14:23:14 · 1465 阅读 · 0 评论