自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 KMP & OpenHarmony 实现分数背包问题

分数背包问题是贪心算法的经典应用,允许物品分割以最大化背包价值。其核心思想是按单位价值排序物品,优先选择高价值物品。通过Kotlin实现算法并编译为JavaScript,可在OpenHarmony应用中调用。算法时间复杂度为O(n log n),适用于资源分配、投资组合等场景。与0/1背包不同,分数背包使用贪心策略总能得到最优解。

2025-11-27 09:33:24 735

原创 KMP & OpenHarmony 实现任务调度问题

本文介绍了任务调度问题的贪心算法解决方案及其实现。该算法通过将任务按利润排序,并在截止时间前查找可用时间槽来最大化总利润。文章详细讲解了Kotlin实现步骤,包括基础版本和返回调度方案的详细版本,并演示了如何导出为JavaScript以及在OpenHarmony中调用。算法时间复杂度为O(n²),适用于生产调度、项目管理等场景。优化建议包括使用并查集、优先队列等方法提高效率。通过KMP编译和OpenHarmony集成,实现了跨平台的任务调度解决方案。

2025-11-27 09:33:11 538

原创 KMP & OpenHarmony 实现区间覆盖问题

摘要 区间覆盖问题是一种经典的贪心算法应用,旨在用最少数量的区间覆盖给定目标范围。其核心策略包括:按区间起点排序,在当前覆盖范围内选择终点最远的区间。Kotlin实现通过排序和贪心选择得到最优解,时间复杂度为O(n log n)。该算法适用于信号覆盖、时间安排等场景,并能导出为JavaScript在OpenHarmony中调用。实际应用案例展示了其在资源分配中的高效性。

2025-11-27 09:33:02 618

原创 KMP & OpenHarmony 实现二叉树遍历

本文介绍了二叉树的四种遍历方式(前序、中序、后序、层序)及其实现方法。通过Kotlin代码展示了递归和迭代两种实现方式,并提供了完整的示例演示。文章还说明了如何将Kotlin代码编译为JavaScript并在OpenHarmony中调用,最后列举了二叉树遍历在表达式求值、树序列化和文件系统遍历等场景的实际应用。

2025-11-27 09:32:51 901

原创 KMP & OpenHarmony 实现二叉搜索树

摘要:本文详细介绍了二叉搜索树(BST)的实现原理与Kotlin实现。BST具有左子树小于根、右子树大于根的特性,支持高效的查找、插入和删除操作。文章提供了完整的Kotlin实现代码,包括节点插入、删除、查找以及中序遍历等方法,并展示了如何将Kotlin代码编译为JavaScript在OpenHarmony中使用。BST在数据库索引、文件系统等领域有广泛应用,平均时间复杂度为O(logn),但最坏情况下会退化为O(n)。建议使用平衡树结构如AVL或红黑树进行优化。

2025-11-27 09:32:36 534

原创 KMP & OpenHarmony 实现线性查找

本文介绍了如何使用Kotlin Multiplatform (KMP)实现线性查找算法,并编译为JavaScript后在OpenHarmony应用中调用。文章详细讲解了线性查找的O(n)时间复杂度的实现原理,展示了Kotlin代码通过@JsExport注解导出为JavaScript的过程,以及在OpenHarmony应用中通过ArkTS调用并输出结果的具体步骤。该方案实现了Kotlin代码跨平台复用,为移动端开发提供了高效的算法实现路径,同时保留了简单的控制台输出验证方式。

2025-11-26 20:55:37 786

原创 KMP & OpenHarmony 实现二分查找

本文介绍了如何使用Kotlin Multiplatform (KMP)实现二分查找算法,并将其编译为JavaScript后在OpenHarmony应用中调用。文章详细阐述了二分查找的算法原理(O(log n)时间复杂度),展示了Kotlin实现代码,并通过@JsExport注解导出为JavaScript模块。同时说明了如何在OpenHarmony应用中集成该模块,并通过ArkTS调用算法输出结果到控制台。整个过程体现了KMP跨平台开发的便捷性,为在OpenHarmony应用中高效实现查找算法提供了完整解决方

