自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (3)
  • 收藏
  • 关注

转载 CUDA 编程入门(2):CUDA 调度模型

Block 对应的物理硬件概念是 SM,也就是说 SM 负责 block 中线程的执行,SM 会为每个 block 分配需求的资源,比如寄存器,共享内存等,由于 SM 自身资源有限,因此它被分配到的 block 数量也是有限的,这取决于 block 中线程的资源需求。每个 SM 中有 4 个处理块,每个处理块都有一个独立的 Warp Scheduler,Warp Scheduler 负责调度分配到当前处理块上的 warp,所有这些 warp 构成一个叫做 Active Warps 的集合,调度器在每个。

2024-09-09 16:47:31 42

原创 理一理Latency、Bandwidth、Throughput、Response Time概念的区别

在性能测试术语中,“在给定的时间段内从一个位置成功移动到另一个位置的数据量,通常以每秒比特数(bps)来度量,或每秒兆比特数(Mbps)、每秒千比特数(Gbps)”。带宽(Bandwidth):它显示了管道(通信通道)的容量。假设ISDN的带宽是64K,则我们可以增加一个64K的通道,所以总带宽是128K。经常,一些性能测试人员对延时(Latency)、吞吐(Throughput)、带宽(Bandwidth)和响应时间(Response Time)感到迷惑,今天,就用一些简单的例子来说明它们之间的区别。

2024-09-09 16:45:42 822

转载 GPU 峰值算力及性能优化参考资料汇总

另外,这里用的是F32浮点峰值做例子,如果你的任务不需要浮点运算或是精度不是F32,这个值就意义不大,需要转换成你需要的那个操作。其实不看Tensor core的话,满血版一般有:F64:F32:F16=1:2:4,正好与占用的GPR成反比,这个其实是与GPR的带宽有很大的关联的,一般满血版的卡的功能单元配比就会尽量按极限的GPR带宽来设计。一般说来,实际应用中,较大尺寸的矩阵乘法(GEMM)是难得的能接近峰值性能的程序,有些实现能到98%峰值的效率。指令,这是很苛刻的条件。都是一个指令一个flop,

2024-09-09 13:44:12 87

原创 simd vs simt

SIMD 架构是指在同一时间内对多个数据执行相同的操作,适用于向量化运算。例如,对于一个包含多个元素的数组,SIMD 架构可以同时对所有元素执行相同的操作,从而提高计算效率。在实际应用中,根据具体的计算需求和硬件环境选择合适的架构可以提高计算性能。SIMT 架构是指在同一时间内执行多个线程,每个线程可以执行不同的指令,但是这些线程通常会执行相同的程序。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。常见的 SIMD 架构包括。

2024-09-09 13:42:02 409

转载 CUDA编程:warp

因为一个warp中的线程必须执行相同的指令,不能一部分执行if中的指令,一部分执行else中的。由两个线程块组成的线程结构。,这些资源都被thread瓜分了,由于资源是有限的,所以,如果thread数量比较多,那么每个thread占用资源就比较少,反之如果thread数量较少,每个thread占用资源就较多,这需要根据自己的需求作出一个平衡。SM中的warp调度器会选择warp执行,被选中的成为selected,没选中但已经具备执行条件的成为eligible,没准备好的成为stalled。

2024-09-09 11:38:59 83

转载 CUDA编程方法论

GPGPU中一些问题的理解与思考(3)- 指令执行吞吐与指令集设计 gpu中的warp的divergence问题? 写CUDA到底难在哪? GPGPU中一些问题的理解与思考(2)- 各级存储的吞吐问题 NV GPU(SM50)的Register Bank Conflict和Reuse Cache的一些测试 GPGPU中一些问题的理解与思考(1)-上层架构 发布一个CUDA SASS

2024-09-09 11:24:51 55

转载 谈谈 cuda 线程束与内存模型

参考:1、2、Cuda thread 组成 block,block 组成 grid,形成嵌套网格状结构,目的是为了矩阵并行计算时,能对应矩阵位置。

2024-09-09 11:13:05 234

原创 Thread如何划分为Warp?

Thread Index和Thread ID之间有什么关系呢?(线程架构参考这里:CUDA C++ Programming Guide (nvidia.com)open in new window)1维的Thread Index,其Thread ID就是Thread Index2维的Thread Index,其Thread ID为3维的Thread Index,其Thread ID为由此再回到本文的问题:Thread如何划分为Warp?线程的组织形式对程序的性能影响是至关重要的,本篇博文主要以下面一种情况来

2024-09-08 23:21:18 993

转载 CUDA编程4-执行模型

