- 博客(75)
- 收藏
- 关注
原创 【cutlass】cuTe layout操作
cuTe提供了对Layout操作的算法,可以混合执行来构建更复杂的Layout操作,比如在其他layout之间切分和平铺layout上述打印示例中的“for”循环显示了CuTe如何用逻辑2-D坐标的column-major layout识别1-D坐标。从“i=0”到“size(Layout)”(即6)进行迭代,并用单个整数坐标“i”索引到我们的Layout中,以column-major 的方式遍历Layout,即使这是row-major的Layout。
2023-06-17 11:52:58
2017
1
原创 【cutlass】layout
这些可以定义可以在其上定义经典线性代数计算的二维矩阵,或者经常用于构造深度学习应用程序和框架所使用的数据的更高维对象。通过接受单个问题大小组件和每个操作数的“TensorRef”对象,其范围隐含为算子的先决条件,计算可以避免分配过多内存。通过避免扩展区数量的冗余存储,CUTLASS 最大限度地减少了宝贵资源(如常量内存)的容量利用率,这与 BLAS 的规则一致。这使得算法能够实现为通用模板,Tensor中的位置总是在逻辑空间中指定_Layout_objects将其映射到内存中的物理偏移。
2023-05-13 16:06:50
925
原创 【cutlass】cuTe 01 layout
Layout将坐标映射到地址空间,其对阵列单元在内存中如何排布进行抽象,并提供了获取多维阵列的接口。用户可以以正常的方式(不需要做复杂的地址计算)写多维阵列存取代码,对于存取的不同方式可以改变Layout来实现,而不需要改代码。cuTe提供了对Layout的操作算法,这些方式可以组合/拆分以构建更复杂的layout。layout的shape定义了坐标空间每个layout都有一个一维的坐标空间。这个可以用来产生一个“通用colum-major”序列。
2023-05-10 08:41:51
1273
原创 【Cutlass】tile iterator concept
在Cutlass 2.x之前将matix或者tensor切分成固定尺寸的操作都是在tile iterator当中(Cutlass 3.0之后对于matrix和tensor的操作都放到了cute::Tensor里面)。tile_iterator_concept不同于c++20里面的concept,这里不使用concept作为key word,仅仅是对这些类型的需求。tile_iterator内部是几个概念的组合,tile iterator concept几乎涵盖了所有需求。struct定义。
2023-05-04 21:19:54
894
原创 Computer Architectrure: Quantitative Approch 第二章Memory Hierarchy Design第四节
Virtual Memory and Virtual Machines虚拟机被视为真实机器的高效、隔离的副本。 我们通过虚拟机监视器 (VMM) 的概念来解释这些概念……VMM 具有三个基本特征。 首先VMM为程序提供与原始机器基本相同的环境; 其次,在这种环境中运行的程序在最坏的情况下只会表现出轻微的速度下降; 最后,VMM 完全控制系统资源。附录 B 中的 B.4 节描述了虚拟内存中的关键概念。 回想一下,虚拟内存允许将物理内存视为二级存储(可以是磁盘或固态)的缓存。 虚拟内存在内存层次结构的两个级
2021-09-16 17:15:51
132
原创 GPGPU Achitectures阅读笔记2
Chapter 2 Programming Model本章的目标是提供足够的关于如何为非图形计算编程 GPU 的上下文,以便那些之前没有 GPU 经验的人可以遵循后面章节的讨论。 我们在这里关注基本材料,将更深入的报道留给其他参考文献(例如,[Kirk 和 Wen-Mei,2016])。 存在许多可用于架构研究的 GPU 计算基准套件。 了解如何对 GPU 进行编程与对 GPU 计算感兴趣的计算机架构师相关,以便更好地了解硬件/软件接口,但如果您想探索对硬件/软件接口进行更改作为研究的一部分,它就变得必不
2021-09-12 11:07:48
504
1
原创 Computer Architectrure: Quantitative Approch 第二章Memory Hierarchy Design第三节
Ten Advanced Optimizations of Cache Performance前面的平均内存访问时间公式为我们提供了缓存优化的三个指标:命中时间、未命中率和未命中惩罚。 鉴于最近的趋势,我们将缓存带宽和功耗添加到此列表中。 我们可以根据这些指标将我们检查的 10 项高级缓存优化分为五类:减少命中时间——小而简单的一级缓存和路预测。 这两种技术通常还可以降低功耗。增加缓存带宽——流水线缓存、多组缓存和非阻塞缓存。 这些技术对功耗有不同的影响减少未命中惩罚——关键字优先并合并写入缓冲区
2021-09-06 14:47:22
497
原创 GPGPU Achitectures阅读笔记 1
Abstract图形处理器单元 (GPU) 最初是为支持视频游戏而开发的,现在越来越多地用于从机器学习到加密货币挖掘的通用(非图形)应用程序。 与中央处理单元 (CPU) 相比,GPU 可以通过将大部分硬件资源专用于计算来实现更高的性能和效率。 此外,与特定领域的加速器相比,它们的通用可编程性使当代 GPU 对软件开发人员具有吸引力。 本书为那些对研究支持通用计算的 GPU 架构感兴趣的人提供了介绍。 它收集了目前只能在广泛的不同来源中找到的信息。 作者领导了 GPGPU-Sim 模拟器的开发,该模拟器广
2021-09-05 16:34:16
8378
1
原创 Computer Architectrure: Quantitative Approch 第二章Memory Hierarchy Design第二节
Memory Technology and Optimizations使用 SRAM 可以满足最大限度地减少对高速缓存的访问时间的需求。 但是,当发生缓存未命中时,我们需要尽快将数据从主内存中移出,这需要高带宽内存。 这种高内存带宽可以通过将构成主内存的许多 DRAM 芯片组织到多个内存库中并通过使内存总线更宽,或同时进行两者来实现。为了让内存系统跟上现代处理器的带宽需求,内存创新开始发生在 DRAM 芯片内部。 本节介绍内存芯片内部的技术以及那些创新的内部组织。 在描述技术和选项之前,我们需要介绍一些
2021-09-01 14:03:42
254
原创 Appendix B6 Review of Memory Hierarchy
Pitfall Too small an address space在 DEC 和卡内基梅隆大学合作设计新的 PDP-11 计算机系列仅仅五年后,很明显他们的创造有一个致命的缺陷。 IBM 在 PDP-11 之前 6 年宣布的架构仍在蓬勃发展,但在 25 年后进行了微小的修改。 因包含不必要的功能而受到批评的 DEC VAX 在 PDP-11 停产后销售了数百万台。 为什么?相比之下,PDP-11 的致命缺陷是其地址的大小(16 位) IBM 360(24-31 位)和 VAX(32 位)的地址大小。
2021-08-05 08:29:45
95
原创 Appendix B5 Review of Memory Hierarchy
Protection and Examples of Virtual Memory并发运行的多个程序共享一台计算机的多道程序的发明导致了对程序间保护和共享的新需求。 这些需求与当今计算机中的虚拟内存密切相关,因此我们将在此处连同两个虚拟内存示例一起讨论该主题。多道程序设计引出了进程的概念。 比喻地,进程是程序的呼吸空气和生存空间——也就是说,一个正在运行的程序加上继续运行它所需的任何状态。 分时是多道程序设计的一种变体,它与多个交互式用户共享处理器和内存。同时,给人一种所有用户都有自己的电脑的错觉。 因
2021-07-29 08:59:12
99
原创 Appendix B4 Review of Memory Hierarchy
Virtual Memory在任何时候,计算机都在运行多个进程,每个进程都有自己的地址空间。 (进程将在下一节中描述。)为每个进程分配一个完整的内存地址空间会很昂贵,特别是因为许多进程只使用它们地址空间的一小部分。 因此,必须有一种方法可以在许多进程之间共享更少量的物理内存。一种方法是虚拟内存,将物理内存划分为多个块并将它们分配给不同的进程。 这种方法所固有的必须是一种保护方案,将进程限制为仅属于该进程的块。 大多数形式的虚拟内存还减少了启动程序的时间,因为在程序开始之前并非所有代码和数据都需要在
2021-07-19 18:39:32
105
原创 Appendix B3 Review of Memory Hierarchy
Six Basic Cache Optimizations普通内存访问时间公式给了我们一个框架,来提高缓存优化以提高缓存性能,因此,我们将六种缓存优化分为三类:■ 降低未命中率——更大的块大小、更大的缓存大小和更高的关联性■ 减少未命中惩罚——多级缓存并给予读优先于写■ 减少命中缓存的时间——在索引缓存时避免地址转换B-40 页上的图 B.18 总结了这六种技术的实现复杂性和性能优势。改进缓存行为的经典方法是降低未命中率,我们提出了三种技术来做到这一点。 为了更好地了解失误的原因,我们首先从一个
2021-06-30 08:48:59
374
原创 Appendix B2 Review of Memory Hierarchy
Cache Performance由于指令计数与硬件无关,因此很容易使用该数字来评估处理器性能。 这种间接的性能衡量方法让许多计算机设计者望而却步。 评估内存层次结构性能的相应模板是专注于未命中率,因为它也与硬件速度无关。 正如我们将看到的,未命中率可能与指令计数一样具有误导性。 内存层次结构性能的更好衡量标准是平均内存访问时间:其中hit time是在缓存中命中的时间; 我们之前已经看过其他两个术语。 平均访问时间的组成部分可以用绝对时间(例如,命中时 0.25-1.0 ns)或处理器等待内存的时
2021-06-25 08:39:53
78
原创 ECC椭圆加密算法debug日常
在文件列表里需要把.f文件放在.sv前面always@(*) vcs会优化逻辑符号vcs里面的parameter位数要和声明的位数一致当FSM比较大的时候,需要把else里面的参数重新赋值,防止时序问题。
2021-06-18 12:17:08
78
原创 Appendix B Review of Memory Hierarchy
本附录是对内存层次结构的快速复习,包括缓存和虚拟内存、性能方程和简单的优化。 这第一部分回顾了以下 36 个术语:如果此评论进行得太快,您可能需要查看计算机组织和设计中的第 7 章,这是我们为经验较少的读者编写的。缓存是地址离开处理器后所遇到的最高或第一级内存层次结构的名称。 因为局部性原则适用于许多级别,并且利用局部性来提高性能很流行,所以现在只要使用缓冲来重用常见的项目,就会应用术语缓存。 示例包括文件缓存、名称缓存等。当处理器在缓存中找到请求的数据项时,称为缓存命中。 当处理器在缓存中找不到它需
2021-06-14 11:31:30
174
原创 Computer Architectrure: Quantitative Approch 第二章Memory Hierarchy Design第一节
Introduction计算机先驱正确地预测了程序员会想要无限量的快速内存。 满足这种需求的一种经济的解决方案是内存层次结构,它利用了内存技术的局部性和成本-性能之间的权衡。 第一章中介绍的局部性原则说,大多数程序不会统一访问所有代码或数据。 局部性发生在时间(时间局部性)和空间(空间局部性)中。 这一原则加上对于给定的实现技术和功率预算,更小的硬件可以更快地制造的指导原则导致基于不同速度的存储器的层次结构和尺寸。 Figure 2.1 显示了几种不同的多级内存层次结构,包括典型的大小和访问速度。随着闪存
2021-06-04 08:20:01
188
原创 Computer Architectrure: Quantitative Approch 第三章重点总结
第三节gshare预测器竞赛预测器加入全局预测标签预测器加入一个较短的标签进行多级预测第四五六节托马索龙过程—预留站,ROB第七节VLIW打包指令的运行方式(x86体系和Intel在使用)静态和动态的超标量区别在于一个是顺序执行一个是乱序执行**第八节 **一次多个issue的问题是如何消除指令依赖关系,需要多个预留站、相应的重排序缓冲区、在发射时已经检查好指令的依赖性第九节跳转标签预测值预测推测与托马索龙相结合第十二节Intel Core i7 670
2021-05-31 09:03:10
140
原创 Computer Architectrure: Quantitative Approch 第三章第十四节
Concluding Remarks: What’s Ahead?随着2000年开始,对利用指令级并行性的关注已达到顶峰。 在新世纪的前五年,很明显 ILP 方法可能已经达到顶峰,需要新的方法。 到2005年,英特尔和所有其他主要处理器制造商都对他们的方法进行了改进,以专注于多核。 更高的性能将通过线程级并行而不是指令级并行实现,高效使用处理器的责任将在很大程度上从硬件转移到软件和程序员。 这是自25年前流水线化和指令级并行性问世以来最重大的处理器体系结构变化。在同一时期,设计人员开始探索使用更多数据级
2021-05-30 10:23:24
96
原创 Computer Architectrure: Quantitative Approch 第三章第十三节
Fallacies and Pitfalls我们的少数谬误集中在预测性能和能源效率以及从时钟频率或 CPI 等单一指标进行推断的难度上。 我们还表明,对于不同的基准测试,不同的架构方法可能具有完全不同的行为。Fallacy——It is easy to predict the performance and energy efficiency of two different versions of the same instruction set architecture, if we hold th
2021-05-30 10:03:07
137
原创 Computer Architectrure: Quantitative Approch 第三章第十二节
Putting It All Together: The Intel Core i7 6700and ARM Cortex-A53
2021-05-30 09:19:42
310
原创 Computer Architectrure: Quantitative Approch 第三章第十一节
Multithreading: Exploiting Thread-Level Parallelism to Improve Uniprocessor Throughput
2021-05-21 08:35:44
170
原创 Computer Architectrure: Quantitative Approch 第三章第十节
Hardware Versus Software Speculation本章中的硬件密集型猜测和附录H的软件方法提供了利用ILP的替代方法。一些权衡和限制在此处列出:要进行广泛的推测,我们必须能够消除内存引用的歧义。对于包含指针的整数程序,在编译时很难实现此功能。 在基于硬件的方案中,使用我们之前在Tomasulo算法中看到的技术来完成内存地址的动态运行时消歧。 这种歧义消除使我们可以在运行时将ld移至存储区之外。对推测性内存引用的支持可以帮助克服编译器的保守性,但是除非仔细使用此类方法,否则恢复机
2021-05-21 08:33:06
116
原创 Computer Architectrure: Quantitative Approch 第三章第八节
Exploiting ILP Using Dynamic Scheduling, Multiple Issue, and Speculation
2021-05-16 20:07:29
211
1
原创 用python编写脚本时的常用函数(持续更新)
os操作(对文档进行操作)os.getcwd:获取当前文件路径os.path.join:对路径进行拼接os.listdir:获取当前路径下的文件名os.chdir:改变文件名os.system:在terminal下直接输出
2021-05-13 12:33:40
153
原创 Computer Architectrure: Quantitative Approch 第三章第七节
Exploiting ILP Using Multiple Issue and Static Scheduling
2021-05-13 08:58:47
183
原创 Computer Architectrure: Quantitative Approch 第三章第五、六节
Dynamic Scheduling: Examples and the Algorithm
2021-05-04 20:31:02
497
原创 Computer Architectrure: Quantitative Approch 第三章第四节
Overcoming Data Hazards With Dynamic Scheduling
2021-05-01 07:45:37
356
1
原创 Computer Architectrure: Quantitative Approch 第三章第三节
Reducing Branch Costs With Advanced Branch Prediction因为分支的延迟会增加控制依赖性,所以分支会降低流水线的性能。解循环是一个减少分支延迟的方法;除此外我们还可以通过预测跳转的操作来减少跳转带来的性能损失。我们测量了依赖于编译时间信息或者依赖于可观测的单个孤立分支动态行为的简单分支预测变量。随着需要处理指令数和每个时钟的issue指令数量随流水线深度增加而增加,精确预测跳转越来越重要。在本节我们测试了用来促进流水线预测精度的技术。本届对Appendix
2021-04-21 15:18:37
270
原创 Computer Architectrure: Quantitative Approch 第三章第一、二节
Instruction-Level Parallelsim: Concepts and Challenge本章主要介绍一些概念:数据依赖性1. 指令i的结果用在了指令j的计算里2. 指令j依赖于指令i的结果,指令j依赖于指令k的结果(传递性)命名依赖性1. j在i后执行,j会对i中使用的寄存器进行改写2.j和i顺次执行会写入相同的地址数据冒险:囊括了数据依赖性和命名依赖性两种情况,主要有WAW WAR RAW控制依赖性:执行的结果依赖于跳转指令,因此需要将跳转指令做完才能知道正确结果。B
2021-04-13 08:35:22
481
原创 Computer Architectrure: Quantitative Approch 第三章第九节
Reture Address Predictors 因为大多数非直接跳转来自于对return语句的访问,所以本段主要讨论如何解决这个问题。如果从多个点调用没有及时汇聚到一个点,会降低预测的精度。(e.g.在多线程处理中,不同线程跳转到不同的位置,这会使预测产生错误。)一种解决方案是设置一个堆栈,在跳转时将返回的PC放入栈中,然后return时返回到这个PC处。(这是一个标准的解决方案)应用:SPEC CPU95, Intel Core, AMD Phenom....
2021-04-08 13:36:08
380
4
原创 异步FIFO debug日常
2020.12.19不能利用寄存器直接进行数据位置选取Wrong: FIFO_data[FIFO_d:0];//Wrong: input [7:0] w_data; reg [255:0][7:0] FIFO_data; reg [3:0] FIFO_d; reg [16:0] w_point; always @(posedge clk) begin FIFO_data[FIFO_d:0] <= w_data; end//Right input [
2020-12-19 15:54:31
129
3
原创 Leetcode 剑指 Offer 34 二叉树中和为某一值的路径
这道题主要考察对二叉树指针的理解。具体分析参考剑指offer34.时间和内存消耗以及源代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; *//** * Return an array of arrays of size *returnSize
2020-08-11 10:51:50
119
原创 Leetcode 剑指 Offer 33 二叉搜索树的后序遍历序列
这道题主要考察对后顺遍历的理解。具体分析参考剑指offer33.时间和内存消耗以及源代码如下:bool verifyPostorder(int* postorder, int postorderSize){ if (postorder == NULL || postorderSize == 0) { return true; } if (postorderSize == 1) { return true; }
2020-08-06 08:38:35
119
原创 Leetcode 剑指 Offer 32 - III 从上到下打印二叉树
这道题和上道题是一样的,不同在于赋值需要一个行数奇偶判断部分。具体分析参考剑指offer32.时间和内存消耗以及源代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; *//** * Return an array of arrays of si
2020-08-05 10:18:08
162
原创 Leetcode 剑指 Offer 32 - II 从上到下打印二叉树
这道题主要考察对各种数据结构间的相互切换和双指针的用法。具体分析参考剑指offer32.时间和内存消耗以及源代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; *//** * Return an array of arrays of size *
2020-08-05 09:51:41
462
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人