2025-11-26 20:51:30 307

原创 KMP & OpenHarmony 实现归并排序

本文介绍了使用Kotlin Multiplatform(KMP)实现归并排序并集成到OpenHarmony应用的全过程。归并排序作为稳定的O(n log n)分治算法,通过递归分割数组并合并有序子数组实现排序。文章详细展示了Kotlin代码实现、@JsExport注解导出、KMP编译为JavaScript的步骤,以及如何在OpenHarmony应用中调用并输出结果。该方案充分利用了KMP的跨平台特性,实现了从Kotlin算法到OpenHarmony应用的完整工作流,为移动端开发提供了高效、稳定的排序解决方案

2025-11-26 20:50:16 607

原创 KMP & OpenHarmony 实现快速排序

本文展示了如何使用Kotlin Multiplatform (KMP)实现快速排序算法并集成到OpenHarmony应用中。主要内容包括:1) 在Kotlin中实现快速排序的核心逻辑;2) 通过@JsExport注解将算法导出为JavaScript;3) 编译生成可在OpenHarmony中调用的JS文件;4) 在OpenHarmony应用中调用算法并输出结果。整个过程实现了跨平台代码复用,展示了KMP在移动开发中的优势,为算法在OpenHarmony生态中的应用提供了实践范例。

2025-11-26 20:48:43 452

原创 KMP & OpenHarmony 实现冒泡排序

本文介绍了使用Kotlin Multiplatform(KMP)实现冒泡排序并在OpenHarmony应用中调用的方法。主要内容包括:1) 在Kotlin中实现冒泡排序算法;2) 通过@JsExport注解将函数导出为JavaScript;3) 编译生成可在OpenHarmony中使用的JS文件;4) 在ArkTS中调用并输出结果到控制台。该方案展示了KMP的跨平台特性与OpenHarmony的结合应用,实现了算法代码复用和原生调用,为跨平台开发提供了参考范例。

2025-11-26 20:47:08 713

原创 rust:猜数字小游戏

本文介绍了一个简单的猜数字小游戏的实现过程。程序首先生成一个1-100的随机数作为答案,然后让玩家输入猜测数字,并提示太大或太小,直到猜中为止。文章详细讲解了如何使用Rust语言完成该项目:包括创建项目、引入rand crate生成随机数、处理用户输入、数字比较以及循环优化等核心功能。通过逐步完善代码,最终实现了一个可交互的猜数字游戏,展示了Rust的基础语法和开发流程。该游戏适合Rust初学者实践入门,涉及变量声明、输入输出、错误处理等基本概念。

2025-10-29 23:11:01 933

原创 rust:第一个程序HelloWorld

本文介绍了用Rust语言编写第一个"Hello World"程序的完整过程。首先在VsCode中创建项目并编写包含main函数的程序代码,使用println!宏输出"Hello, world!"。然后通过rustc命令编译生成可执行文件,最后运行程序验证输出结果。文章还简要解析了程序结构,说明main函数作为程序入口的作用以及代码书写规范。整个过程以图文并茂的方式展示了Rust语言最基本的程序编写、编译和运行方法。

2025-10-29 23:09:16 430

原创 Rust结构体:数据组织的优雅范式与实例化实践

它打破了简单变量的局限,允许开发者将不同类型的数据组合成一个有机整体,就像用不同零件组装精密仪器,让代码从“零散的数字与文本”升级为“有意义的实体模型”。Rust的实例化语法直观且灵活,最基础的方式是按字段顺序依次赋值,也可以通过“字段名: 值”的形式显式赋值,后者更适合字段较多的场景,能避免因顺序混淆导致的错误。需要注意的是,Rust要求实例化时必须为所有字段赋值,不允许存在未初始化的字段——这一规则从根源上杜绝了“空指针引用”这类常见Bug,是Rust“内存安全”理念的直接体现。

2025-10-29 23:07:46 451

原创 Rust 的构建系统和包管理器