执行模型会提供一个操作视图,说明如何在特定的计算架构上执行指令。CUDA执行模型解释了GPU并行架构的抽象视图,有助于编写指令吞吐量和内存访问高效的代码。GPU架构围绕一个流式多处理器(SM)的可扩展阵列搭建,通过复制这种架构的构件来实现硬件并行。每个GPU通常有多个SM,每个SM都能支持数百个线程并发执行。当启动一个内核网格时,它的线程被分布在可用的SM上执行。线程块一旦被调度到一个SM上,其中的线程只会在那个指定的SM上并发执行;多个线程块可能被分配到同一个SM上,且根据SM资源的可用性进行调度;

2024-09-08 18:11:25 306

转载 GPU软件抽象:Grid,Block,Thread,Warp定义说明与硬件的映射执行细节 学生教室楼层的例子

一个Warp中的线程必然在同一个block中,如果block所含线程数目不是Warp大小的整数倍,那么多出的那些thread所在的Warp中,会剩余一些inactive的thread,也就是说,即使凑不够Warp整数倍的thread,硬件也会为Warp凑足,只不过那些thread是inactive状态,需要注意的是,即使这部分thread是inactive的,也会消耗SM资源。在执行功能上是没有问题的,那些不应该被执行分支的线程会被禁用,因此始终获得正确的结果,但是如果双方都很长,那么性能损失就很重要。

2024-09-08 18:07:44 182

转载 NVIDIA GPU以SIMT

NVIDIA GPU以SIMT(Single Instruction, Multiple Thread)的方式执行称为warp。许多 CUDA 程序通过利用 warp 执行来获得高性能。在这个博客中,我们将展示如何使用 CUDA 中引入的原语,使您的 warp 级编程安全有效。Warp-level 原语NVIDIA GPUs 和 CUDA 编程模型采用一种称为 SIMT(Single Instruction, Multiple Thread)的执行模型。SIMT 扩展了计算机体系结构的弗林分类学。

2024-09-08 15:36:40 129

转载 CUDA02 - 访存优化和Unified Memory

CUDA02 - 访存优化和Unified Memory - 猫猫子 - 博客园 (cnblogs.com)CUDA02 - 的内存调度与优化前面一篇(传送门)简单介绍了CUDA的底层架构和一些线程调度方面的问题,但这只是整个CUDA的第一步,下一个问题在于数据的访存:包括数据以何种形式在CPU/GPU之间进行通信、迁移,以及在GPU内部进行存储、访问。1 global 、shared 、constant、local通常来讲,待计算的数据都存放在内存或者硬盘(外部存储设备)中,由CPU

2024-09-07 23:13:25 206

转载 CUDA01 - 硬件架构、warp调度、指令流水线和cuda并发流

超级棒这一部分打算从头记录一下CUDA的编程方法和一些物理架构上的特点;从硬件入手,写一下包括线程束的划分、流水线的调度等等微结构的问题,以及这些物理设备是如何与软件对应的。下一部分会写一下cuda中的几种内存划分,进行数据同步,以及优化cuda运行效率的几种方法。

2024-09-07 23:01:46 164

转载 Warp Scheduler,合理块和线程的数量对GPU利用率非常重要

​GPU算子GPU利用率的因素包括,算子线程数量设置合不合理、访存模式合不合理、数据传输次数是否过多、硬件特性是否被充分利用​

2024-09-07 17:24:19 78

转载 英伟达GPU的硬件架构——显存带宽和算力

CUDA 是建立在英伟达GPU硬件架构之上的平台和编程模型。因此,就像要写好高性能的 CPU 程序,必须对 CPU 的硬件架构有一定的理解一样,我们写 CUDA 程序也必须对 GPU 有最基本的了解。

2024-09-07 16:02:24 240

转载 ​CUDA 调度模型​

Block 对应的物理硬件概念是 SM,也就是说 SM 负责 block 中线程的执行,SM 会为每个 block 分配需求的资源,比如寄存器,共享内存等,由于 SM 自身资源有限,因此它被分配到的 block 数量也是有限的,这取决于 block 中线程的资源需求。每个 SM 中有 4 个处理块,每个处理块都有一个独立的 Warp Scheduler,Warp Scheduler 负责调度分配到当前处理块上的 warp,所有这些 warp 构成一个叫做 Active Warps 的集合,调度器在每个。

2024-09-06 20:12:14 69

转载 CUDA 编程入门_CUDA 编程模型

1CUDA 的全称是 Compute Unified Device Architecture,它是建立在硬件架构之上的并行计算平台和编程模型。

