详解 Go 语言中的泛型单态化:它是如何在编译期与运行期间权衡性能的
如何理解 Go 语言泛型:详解单态化与字典查找的性能权衡 Go 1.18 引入泛型后,开发者在享受代码复用便利的同时,也对其底层实现产生的性能影响感到好奇。Go 并没有盲目追随 C++ 的完全单态化,也没有像 Java 那样通过类型擦除导致...
如何理解 Go 语言泛型:详解单态化与字典查找的性能权衡 Go 1.18 引入泛型后,开发者在享受代码复用便利的同时,也对其底层实现产生的性能影响感到好奇。Go 并没有盲目追随 C++ 的完全单态化,也没有像 Java 那样通过类型擦除导致...
如何利用 MUSA 运行时的显存超发机制解决大模型推理中的显存不足问题 在国产 GPU 适配的过程中,显存不足(OOM, Out of Memory)是运行大规模语言模型(LLM)时最常见的痛点。摩尔线程(Moore Threads)的 M...
如何通过 MUSA 集群进行大模型分布式训练:详解多卡互联与带宽优化 随着国产算力的崛起,摩尔线程(Moore Threads)的 MUSA 架构已成为大模型训练的重要选择。在多卡集群环境下,如何充分利用 MT-Link 互联技术并优化通信...
引言 随着国产 GPU 算力的快速发展,摩尔线程推出的 MUSA (Moore Threads Unified System Architecture) 架构因其对 CUDA 生态的高度兼容性,成为 AI 开发者实现国产化替代的首选路径之一...
如何利用华为迁移工具自动化实现 CUDA 到 CANN 的算子代码映射 随着国产算力加速卡的应用普及,将原本运行在 NVIDIA GPU 上的 CUDA 算子迁移到华为昇腾 Ascend NPU 环境已成为开发者的核心痛点。本文将详解如何利...
如何解决昇腾 NPU 上频繁创建张量导致的内存碎片问题 在将模型从 CUDA 迁移到昇腾 NPU(Ascend)时,很多开发者会遇到一个诡异现象:通过 nvidia-smi 类似的工具观察,显存(HBM)占用并没满,但程序却频繁报出 Out...
如何解决 Go 语言中接口 nil 判定的陷阱 在 Go 语言开发中,判定一个变量是否为 nil 是最基础的操作。然而,在处理接口(interface)类型时,很多开发者会遇到一个极其隐蔽的坑:一个存储了 nil 指针的接口变量,在进行 *...
如何通过 AclLite 封装大幅简化昇腾推理程序的开发流程 在国产昇腾(Ascend)芯片上进行 AI 推理开发时,开发者通常需要直接面对 CANN (Compute Architecture for Neural Networks) 的...
如何理解 Map 的哈希碰撞与扩容 在高性能编程中,Map(哈希表)是处理键值对的首选工具。然而,随着存储数据的增长,Map 如何处理键冲突以及如何平滑扩容是决定系统稳定性的关键。本文将深入解析哈希碰撞的成因及现代扩容技术的演进。 1. 哈...
如何理解 Go 1.18 之后切片的扩容机制 在 Go 语言中,切片(Slice)是使用最频繁的数据结构之一。当切片容量不足时,调用 append 函数会触发底层数组的扩容。Go 1.18 版本对扩容算法进行了重构,放弃了以往简单的 102...