Rust构建工具Cargo简介 Cargo是Rust官方的构建系统和包管理器,提供项目构建、依赖管理等核心功能。它通过cargo new命令创建项目,自动生成标准目录结构(包含Cargo.toml配置文件和src/源码目录)。常用命令包括cargo build编译项目、cargo run编译运行、cargo test执行测试等。Cargo还能管理项目依赖、生成文档(cargo doc)及发布包到crates.io(cargo publish),大幅简化Rust项目的开发和维护流程。安装Rust时会自动包含C

2025-10-29 23:07:11 434

原创 rust:变量与可变性

Rust变量系统提供了灵活的可变性控制:默认变量不可变(保证安全性),可通过mut声明可变变量,还支持变量遮蔽(Shadowing)特性(允许同名变量重新绑定不同类型值)。遮蔽与mut的关键区别在于遮蔽创建新变量并支持类型改变,而可变变量仅修改值。实际开发中应优先使用不可变变量,必要时合理运用遮蔽和mut来平衡安全性与灵活性。这种设计既确保了内存安全,又提供了足够的表现力。

2025-10-29 23:03:20 534

原创 rust:什么是所有权

本文介绍了Rust中的所有权概念及其内存管理机制。所有权规则包括:每个值有唯一所有者,值随所有者离开作用域自动清理。通过作用域实例展示了变量的生命周期。文章对比字符串字面量和String类型的内存处理差异,解释堆内存分配原理及自动释放机制(drop函数)。重点说明了变量交互时的移动语义与克隆(clone)方法,避免双重释放错误,确保内存安全。所有权系统使Rust无需垃圾回收即可高效管理内存。

2025-10-29 23:01:09 898

原创 Rust安装

本文介绍了Rust编程语言在不同操作系统下的安装方法。Windows用户需先安装Microsoft C++生成工具,再下载Rust安装包并配置环境变量。Linux/MacOS用户可通过终端命令安装Rust及C编译器。文章还推荐了适合Rust开发的编辑器选项,重点介绍了在VSCode中安装rust-analyzer扩展的方法。安装完成后可使用"rustc --version"命令验证是否安装成功。

2025-10-29 22:58:26 477

原创 迭代器与闭包深入

本文深入探讨了 Rust 中迭代器与闭包的核心概念及其应用。主要内容包括: 闭包基础语法与类型推导 通过 Pipeline 结构体展示了复杂的数据处理管道实现 自定义迭代器(Fibonacci 数列) 实现延迟计算的迭代器适配器(Chunked) 闭包作为回调的应用(EventEmitter) 函数式数据处理示例 这些示例展示了 Rust 如何通过迭代器和闭包实现高效、灵活的数据处理,体现了 Rust 函数式编程风格的特点。

2025-10-27 22:16:35 442

原创 模式匹配高级技巧

Rust 模式匹配高级技巧摘要: Rust 的模式匹配功能强大,可用于控制流、数据解构和提取。文章展示了基础模式匹配示例,如处理枚举类型消息。重点演示了一个复杂案例 - 实现表达式求值器,包括定义表达式类型(数字、变量、运算符等)、创建求值环境(变量和函数存储)以及详细的求值逻辑实现。通过模式匹配处理各种表达式类型,展示了如何递归求值、处理变量查找、执行数学运算和函数调用等高级用法。该示例充分体现了 Rust 模式匹配在构建复杂系统时的强大表现力和安全性。

2025-10-27 22:16:02 382

原创 Trait与泛型高级用法

Rust Trait 与泛型高级用法摘要 本文介绍了 Rust 中 Trait 和泛型的高级用法,展示如何构建灵活的数据处理框架。主要内容包括: Trait 基础:定义共享行为,支持默认实现 数据处理框架设计: 定义 DataProcessor trait 抽象处理逻辑 实现处理器链式组合 (ChainableProcessor) 包含多种处理器实现: 文本处理(大写转换、分词) 数据分析(词频统计) 高阶操作(过滤、映射) 关键特性: 使用关联类型定义输入/输出 支持错误传播 通过泛型实现类型安全的数据转

2025-10-27 22:15:24 388

原创 异步编程深度解析

