当前位置: 首页 > article >正文

CANN/HCCL算法分析器使用指南

算法分析器使用指导【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl工具简介HCCL算法分析器用于在离线环境中模拟HCCL算法的运行验证算法逻辑及内存操作等功能高效、快捷地执行测试任务满足开发者的运行诉求。原理介绍几个关键点算法分析器通过对运行HCCL单算子流程的依赖(hcomm和runtime接口)进行打桩在算法执行的过程可以获取到所有rank的Task序列。将所有rank的Task信息组成一张有向无环图。基于图算法做一些校验比如内存读写冲突校验语义校验。内存冲突校验会基于图中的同步情况分析是否存在可能的读写冲突。语义校验通过模拟执行Task图记录数据的搬运信息模拟执行完成后检查UserOutput内存中数据搬运信息是否符合算子的要求。环境准备参照源码构建中的环境准备、源码下载、编译、安装进行算法分析器编译前的准备工作。用例编写LLT用例一览一个算法checker用例分为5个步骤如下图所示。接下来依次介绍每个步骤的写法以适应不同的算子需求。最后介绍出现问题之后如何借助checker工具进行问题定位。LLT用例各步骤详解仿真模型初始化TopoMeta结构体介绍checker使用TopoMeta来表示一个拓扑结构TopoMeta是一个三层vector结构。PhyDeviceId表示一个NPU的物理Id。ServerMeta由PhyDeviceId组成表示一个服务器的卡数及对应的PhyDeviceId。SuperPodMeta由ServerMeta组成表示组成超节点的服务器情况。TopoMeta表示集群的整体拓扑情况。TopoMeta生成方式TopoMeta生成有两种方式指定超节点个数、服务器个数、每个服务器的卡数然后利用提供的GenTopoMeta函数来生成适用于对称拓扑场景。对超节点、服务器、卡数等完全定制适用对称和非对称拓扑场景如下图所示。模型初始化传入生成的TopoMeta并指定仿真的设备类型算子参数设置算子执行参数以Scatter为例需要设置执行HcclScatter算子和校验所需的部分入参具体参数如下root设置root节点Scatter操作将通信域内root节点的数据均分并散布至其他Rank。rankSzie本通信域内参与集合通信的Rank数(需与topoMeta中包含的卡数一致)。recvCount每张Rank从root节点接收的数据量dataType对应recvCount数量的数据类型如果是其他算子或用户自定义算子场景需要根据算子所需参数进行设置。设置环境变量环境变量会影响代码中的判断逻辑通过setenv函数可以在用例执行前设置好用例需要的条件。注意事项支持算子目前仅支持scatter算子。支持模式目前仅支持OPBASE单算子模式。支持机型目前仅支持DEV_TYPE_910B、DEV_TYPE_91093(表示DEV_TYPE_910C)算子执行流程如下图所示以多线程的方式运行单算子的流程构造算子入参。构造单算子运行所需的参数包含如下内容SetDevice用以将线程与Rank绑定使得每个线程模拟一张对应的Rank。主流资源创建调用aclrtCreateStream接口打桩实现模拟流资源的创建。通信域初始化调用HcclCommInitClusterInfo打桩实现模拟通信域的创建。输入输出内存申请调用aclrtMalloc打桩实现模拟内存的创建并标记内存类型用户需根据算子类型、数量和数据类型计算出所需的内存的字节数。算子下发。调用HcclScatter算子将上述构造的参数传入。用户自定义算子场景此处替换为用户自定义算子的API即可对应上面的算子参数需修改为用户自定义算子所需的参数。通信域销毁。调用HcclCommDestroy接口销毁通信域。结果成图校验获取所有Rank的Task队列并调用对应算子的校验函数以Scatter算子为例调用CheckScatter并将Task队列和执行Scatter算子校验所需的参数传入gtest测试框架根据校验结果的返回值进行打印。资源清理单个用例执行的最后步骤需要清理仿真模型资源避免对下一个用例执行的干扰。用例过滤调试用例较多仅需执行某个用例时修改main.cc中用例名称即可。用例编译、执行编译并执行算法分析器用例# 进入算法分析器目录 /hccl/test/st/algorithm cd ./hccl/test/st/algorithm # 编译测试用例并自动执行 bash build.sh结果示例用例执行结果如下所示各字段含义如下[run]表示执行验证的用例[OK]表示执行成功验证通过[FAIL]表示执行失败具体原因根据打屏日志进行分析。问题定位内存冲突校验定位方法问题现象当两个同步信号之间的某片内存被多个task并发写入或者在被读取的同时被写入就会发生内存冲突。这种情况下在实际运行环境中通常会表现为随机出现的精度问题。当前Mesh结构下若存在Reduce算子可能存在误报的情况。原因是Mesh结构下可能会出现某块内存在一个同步之间被其他卡同时写入的情况。此时硬件可以确保Reduce操作的原子性在实际运行中不会出现精度问题但从checker的角度来看确实是两个同步之间对同一内存进行了多次读写操作因为会被认为错误。除上述场景以外出现如下报错则认为task编排中有内存冲突的风险[1]there is memory use confilict in two SliceMemoryStatus [2]one is startAddr is 0, size is 3200, status is WRITE. [3]another is startAddr is 0, size is 3200, status is WRITE. [4]failed to check memory BufferType::OUTPUT_CCL [5]memory conflict between node [rankId:1, queueId:0, index:1] and node [rankId:2, queueId:0, index:1] [6]check rank memory conflict failed for rank 0第2、3句表示冲突的两个内存块的起始地址startAddr、大小size以及读写状态status。status有READ和WRITE两个状态READ表示该内存块正在被读WRITE表示该内存块正在被写。被读和被写是抽象的内存操作语义不仅仅是write task和read task。可能是READ状态的内存块包括localcopy任务的srcread任务的srcwrite任务的src可能是WRITE状态的内存块包括localcopy任务的dstread任务的dstwrite任务的dst。第4句表示冲突内存块的类型。第5句说明了是哪两个task造成的内存冲突。第6句说明了产生内存冲突的rank号。上述错误日志说明同时有两个task在往OUTPUT_CCL类型的0~3200的范围内执行写入操作。定位方法根据报错日志找到造成内存冲突的两个task排查这两个task前后同步的编排。问题现象中的错误日志说明同时有两个task在往OUTPUT_CCL类型的0~3200的范围内执行写入操作。语义校验失败定位方法语义校验基础概念算法分析器中内存使用相对地址进行表示由三个字段组成内存类型、偏移地址offset、大小size用结构体DataSlice表示class DataSlice { public: // 一些方法函数 private: BufferType type; u64 offset; u64 size; }内存支持Input、Output、CCL等类型。集合通信算法在运行过程中会涉及复杂的数据搬运、规约操作算法分析器用BufferSemantic语义记录数据搬运关系其中有目的内存表达和多个源内存表达。目的内存通过成员变量startAddr和Size表示源内存用结构体SrcBufDes表示结构体定义如下struct BufferSemantic { u64 startAddr; mutable u64 size; // 大小源内存和目的内存共享相同的大小 mutable bool isReduce; // 是否做了reduce操作srcBufs有多个的时候必定是reduce场景 mutable HcclReduce0p reduceType; // reduce操作的类型 mutable std::setSrcBufDes srcBufs; //这块数据来自哪个或哪些rank }; struct SrcBufDes { RankId rankId; // 数据源的rankId BufferType bufType; // 数据源的内存类型 mutable u64 srcAddr; // 相对于数据源内存类型的偏移地址 };语义计算举例下面已具体例子介绍什么是语义计算。初始状态有Rank0与Rank1两个Rank有InputOutput两种内存类型。状态一动作将rank0的Input偏移地址20大小为30的数据块搬运到rank0的Output偏移地址为35结果在rank0的Output上产生了一个语义块记录了本次搬运的信息。状态二动作将rank1的Input偏移地址70大小为15的数据块搬运到rank0的Output偏移地址为50结果目的内存与现有的语义块有重叠需要对现有的语义块进行拆分产生两条语义块。结果校验语义分析执行的过程中产生很多语义块即记录了很多数据搬运关系。执行完成后校验Output内存中的语义块是否符合预期。接下来以2 rank做AllGather举例说明Rank0的Output内存中语义块的正常场景和异常场景。假设输入数据大小是100字节。正确场景错误场景定位思路语义校验阶段可以发现两种类型的错误数据缺失。数据来源错误。扩展到规约场景也有类似的问题比如参与规约的rank数量缺失、参与规约的数据偏移地址不一样等。通常情况下语义报错的时候会给出一定的提示信息。需要借助提示信息并结合算法分析器打印的task序列进行具体分析。【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

