- 博客(353)
- 收藏
- 关注
原创 vscode离线状态ssh连接不断输入密码登不上:配置commit_id
如题,vscode在一个离线服务器上,通过remote-ssh登录远程服务器,不断弹出密码框,总是进不去,后来了解到主要是不同vscode版本需要下载对应抑制commit-id的vscode-server-linux-x64.tar.gz包。如果你已经通过vscode连过了,这个commit_id的文件夹估计就已经存在了,不用再次创建,直接敲解压命令。2) 在一个可联网的服务器,输入如下命令下载这个vscode-server-linux-x64.tar.gz包。3)离线服务器 解压包。
2024-10-21 23:56:25
476
2
原创 彻底理解芯片带宽评估(时钟频率、周期、秒的关系)
简单理解芯片性能评估时的计时单位:时钟频率和周期的关系。频率是测量信号振荡次数的单位,通常以赫兹(Hz)表示。周期是信号完成一个完整振荡所需的时间,通常以秒(s)或其分单位(如毫秒、微秒、纳秒)表示。频率和周期之间的关系是互为倒数。例如,一个处理器的时钟频率为 1.2 GHz,则每秒有 1200 000 000个周期。每个周期的时长是 1 /1200 000 000 s ≈ 0.83 ns。
2024-10-21 23:37:36
2678
原创 AI技术好书推荐:《AI系统-原理与架构》
后来这一系列的课程内容博主有了出书的计划,机缘巧合有幸参与部分章节的撰写,第一次参与成为一名开源项目贡献者,期间多次就相关负责内容和ZOMI交流,深切感受到ZOMI君的严谨,务实,谦卑的处事风格,常常感叹其自律,永不停息的拼搏精神,是我们身边的精神领袖。,发布的一系列AI技术类科普视频内容很干,逻辑清晰,很多知识点讲的深入浅出,非常有用,被直接种粉。9月21日该书在京东首次发售了,内容全面,知识系统,技术点有深度,书本有厚度。推荐给有需要的朋友!今年1月份在B站发现了一个。
2024-09-19 22:23:31
1532
2
原创 简单理解数字电路的时序图:写优先模式
背景:没有数字电路专业背景的人,从0到1简单看懂时序图。时序图由方波组成,如下图,向上凸起的表示高电平,下凸起的部分表示低电平。两者状态之间通过斜线控制,表示在状态切换。当全局使能信号ENA =0 (即DISABLED)时候,数据写出总线没有操作。图中虚线位置表示在全局开关使能条件下,一个时钟沿上升时候的系统状态。
2024-07-21 11:56:09
881
原创 大模型基架:Transformer如何做优化?
大模型的基础模式是transformer,所以很多芯片都实现先专门的transformer引擎来加速模型训练或者推理。本文将拆解Transformer的算子组成,展开具体的数据流分析,结合不同的芯片架构实现,分析如何做性能优化。
2024-06-06 07:30:00
1319
原创 图解大模型分布式并行各种通信原语
本文将通过图解的方式,帮助快速区分并理解不同的通信原语所代表的含义。包括:broadcast, scatter, gather, all-gather, reduce, all-reduce, reduce-scatter, all-all
2024-06-02 22:12:42
1047
原创 从浮点数定义到FP8: AI模型中不同的数据类型
AI模型中不同的数据类型对硬件算力和内存的需求是不同的,为了提高模型在硬件平台的吞吐量,减少数据通信带宽需求,往往倾向于将高位宽数据运算转向较低位宽的数据运算。本文通过重新回顾计算机中整数和浮点数的定义,梳理AI模型出现的不同数据类型,进一步理解为什么会出现这些不同的数据类型。
2024-05-25 23:28:27
3435
原创 概念理解: DDR的寻址容量设计
主要内容:DDR寻址容量设计的概念理解示例。DDR的数据存储在不同的bank上,你知道具体是如何通过数据总线和地址总线的配合,拿到所需的数据吗?通过下面这样一个简单的问题,我们来逐渐了解这个过程的实现。
2024-04-21 22:03:16
845
原创 内存概念理解:RANK,BANK,BURST,INTERLEAVING
背景:死磕内存的bank和rank概念的一天。网上的资料都差不多,还是有些地方没理通顺,有什么内存基础知识的书籍可以推荐吗?
2024-04-21 01:05:22
2494
原创 SystemC入门学习Demo用例的工程化配置
背景:对不同的用例文件,使用CMakeLists.txt进行工程化管理的演示,这样开发者可以更加关注在代码开发上。
2024-04-06 14:40:43
412
原创 AI编译器的后端优化策略
后端优化与前端优化的区别• 前端优化:输入计算图,关注计算图整体拓扑结构,而不关心算子的具体实现。在 AI 编译器的前端优化,对算子节点进行融合、消除、化简等操作,使计算图的计算和存储开销最小。• 后端优化:关注算子节点的内部具体实现,针对具体实现使得性能达到最优。重点关心节点的输入,输出,内存循环方式和计算的逻辑。生成低级IR;后端优化;代码生成;1)生成低级IR:不同 AI 编译器内部低级 IR 形式和定义不同,但是对于同一算子,算法的原理实质相同。
2024-01-26 20:53:55
1808
原创 AI编译器的前端优化策略
工作领域是AI芯片工具链相关,很多相关知识的概念都是跟着项目成长建立起来,但是比较整个技术体系在脑海中都不太系统,比如项目参与中涉及到了很多AI编译器开发相关内容,东西比较零碎,工作中也没有太多时间去做复盘与查漏补缺。但是最近比较闲,发现了一个宝藏级的B站博主,系统的讲了很多AI芯片领域的知识,并把课程资源开源维护。在这里当个搬运工,传播一下。 AI系统框架图及AI编译器前端的位置示意如下: AI编译器的前端优化可以总结为神经网络相关的优化和代码/计算层面的优化两个方向
2024-01-26 20:51:07
1888
原创 C++虚函数表的简单理解
简单理解虚函数表的概念虚表就是为了实现面向对象的多态而设计的,简单说就是父类指针能调用子类成员函数。实现简单粗暴:把同一个类的所有虚函数地址放到一个指针的数组里,每一个类一个表。另外在每一个对象的结构体中放置一个指向虚表的指针。在调用时,根据对象里的虚表指针找到对应的虚表,再根据调用函数确定虚表中的哪一个函数地址
2024-01-23 23:14:03
479
原创 gdb调试代码的入门知识
学会gdb调试工具,让你的C++开发之路更加畅通!博主在以往的开发经验中,当调试C/C++程序时候过度依赖于vscode这种编译平台,虽然知道gdb工具可以更快的帮助定位到像core dump这种崩溃程序,但一直懒得切换过来。要想把C++掌握的更好,这种底层调试工具的熟练掌握很重要。
2024-01-23 22:57:28
1138
原创 Tensor Core的一些概念理解
对CUDA Core来说,GPU并行模式实现深度学习模型的功能过于通用,比如常见的conv/GEMM操作,被编码为FMA(fused multiply-add)实现,硬件层面会把数据按照:寄存器-ALU-寄存器-ALU-寄存器,方式来回搬运。: 在CUDA架构中,共享内存是一个非常快速的内存类型,它位于每个线程块内部并为该线程块内的所有线程提供服务。理想的情况是,同一时钟周期内的所有线程访问的地址分布在不同的banks上,这样每个线程的访问都可以在一个时钟周期内被处理,从而实现最大的吞吐量。
2024-01-14 21:15:35
1617
原创 为什么评价AI芯片不能只提峰值算力?
当AI芯片公司发布新产品时候,总是喜欢强调自己家芯片能提供的峰值算力是多少,实际上这只是一个客观的陈述,并不能作为具有高竞争力的说明,为什么呢?其实可以从如下两个方面来解释这个问题:资源与配套,杀鸡与宰牛
2024-01-14 08:30:00
1049
原创 AI模型在专用加速器上的性能分析指标
AI模型在专用加速卡上性能分析大概流程:1)先计算模型本身的计算访存比,得到模型理论算力带宽需求。2)根据处理器本身支持的操作字节比(算力,带宽),确认模型在该处理器上的性能表现类型。3)根据专用加速器内部架构的内存和计算并行性的设计,分析AI模型运行时的schedule,估算得到模型在加速卡上的执行周期。
2024-01-04 08:45:00
1820
原创 基于矩阵乘的CUDA编程优化过程
背景:网上很多关于矩阵乘的编程优化思路,本着看理论分析万遍,不如实际代码写一遍的想法,大概过一下优化思路。矩阵乘的定义如下,约定矩阵的形状及存储方式为: A[M, K], B[K, N], C[M, N]。
2023-12-29 08:30:00
1612
1
原创 基于向量内积的CUDA编程优化过程
GPU运算步骤:分配内存,传输数据,核运算,传出数据,释放内存。向量内积的数据计算公式如下,向量内积结果的累加过程称为归约(reduction),本文将探讨GPU不同编程核函数下的向量内积运算效率情况。
2023-12-27 16:57:08
1203
原创 nvprof:CUDA编程性能分析工具
NVIDIA提供了具有高性能计算的GPU产品,如何检验硬件的实际性能,写出高效的CUDA代码让算力加速卡物尽其用,那可以通过其配套提供的“护城河”软件工具链来检验和帮助发挥GPU的性能:nvprof。如下,对于将8192个A,B向量进行向量加法运算,即C[i] = A[i] + B[i],当软件设置不同的blocknum, threadnum时候,CUDA执行kernel的时间是不同的。比如如下命令,可以看到程序tmp1的总体性能,下面一行是打印gpu的执行时间情况。
2023-12-25 17:02:38
2383
原创 编译代码性能优化实践:理解循环展开(pragma unroll)
CUDA的矩阵乘优化经常见到 pragma unroll 的使用,本文通过简单的示例,展示了CPU和CUDA对循环展开前后的性能表现,来通俗理解循环展开的优化策略。
2023-12-01 19:23:21
7024
原创 Policy CMP0146 is not set: The FindCUDA module is removed
去警告,Policy CMP0146 is not set: The FindCUDA module is removed
2023-12-01 15:46:00
3667
原创 error: identifier “__builtin_is_constant_evaluated“ is undefined
原因:gcc版本过高,当前是gcc-9, 需要降级为gcc-8, 或者gcc-7。
2023-12-01 15:10:38
641
原创 python的时间测试小工具:timeit
timeit是Python标准库内置的小工具,可以快速测试小段代码的性能。本文主要记录它的参数接口和使用示例。
2023-11-29 19:14:46
663
原创 排序算法:n个0~1000之间的整数,将他们从大到小排序
如果没见过这种排序题,可能首先想到的就是常用的排序算法,比如快速排序,归并排序,那如果输入的n足够大,时间复杂度肯定比较高。其实题目0-1000的范围是一个题眼,所以一定有更优的排序算法:这里用到了桶排序!首先,0-1000的值域,创建1001个桶,每个桶都对应一个index,里面放一个初始值count=0,表示大小是index的数出现的个数。接着再根据要求从大到小,或者从下到大遍历1001个桶,如果count>0,表示出现过count,就打印count个对应桶index的值,最后,就完成了排序算法输出!
2023-11-29 00:02:48
974
原创 CUDA initialization failure with error: 999
CUDA initialization failure with error: 999
2023-11-26 22:57:50
1333
2
原创 ubuntu20.04打不开github网址的有效解决方案
重装的ubuntu系统,chrome浏览器刚开始还能打开github网址,然后突然就打不开了,换网络也不行。如下命令打开hosts文件,在打开的文件末尾添加第1步得到的信息。2,修改host文件,添加第1步查询到github对应的信息。,在搜索栏输入如下3个网址,查询并记录对应的IP地址。1,查询你的电脑IP对应的github网址信息。重新打开github网址,看是否已经能打开了。3,测试问题是否解决。
2023-11-26 16:13:31
4887
2
原创 记录pytorch实现自定义算子并转onnx文件输出
概览:记录了如何自定义一个算子,实现pytorch注册,通过C++编译为库文件供python端调用,并转为onnx文件输出
2023-11-14 09:00:00
1612
原创 SystemC入门之测试平台编写完整示例:全加器
导读: 本文将完整演示基于systemC编写一个全加器的测试平台。具体内容包括:激励平台,监控平台,待测单元的编写,波形文件读取。
2023-11-04 18:36:50
672
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人