Rust异步编程实践:任务管理系统 摘要:本文通过实现异步任务管理系统展示了Rust的异步编程能力。系统包含任务状态管理(TaskStatus)、任务定义(Task)和结果追踪(TaskResult)等核心组件。AsyncTaskExecutor使用Tokio运行时,通过信号量(Semaphore)控制并发任务数,利用RwLock实现线程安全的状态管理。任务执行过程模拟了异步工作和可能的失败情况。TaskMonitor组件实时统计任务完成情况。该案例综合运用了async/await、多线程同步(RwLock

2025-10-27 22:14:50 169

原创 并发编程基础

Rust 并发编程摘要: Rust 通过所有权系统提供安全的并发编程,能有效防止数据竞争。本文介绍了 Rust 的线程基础(1:1 线程模型)和简单线程示例,重点展示了一个复杂的并发任务调度器实现。该调度器包含: 工作线程池管理 任务队列和状态跟踪 条件变量同步 线程安全的任务分配 动态任务执行监控 实现使用了 Arc、Mutex、Condvar 等同步原语,以及 mpsc 通道进行线程间通信。演示了如何提交任务、等待完成和监控活动线程数。Rust 的类型系统确保这些并发操作在编译时就是线程安全的。

2025-10-27 22:14:12 398

原创 错误处理最佳实践

Rust错误处理机制通过类型系统确保开发者显式处理错误。本文介绍了两种主要错误类型:可恢复错误(Result<T,E>)和不可恢复错误(panic!)。文章展示了基础文件读取示例,并深入构建了一个完整的配置管理系统案例,包含自定义错误类型ConfigError及其实现细节。该案例演示了高级错误处理技术,包括错误转换、验证逻辑、结构化配置解析等。通过ServerConfig结构体的实现,展示了如何定义配置参数、执行验证规则以及从字符串解析配置值,同时处理各种可能的错误情况。

2025-10-27 22:13:40 271

原创 智能指针完全指南

本文介绍了Rust中的智能指针类型及其应用。主要内容包括:1)智能指针分类(Box、Rc、Arc等)及其特性;2)Box<T>的基本用法和递归类型实现;3)使用Box实现二叉搜索树的完整案例,涵盖插入、遍历、高度计算等功能;4)Rc引用计数指针的使用示例;5)结合Rc和RefCell实现图结构的节点连接。通过这些示例展示了Rust智能指针在内存管理和复杂数据结构构建中的实际应用价值。

2025-10-27 22:12:58 268

原创 生命周期详解与实践

Rust生命周期机制详解:本文通过代码示例深入解析Rust生命周期概念,包括基础语法和复杂应用场景。演示了文本分析器实现,展示了生命周期在数据结构中的实际应用,如词频统计、上下文提取等。同时介绍了多生命周期参数的缓存系统实现,体现生命周期在性能优化中的作用。文章通过具体案例帮助开发者理解如何正确使用生命周期注解确保引用安全性,避免悬垂指针等问题。

2025-10-27 22:09:27 430

原创 借用与引用实战

摘要 本文介绍了 Rust 中借用与引用的核心概念和实践应用。主要内容包括: 借用规则:同一时间只能有一个可变引用或多个不可变引用,且引用必须有效 基础示例:展示不可变借用和可变借用的基本用法 复杂案例:实现了一个支持并发访问的缓存系统,演示借用在实际场景中的应用 引用生命周期:展示切片借用和多个不可变引用的共存 借用跟踪:实现 BorrowTracker 结构体模拟 Rust 的借用检查机制 通过代码示例详细讲解了如何在 Rust 中安全地使用引用,避免数据竞争和悬垂指针,体现了 Rust 内存安全的设计

2025-10-27 22:07:56 426

原创 所有权系统深度解析

Rust的所有权系统是其最核心的特性,通过三条基本规则确保内存安全:每个值有唯一所有者、所有权可转移、离开作用域自动释放。本文通过文件管理器和数据处理器的实现案例,展示了所有权在资源管理中的实际应用,包括所有权转移、借用机制以及函数调用时的所有权处理。Rust的所有权系统在编译期即可捕获内存错误,避免数据竞争和悬垂指针问题,是Rust实现高效安全编程的关键。文章还演示了如何利用Drop trait自动清理资源,以及可变借用与所有权转移的区别。

