做一手楼盘的网站网站开发的各个阶段及其完成的任务

张小明 2026/1/8 23:12:30
做一手楼盘的网站,网站开发的各个阶段及其完成的任务,案例剖析网站,网站分站的实现方法训练营简介 2025年昇腾CANN训练营第二季#xff0c;基于CANN开源开放全场景#xff0c;推出0基础入门系列、码力全开特辑、开发者案例等专题课程#xff0c;助力不同阶段开发者快速提升算子开发技能。获得Ascend C算子中级认证#xff0c;即可领取精美证书#xff0c;完成…训练营简介2025年昇腾CANN训练营第二季基于CANN开源开放全场景推出0基础入门系列、码力全开特辑、开发者案例等专题课程助力不同阶段开发者快速提升算子开发技能。获得Ascend C算子中级认证即可领取精美证书完成社区任务更有机会赢取华为手机平板、开发板等大奖。报名链接https://www.hiascend.com/developer/activities/cann20252#cann-camp-2502-intro摘要在 AI 计算中矩阵乘法GEMM占据了 90% 以上的算力消耗。如果说 Vector 单元是精密的瑞士军刀那么 Cube 单元就是重型核武器。很多开发者习惯于用 Vector 模拟矩阵计算却忽略了 Ascend 910B 真正的核心优势。本文将深入解析Cube Unit的硬件架构通过Ascend C 高阶 MatMul API带你驾驭这头“算力野兽”并攻克最令人头秃的Fractal 分形内存布局。前言不要用 Vector 绣花在昇腾算子开发群里常看到有同学用Mul和ReduceSum指令在 Vector 单元上手搓矩阵乘法。 精神可嘉但方向错了。Vector UnitSIMD 架构擅长一维向量计算Add, Exp, Activation。910B 上每周期能进行 128 次 FP16 计算。Cube UnitSystolic Array脉动阵列架构专为 $C A \times B C$ 设计。910B 上每周期能进行4096次 FP16 MAC乘加运算。算力差距是32 倍。如果不调用 Cube你的算子性能永远只有理论峰值的 3%。 但是Cube 的编程难度远高于 Vector。最大的拦路虎就是数据格式Layout。一、 核心图解Cube 的“怪癖”——分形格式 (Fractal Z)通用 CPU/GPU 习惯ND 格式Row Major行优先存储。 矩阵A[Row0, Row1, Row2...]线性排布。但 Cube 单元极其挑剔它不吃 ND 格式只吃Fractal 格式分形格式。 为了配合 Cube 的 16x16 脉动阵列由于物理电路连线的限制数据必须被重排成一个个 $16 \times 16$ 的微小矩阵块Fractal Block。L1 - L0A/L0B当数据从 L1 Cache 搬运到 Cube 的输入寄存器L0A/L0B时必须通过MTE1进行“在线格式转换”。Cube - UB计算结果从 L0C 输出到 UB 时通常是 NZ分形格式需要再次转换回 ND 才能写回内存。二、 关键武器Ascend C Matmul 高阶 API为了不让开发者手动去写复杂的内存重排Ascend C 封装了一套Template-based High-Level API。 它像一个黑盒自动帮你管理 L1 Buffer、L0 寄存器以及数据的搬运。2.1 核心对象Matmul// 模板参数A类型, B类型, C类型, bias类型 // CFG_MODE: 针对不同 Shape 的优化模式 typedef MatmulMatmulTypeAscendC::TPosition::GM, CubeFormat::ND, half, MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, half, MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, float, MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, float, CFG_MDL MatmulObj;2.2 极简流水线传统的 Tiling、CopyIn、Compute 流程被 API 内部接管了。你只需要SetTensor: 告诉 API 数据在哪里GM 地址。Iterate: 启动计算API 内部会自动进行分块、搬运、Cube 计算。GetTensor: 等待计算结束把结果搬回 GM。// 伪代码极简 Matmul Kernel __aicore__ inline void Process() { // 1. 设置左矩阵 A 和右矩阵 B 的 GM 地址 mm.SetTensorA(gm_a); mm.SetTensorB(gm_b); // 2. 启动全自动计算 // Iterate 会自动进行 Tiling 切分基于 Host 侧传入的参数 // 并驱动 MTE1 加载数据驱动 Cube 计算 mm.IterateAll(gm_c); // 3. 结束 (IterateAll 内部包含了搬出操作) }三、 实战从“能跑”到“跑得快”虽然 API 封装得很完美但想跑出极致性能必须深入理解Tiling。3.1 Base M, Base N, Base KCube 单元计算的最小粒度不是 1而是16FP16 场景。 Ascend C 定义了三个基础单位Base M: Cube 一次能处理的行数通常 16。Base N: Cube 一次能处理的列数通常 16。Base K: 内部累加维度通常 16。你的 Tiling 策略必须是 BaseMNK 的整数倍。如果输入 Shape 是[31, 31]对不起必须 Padding 到[32, 32]否则 Cube 无法启动。3.2 Single Core vs Multi CoreMatmul API 支持多核并行。Host 侧计算总任务量按 M 轴或 N 轴切分给不同的 Core。Device 侧每个 Core 拿到自己的SingleCoreM和SingleCoreN初始化 Matmul 对象。// 假设按 M 轴切分当前 Core 负责第 core_idx 块 mm.SetLocalWorkspace(workspace); // 必须给 API 分配显存空间 mm.SetTail(tailM, tailN, tailK); // 处理不能被 16 整除的尾块四、 进阶L0C 驻留与算子融合Cube 算完的结果存在L0C 寄存器中速度极快。 普通的 Matmul 算子会立即把 L0C 的结果搬到 UB再搬回 GM。极致优化思路 如果后面紧接着一个ReLU或Add能不能不搬回 GM能Ascend C 允许 Matmul 结果暂存在 L0C 或 UB 中直接透传给 Vector 单元进行 Point-wise 计算最后再输出。// 融合算子C ReLU(A * B) while (mm.Iterate()) { // 单次迭代 mm.GetTensorC(ub_c); // 把结果搬到 UB而不是 GM Vector::Relu(ub_c, ub_c); // Vector 单元介入在 UB 内做 ReLU DataCopy(gm_c, ub_c); // 手动搬回 GM }这种Cube Vector 异构流水线是昇腾算子性能起飞的关键。五、 总结调用 Cube 单元是 Ascend C 开发的分水岭。思维转变从“线性处理”转变为“块状处理”Block-based。格式敬畏时刻谨记 16x16 对齐理解 Fractal 格式的必要性。异构协同Cube 负责重火力MatMulVector 负责精细操作Bias, ReLU两者通过 UB 紧密配合。当你开始用 Cube 思考问题你才真正触摸到了昇腾 910B 的灵魂。本文基于昇腾 CANN 8.0 及 Ascend C 高阶 API 编写部分底层内存行为可能随硬件版本变化。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