CANN/HCCL算法分析器使用指南

算法分析器使用指导 【免费下载链接】hccl 集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode.com/cann…...

UVa 189 Pascal Program Lengths

题目分析 本题要求计算 Turbo Pascal\texttt{Turbo Pascal}Turbo Pascal 程序的长度,长度由若干类 token\texttt{token}token 的数量决定,包括: 保留字(reserved words\texttt{reserved words}reserved words)标识符&a…...

AI高通量实验平台:数据驱动电池级碳酸锂工艺优化

1. 项目概述:当AI遇见“白色石油”的提纯革命电池级碳酸锂,这个被誉为“白色石油”的关键材料,其生产工艺的每一次微小优化,都牵动着整个新能源产业链的神经。传统的工艺优化,往往依赖于工程师的经验和“试错法”&…...

CANN ops-tensor Blaze引擎

Blaze 【免费下载链接】ops-tensor ops-tensor 是 CANN (Compute Architecture for Neural Networks)算子库中提供张量类计算的基础算子库,采用模块化设计,支持灵活的算子开发和管理。 项目地址: https://gitcode.com/cann/ops-…...

UVa 188 Perfect Hash

题目分析 本题要求为给定的单词列表构造一个完美哈希函数,函数形式为: ⌊Cw⌋ mod n \left\lfloor \frac{C}{w} \right\rfloor \bmod n ⌊wC​⌋modn 其中: www 是单词转换后的整数值(转换规则:每个字母用 555 位表示…...

长期使用中观察到的Taotoken账单明细与成本分析价值

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用中观察到的Taotoken账单明细与成本分析价值 在将大模型能力集成到产品或研发流程的长期实践中,一个清晰、可追…...

联邦学习与Transformer在CV与安全领域的融合应用与实战解析

1. 项目概述:当联邦学习遇上Transformer,CV与安全的新范式最近几年,我身边不少做计算机视觉(CV)和网络安全的朋友,都在不约而同地讨论两个词:联邦学习(Federated Learning&#xff0…...

信贷风控中可解释AutoML实践:用SHAP与H2O实现透明AI决策

1. 项目概述:当信贷决策遇上“透明”的AI在金融科技圈子里干了十几年,我亲眼见证了机器学习从实验室里的新奇玩具,变成信贷风控部门里不可或缺的“主力队员”。无论是银行、消费金融公司还是新兴的金融科技平台,都在用算法模型来评…...

基于SVR与特征选择的系外行星半径预测:数据清洗、模型构建与天文解读

1. 项目概述:从数据到洞察,预测遥远世界的尺寸在系外行星研究的浩瀚星海中,我们获取的数据往往是间接且充满噪声的。当一颗行星从它的母恒星前方经过,我们称之为“凌星”,望远镜会记录下恒星亮度的微小下降。从这些“光…...

不同价位的燕窝品质差异大吗?行业标准解读与选购建议

不同价位的燕窝品质差异大吗?答案是确实存在较为明显的客观差异,价格落差主要对应原料等级、加工工艺、安全溯源三个核心维度的区别,合理的价格差对应品质差,但也存在部分营销溢价,消费者需要学会区分核心指标。不同价…...

第五篇:锻造大脑——为什么算法公开,你却造不出 GPT?

书接上文。同学问:“既然 CNN、Transformer 的论文和代码都是开源的,我能不能在寝室里手搓一个 DeepSeek 或者 GPT-4?” 这就像虽然米其林餐厅的菜谱(算法)是公开的,但要把菜做成艺术品,你还需要…...

非洲AI本土化实践:医疗、农业、金融、教育四大领域创新与挑战

1. 非洲AI发展的现实图景:机遇与挑战并存 谈论人工智能,我们常常将目光聚焦在硅谷、北京或伦敦。但如果你把视线转向非洲大陆,会发现一片截然不同却又充满生机的AI创新土壤。这里没有OpenAI或DeepMind那样的科技巨头,却有着一群直…...

基于主动学习的广义Benders分解算法初始化优化研究

1. 项目概述:当优化算法遇上“主动学习”在运筹优化和工业工程领域,我们常常需要面对一类“硬骨头”问题:大规模、混合整数、带有复杂约束的优化模型。这类问题大到供应链网络设计,小到芯片布局布线,其核心挑战在于&am…...

CANN/tensorflow NPURunConfig精度调优配置

精度调优 【免费下载链接】tensorflow Ascend TensorFlow Adapter 项目地址: https://gitcode.com/cann/tensorflow precision_mode_v2 算子精度模式,配置要求为string类型。 fp16:表示原图中算子精度为float16、bfloat16或float32时&#xff0c…...

CANN/cann-recipes-infer:NPU DeepSeek-V4 TileLang算子开发实践

NPU DeepSeek-V4 TileLang算子开发实践 【免费下载链接】cann-recipes-infer 本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-infer 简介 在大模型异构计算发展背景…...

CANN/pyasc ib_wait函数文档

asc.language.basic.ib_wait 【免费下载链接】pyasc 本项目为Python用户提供算子编程接口,支持在昇腾AI处理器上加速计算,接口与Ascend C一一对应并遵守Python原生语法。 项目地址: https://gitcode.com/cann/pyasc asc.language.basic.ib_wait(g…...

昇腾SiP CgemvOperation C++示例

信号处理加速库CgemvOperation C Demo 【免费下载链接】sip 本项目是CANN提供的一款高效、可靠的高性能信号处理算子加速库,基于华为Ascend AI处理器,专门为信号处理领域而设计。 项目地址: https://gitcode.com/cann/sip 介绍 该目录下为信号处…...

智能电网安全:基于可信AI的攻击检测与风险解释框架

1. 项目概述在智能电网这个庞大的能源神经系统中,分布式能源资源(DERs)——比如你家屋顶的光伏板、街角的电动汽车充电桩、甚至是一个社区的储能电站——正以前所未有的速度和规模接入。它们通过源源不断的控制与状态消息,与电网控…...

CANN Runtime异常处理指南

异常处理 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 获取Runtime错误码 所有Runtime接口都会返回一个错误码。然而,对于异步接口(参见异步任务执行)&#xff0…...

KrkrzExtract终极指南:新一代krkrz引擎资源解包工具完全解析

KrkrzExtract终极指南:新一代krkrz引擎资源解包工具完全解析 【免费下载链接】KrkrzExtract The next generation of KrkrExtract 项目地址: https://gitcode.com/gh_mirrors/kr/KrkrzExtract KrkrzExtract是专门为krkrz引擎设计的下一代资源处理工具&#x…...

别再死记硬背TP/FP了!用Python手把手带你画混淆矩阵,5分钟搞懂准确率、召回率

用Python实战拆解分类模型评估:从混淆矩阵到指标可视化 刚接触机器学习的开发者常会遇到这样的困惑:为什么模型预测的"准确率"很高,但实际业务中却表现糟糕?上周我帮一个电商团队分析用户流失预测模型时就遇到这种情况—…...

多模态大模型如何重塑科学教育:从理论框架到课堂实践

1. 项目概述:当科学教育遇见“多模态”大脑最近几年,我身边不少从事科学教育(从K12到大学)的朋友和同事,都在不约而同地讨论一个词:多模态大语言模型。起初,大家只是把它当作一个更聪明的聊天机…...

视频动作识别可解释性:REVEX框架与六种移除式解释方法评测

1. 项目概述:当AI“看”视频时,我们如何理解它的“思考”?在动作识别领域,AI模型已经能够以惊人的准确率识别视频中的人类行为,从简单的“走路”、“跑步”到复杂的“打篮球”、“弹钢琴”。然而,一个长期困…...

2026年,如何挑选靠谱的冷镦油过滤机生产商?这几点是关键

在紧固件、轴承等金属零部件制造领域,冷镦工艺是核心环节,而冷镦油的清洁度直接关系到模具寿命、产品精度与生产成本。随着2026年工业制造向智能化、绿色化深度转型,选择一台高效、可靠的冷镦油过滤机,已成为企业降本增效与合规运…...

CANN/hcomm AIV算子任务编排

任务编排 【免费下载链接】hcomm HCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 编排步骤 参与集合通信的各个rank协调有序地进行同步与数据搬运&am…...

别再手动改NetCDF了!用CDO批量插值气象数据的保姆级Shell脚本(附双线性/最近邻/样条等7种方法对比)

别再手动改NetCDF了!用CDO批量插值气象数据的保姆级Shell脚本(附双线性/最近邻/样条等7种方法对比) 气象数据处理中,最让人头疼的莫过于面对不同来源、不同分辨率的NetCDF文件。想象一下,你手头有几百个温度、降水或风…...

深度解析KrkrzExtract:下一代krkrz引擎资源处理工具实战指南

深度解析KrkrzExtract:下一代krkrz引擎资源处理工具实战指南 【免费下载链接】KrkrzExtract The next generation of KrkrExtract 项目地址: https://gitcode.com/gh_mirrors/kr/KrkrzExtract KrkrzExtract作为新一代krkrz引擎资源处理工具,专为游…...

CANN/ops-nn GeluMul算子

GeluMul 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√At…...

APA 7th Edition终极指南:三分钟解决Word参考文献格式混乱问题

APA 7th Edition终极指南:三分钟解决Word参考文献格式混乱问题 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 还在为学术论文的参考文献格…...

中国企业全球化人才战略白皮书

导读:当前中国企业全球化已进入深水区,告别 “拼速度、抢扩张” 的粗放阶段,转向以长期价值、组织韧性、全球共生为核心的新征程。效率、成本与技术速度不再是决胜关键,信任力成为企业立足全球、穿越周期的核心 “软货币”&#x…...