2025-10-27 22:06:52 226

原创 CV算子硬件计算单元科普

│ Scalar: 灵活的指挥官 ││ - 控制流程 ││ - 处理复杂逻辑 ││ - 性能最低但不可或缺 ││ Vector: 高效的突击队 ││ - 向量并行计算 ││ - 数据预处理 ││ - 性能提升100倍 ││ Cube: 无敌的主力军 ││ - 矩阵运算专家 ││ - 深度学习核心 ││ - 性能提升400倍 │分析计算模式选择合适单元优化内存访问流水线并行。

2025-10-24 23:02:40 992

原创 CV算子实践指南

平台:CodeArts AI Lab网址:https://www.huaweicloud.com/lab/特点:✓ 免费NPU实例✓ JupyterLab环境✓ 预装CANN工具链✓ 示例代码丰富第一阶段:夯实基础(不要急)✓ 理解硬件架构✓ 掌握基本API✓ 实现简单算子✗ 不要一上来就优化第二阶段:小步快跑✓ 每周实现1个算子✓ 从简单到复杂✓ 记录优化过程✗ 不要好高骛远第三阶段:系统优化✓ 端到端性能分析✓ 综合运用各种技术✓ 形成自己的方法论。

2025-10-24 23:02:07 875

原创 CV算子关键技术

1. 算法层面优化 (最高ROI)└→ 改进算法 > 优化实现2. 矩阵化优化 (巨大提升)└→ 能矩阵化一定要矩阵化3. 向量化优化 (必做基础)└→ 大数据量场景必须向量化4. 内存访问优化 (隐藏杀手)└→ 连续访问 + Cache优化5. 分块策略 (多核利用)└→ 合理分块 + 负载均衡6. 流水线优化 (锦上添花)└→ 计算访存重叠法则1:测量先于优化└→ 没有数据支撑的优化都是瞎搞法则2:优化最大瓶颈└→ 80%时间花在20%代码上法则3:理解硬件特性。

2025-10-24 23:01:31 937

原创 CV算子插值类算子性能优化实践

传统实现(四层循环)↓向量化优化(消除channel循环)↓转置优化(解决访存问题)↓矩阵化计算(利用Cube单元)↓分块策略(解决稀疏性和内存限制)↓流水线优化(计算访存重叠)↓工程调优(Cache优化、路径选择)向量化:几十倍提升矩阵化:再提升5-10倍工程优化:再提升2-3倍总体可达数百倍提升!

2025-10-24 23:00:57 1018

原创 CANN_CV算子架构介绍

CANN CV算子体系的三大特点:分层清晰基础算子 → 高级算子简单任务 → 复杂任务易于理解和扩展模块化设计接口定义清晰(InferShape、Tiling、SLN等)代码组织合理(文档、测试、实现分离)便于维护和优化应用广泛智能驾驶、平安城市、医疗等多领域YOLO、Mask R-CNN、U-Net等多算法覆盖主流CV应用场景。

2025-10-24 22:59:53 988

原创 深入探索昇腾数据科学库AsNumpy的高性能奥秘

2025年昇腾CANN训练营第二季启动,助力开发者提升算子开发技能。华为开源昇腾计算产业,推动AI基础软件发展。在此背景下,哈尔滨工业大学与华为联合开发了AsNumpy数据科学库,这是首个在昇腾NPU上开源的数据科学库,具有高效计算、接口兼容NumPy等特点。AsNumpy基于三层架构设计,包含NPUArray数据结构、高性能内存池和OpenBolt算子库,在中等规模和大规模数据上分别实现12倍和100倍的性能提升。该开源项目已从4人团队扩展到35人,计划年底完成200个算子开发,为数据科学和AI应用提供强

2025-10-23 12:48:54 1323

原创 从0到1掌握Ascend C算子工程开发方式