wordpress 评论验证恩施网站优化

Windows 10打印机管理与使用全攻略 1. 驱动添加与查看 在添加软件包后,可在命令行中操作查看驱动信息。具体步骤如下: - 输入 pnputil /enum-drivers 并按下回车键。此时,驱动会被列出,其名称为 oemx.inf ,其中 x 是一个数字。当驱动添加到驱动存储时,每个驱动的…

张小明 2025/12/30 0:16:17 网站建设

flash网站整站下载网站开发主要有两个阶段

2025 年的技能提升赛道中,人工智能技能已成为各行业突破竞争力的核心抓手,而能为 AI 能力提供权威价值背书的CAIE认证,其含金量正被企业与学习者广泛认可,成为连接技能与职业进阶的关键纽带。 一、核心技能:人工智能&a…

张小明 2025/12/30 0:16:25 网站建设

入门编程软件南宁seo标准

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…

张小明 2025/12/30 10:45:30 网站建设

买个域名多少钱一年seo薪资

石头迷阵游戏package com.itheima;public class ArrayTest6 {public static void main(String[] args) {start(5);//完成数字华容道的初始化和随机顺序}public static void start(int n){//定义一个二维数组存储字到表int[][] arr new int[n][n];//遍历二维数组,给…

张小明 2026/1/8 7:02:46 网站建设

老域名怎么做新网站网站主题模板制作

深蓝词库转换:解决输入法切换困境的终极方案 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 当你在不同输入法之间切换时,是否曾遇到过这样的…

张小明 2025/12/30 10:45:26 网站建设

网站产品标签文章标签怎么做的php网站开发用什么

工业控制设备中LCD显示屏低功耗实现:从硬件优化到系统级节能的实战路径在一间典型的工业自动化车间里,PLC操作面板上的TFT-LCD屏幕正持续显示着产线运行状态。它清晰、直观,是工程师与机器沟通的“窗口”。但很少有人意识到——这块看似不起眼…

张小明 2025/12/30 12:11:11 网站建设