2024-09-06 12:10:22 102

转载 40岁职场选择

同时,40岁的职场人因为长期的职场打磨,对于工作方式、行为习惯有了长期一致稳定的SOP,放大看着就叫企业文化,是一种行为方式的偏好,十几二十年下来形成的习惯,很难改变,这个时候再跳槽企业也还会认为你不是白纸甚至是写满了各种各样内容不一的大杂烩,要进入新企业融入新的文化,很难,基于这一点,在雇佣40岁的职场人时,是有减分的。其他还包括,本身职场打磨长时间后,自身在生活成本、原薪资水平、职场观念上的影响,40多岁的职场人要价是不低的,同比与年轻人要高不少。

2024-08-26 19:00:04 17

转载 单元流水线的延迟与吞吐量

当指令指针距离你还有 4KB 远的时候(这大约是 1500 条指令),你被 CPU 从内存取到指令缓存中。虽然从内存加载进入指令缓存需要一段时间,但是现在距离你被执行的时刻还很远,你有足够的时间。这个预取的过程属于流水线的第一级。你进入后发现你刚好站在你前面进来指令的后面,即使执行中的顺序可能已经不同,但你们退出的顺序继续保持一致。黑盒子会处理指令指针指向的指令,当处理完之后,会在内存里找到处理的结果。当指令指针离你越来越近,距离你还有 24 条指令的时候,你和你旁边的 5 个指令会被放到指令队列里面。

2024-08-25 23:47:40 29

转载 DNN库中matmul分析和设计

matmul函数是深度学习中最基本的函数,表示两个张量矩阵相乘,底层主要是通过GEMM和GEMV实现,GEMM即为矩阵乘矩阵,GEMV为矩阵乘向量。GEMM在深度学习中是十分重要的,全连接层以及卷积层基本上都是通过GEMM来实现的,而网络中大约90%的运算都是在这两层中。而一个良好的GEMM的实现可以充分利用系统的多级存储结构和程序执行的局部性来充分加速运算。参数说明order存储方式:CblasColMajor或者CblasRowMajortransA矩阵A是否转置transB。

2024-08-23 16:07:23 40

转载 性能峰值那点事--CPUFP分析

工欲善其事,必先利其器,在DNN库算子设计之前,首先要了解CPU的理论硬件性能。cpufp就是一款可以测出实际理论性能的工具。。

2024-08-23 16:00:14 23

转载 浮点峰值那些事儿_知乎高洋

新的架构很有意思,高端版本支持一个周期发射两条AVX512版本的乘加指令,其中一条来自port0和port1的256位FMA的端口融合,另外一条来自port5。除了用到不同的指令以外,与SNB还有如下一些区别:fma指令的某个参数寄存器,既做输入也做输出,这样前后两个相邻循环间的同一条fma,就形成了RAW型寄存器依赖。浮点峰值的计算,一般是计算单位时间内,乘法和加法的最大总吞吐量,单位是GFLOPS或者TFLOPS,表示每秒钟计算乘法和加法的总次数。通过测试结果与理论上限的差距,评估算法的可能优化空间。

2024-08-23 11:36:26 30

转载 {AI}System

本开源项目主要是跟大家一起探讨和学习人工智能、深度学习的系统设计,而整个系统是围绕着在 NVIDIA、ASCEND 等芯片厂商构建算力层面,所用到的、积累、梳理得到 AI 系统全栈的内容。希望跟所有关注 AI 开源项目的好朋友一起探讨研究,共同促进学习讨论。正在上传…重新上传取消。

2024-08-19 22:21:21 15

转载 C++ STL 容器、迭代器、适配器(深入了解,一文学会)

原文链接:https://blog.csdn.net/qq_37529913/article/details/120052137。C++ STL 容器、迭代器、适配器(深入了解,一文学会)目录。6.1、reverse_iterator反向迭代器适配器。6.2、insert_iterator插入迭代器适配器。6.3、stream_iterator流迭代器。4.1、unordered_map容器。4.2、unordered_set容器。5.2、queue容器适配器详解。5.1、stack容器适配器。

2024-08-19 21:59:54 23

转载 AI编译器TVM与MLIR框架分析

图5 常见ai compiler设计架构

2024-08-15 10:19:49 70

转载 CUDA生态和ROCm生态对比分析

2024-08-15 10:11:51 53

原创 GPU并行计算-参考资料收集list

1、2、3、4、

2024-08-14 11:27:33 229

原创 先进编译实验室

循环优化(三):循环分布 循环优化(四):循环交换循环优化(六):循环分段循环优化(七):循环分块循环优化(八):循环分裂循环优化(九):循环倾斜