本文系统介绍Ascend C算子的标准工程开发流程,从快速开发与标准开发方式对比入手,详细解析包括数据流设计、算子工程创建、HOST/Device架构理解、Tiling机制等核心内容。标准开发方式通过代码分离、高通用性设计,使算子能真正应用于生产环境,涵盖从工程创建到编译部署的全流程,并强调数据搬移-计算-输出三步骤的关键作用。文章还提供Sigmoid算子开发实战指南,帮助开发者掌握将算子产品化的专业方法。

2025-10-23 12:45:56 1663

原创 Meetup(Transformer算子)

昇腾CANN训练营推出Transformer算子技术专题,聚焦大模型核心算子优化。OpenTransformer算子仓覆盖MHA、MOE等关键模块,采用生态兼容、高内聚低耦合设计。专家深入解析了MOE架构中的Dispatch/Combine优化、FIA算子在MLA中的应用、GMM低精度支持等核心技术。通过共享内存通信、双分区方案、Amable算法等创新手段,显著提升算子性能。训练营提供0基础到进阶的系统课程,完成认证可获华为开发者证书及丰厚奖品。报名链接:https://www.hiascend.com/d

2025-10-23 12:43:05 1157

原创 Meetup(NN算子)

昇腾AI芯片架构深度解析:NPU核心由AI Core计算单元、内存层次(L1/L2缓存)和数据流控制器组成,专为矩阵计算优化。Cube计算单元实现16×16×16并行计算,理论算力达8TFLOPS(FP16)。内存层次包括多级缓存,数据流通过DMA控制器实现高效搬运。理解这一架构是性能优化的基础,开发者需掌握硬件特性才能充分发挥算力潜力。

2025-10-23 12:39:33 1281

原创 Meetup(CV算子)

本次CANN算子开源周Meetup的CV算子专场,系统介绍了昇腾AI处理器的CV算子架构、实现原理和性能优化实践。分层架构设计:从基础算子到专业应用算子的完整视觉处理流水线硬件特性深度利用:Scalar、Vector和Cube三类计算单元的合理使用优化创新:通过向量化、矩阵化和分块策略实现显著性能提升实践价值:提供了从算法原理到硬件优化的完整技术路径这些技术成果体现了软硬协同优化的核心理念,为AI应用在昇腾平台上的高效运行提供了坚实基础。

2025-10-23 12:36:00 1326

原创 从基础到实操,一站式掌握Ascend C编程

Ascend C编程训练营摘要 核心内容 训练营介绍:2025年昇腾CANN训练营第二季提供0基础入门、码力全开特辑等课程,助力开发者获得Ascend C算子中级认证 技术架构:详解Ascend软硬件架构,包括AICPU、AI Core组件及数据搬运机制 编程模型:采用SPMD模型,支持自动并行调度,核函数开发包含CopyIn/Compute/CopyOut三阶段 实战案例:以向量加法为例展示开发流程,双缓冲优化可提升30%性能 开发流程:包含算子分析、接口定义、核函数实现等完整步骤 学习收获 通过系统学习

2025-10-22 20:12:21 924

原创 CV算子硬件计算单元科普

本文介绍了昇腾NPU中的三种计算单元:Scalar(单点计算,灵活但效率低)、Vector(向量并行,性能提升128倍)和Cube(矩阵运算,性能提升数千倍)。它们各具特点,适用于不同场景。文章阐述了如何协同使用这三种单元优化算子性能,包括计算模式分析、数据规模考量及内存访问优化等策略。理解这些硬件特性是开发高性能算子的关键,Scalar适合控制逻辑,Vector处理向量运算,而Cube则专为矩阵计算设计,共同构成NPU的强大算力基础。

2025-10-21 11:52:00 924

原创 CV算子实践指南

摘要:2025年昇腾CANN训练营第二季推出系列专题课程,助力开发者提升算子开发技能。CANN已支持主流CV算子并持续扩展,提供FP16等低精度支持。开发者可通过新星计划和AI专区获取免费算力资源,社区提供多层次学习路径。基础算子仍有优化空间,开源促进生态发展。计算单元选择需根据算子特性决定,社区为开发者提供全面支持体系,推动NPU算子开发实践。

2025-10-21 11:50:27 616

空空如也

空空如也

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

TA关注的人

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