2024-08-01 17:10:25 230

转载 C/C++ 性能优化背后的方法论:TMAM

开发过程中我们多少都会关注服务的性能,然而性能优化是相对比较困难,往往需要多轮优化、测试,属于费时费力,有时候还未必有好的效果。但是如果有较好的性能优化方法指导、工具辅助分析可以帮助我们快速发现性能瓶颈所在,针对性地进行优化,可以事半功倍。性能优化的难点在于找出关键的性能瓶颈点,如果不借助一些工具辅助定位这些瓶颈是非常困难的,例如:c++程序通常大家可能都会借助perf /bcc这些工具来寻找存在性能瓶颈的地方。性能出现瓶颈的原因很多比如 CPU、内存、磁盘、架构等。

2024-07-29 18:04:30 33

转载 利用英特尔® VTune™ Profiler 分析、调整和提升应用性能的 8 种方法

8 Ways to Maximize Application Performance With VTune™ Profiler (intel.com)A present-day developer has a wide range of hardware and software tools options available when building and maintaining an application. At the software level, they can choose progra

2024-07-25 23:35:45 81

转载 【无标题】vtune TMA中四个指标的画图解释

tuningguide-intelxeonprocessor-scalablefamily-2ndgen-181827.pdf

2024-07-25 23:32:24 24

原创 Top-down Microarchitecture Analysis Method

1、英文链接:1. https://www.intel.com/content/www/us/en/docs/vtune-profiler/cookbook/2023-0/top-down-microarchitecture-analysis-method.html2. http://portal.nacad.ufrj.br/online/intel/vtune2017/help/GUID-02271361-CCD4-410C-8338-4B8158157EB6.htmlVTune Profiler aut

2024-07-25 23:01:20 726

转载 Analyzing Open vSwitch* with DPDK Bottlenecks Using Intel® VTune™ Amplifier

【代码】Analyzing Open vSwitch* with DPDK Bottlenecks Using Intel® VTune™ Amplifier。

2024-07-25 22:35:44 22

原创 让CPU黑盒不再黑——【TMA_自顶向下的CPU架构性能瓶颈分析方法】(一)What & Why

Intel有一位工程师就找到了这么一种分析方法,称为。

2024-07-25 14:50:11 147

转载 42 Years of Microprocessor Trend Data

过去42年计算机处理器计算部件、访存部件,晶体管数量增长趋势

2024-07-19 21:12:19 29

原创 perf工具学习材料

perf 相关学习工具

2024-07-18 22:42:08 413

原创 CPU cache

cpu cache 相关介绍和学习

2024-07-05 10:49:07 168 1

原创 双精度复数矩阵转置实现

【代码】双精度复数矩阵转置实现。

2024-06-24 09:25:29 248

转载 理解服务器 CPU 的型号、代际与架构

当前 CPU 能支持什么样规格的内存,以及能支持多大的内存,都是由 CPU 中的内存控制器来决定的。制程工艺的进步带来的好处主要是能效比的提升,单位面积上晶体管的数量增加了,但是需要的能耗却变低了。这里面包含的含义就是,这是一个Intel 的酷睿子品牌的 CPU,i7代表着中高端,代际编号是7,这个代际的处理器架构是 2016 年发布的采用的 Kaby Lake 架构生产的。不同的微架构对核的设计是不同的,比如 TLB、L1、L2 等各种缓存,再比如 CPU 核内部的运算单元都会有所不同。

2024-05-24 16:43:27 491

转载 如何优化CPU GEMM

截止到目前为止,已经具有和两份实现,虽然在性能上有一定的优化,但距离真正的高性能计算库的要求还相差甚远。即使抛开性能问题不谈,目前 optimize_row_major_sgemm 也很难视为一个合格的库函数,因为该函数在接口定义上太过随意,别人很难直接复用。众所周知,矩阵乘优化已经是非常成熟的课题了,其中自然衍生了许多标准,以方便不同开发者或者研究人员之间工作的交流和复用,其中最基础的便是 BLAS接口规范。是一系列基本线性代数运算函数1的接口(interface)标准。

2024-05-24 14:44:22 179

计算机网络习题与解答鲁士文

这个是翻译英文写的、发行量超过300万册的书

2011-01-23

2008中科院高性能计算中心培训课程

系统的介绍了高性能计算中MPI,openMP,分布式并行计算的相关知识。

2009-06-25

计算机操作系统教程.pdf

详细的介绍了操作系统各个方面的内容,条理清晰,深奥但易懂。

2009-02-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除