Faster floating point math with Rust's new API2 months agohttps://pythonspeed.com/articles/faster-float-math-rust/由于编译器保守地保留精确结果,浮点运算比整数运算慢。Rust 1.98 引入了代数运算符(例如 `algebraic_add`),允许对浮点数进行编译器优化。使用代数运算符的成对求和可以在保持精度的同时匹配或超越 NumPy 的速度。代数运算支持 SIMD 优化,显著减少每个值的 CPU 指令数。在算法中结合严格运算符和代数运算符可以在性能和数值精度之间取得平衡。
Why we write our own C and C++ inference engines2 months agohttps://localai.io/blog/why-we-write-our-own-engines/部署C++移植产生单个共享库(66 MiB),而不是多GB的Python虚拟环境(vLLM为9.1 GiB),内存使用可预测。vllm.cpp在各种并发级别上实现与vLLM相当的吞吐量或略有优势,输出逐token相同,峰值内存更低(24.88 GiB对比28.18 GiB)。depth-anything.cpp在CPU上运行速度比PyTorch快1.31倍,同时仅使用27%的内存,这得益于缓存了原本不必要重新计算的位置编码。face-detect.cpp和voice-detect.cpp优先确保输出精确匹配(余弦相似度1.0,像素级精度)而非速度,从而无需重新注册生物模板即可直接替换。移植方法遵循严格顺序:将权重转换为GGUF,移植带有每个组件一致性检查的计算图,仅在一致性成立后进行优化,并暴露扁平的C ABI。维护成本高:每个引擎需要自己的CI、基准测试、转换脚本以及新检查点的更新;GPU内核在卷积密集型模型上落后于调优后的cuDNN。移植是有选择性的:许多后端在已有项目(如llama.cpp、vLLM、whisper.cpp)已经出色、庞大且快速时,仍然选择封装它们。
Pulse Path – a browser puzzle where placement is the only decision2 months agohttps://pulsepathgame.netlify.app/你有两轮六条相同的链接;只是它们的位置不同。脉冲伤害起始为 10,每放置一条链接扣除 7%(达到最大削减后)。每条路径都有最大脉冲伤害;超过该值的脉冲将被丢弃。路径可以分叉、循环和重新组合;平衡的分叉可获得加成。特殊节点:双倍增强相邻相同链接,架空消除分叉损失,放大器使脉冲翻倍(注意最大值),绕过消除其后的链接扣除。目标:最大化到达底部目标的脉冲伤害。
Help, My Sin Is Slow and My FPU is Inaccurate - Bert Hubert's writings2 months agohttps://berthub.eu/articles/posts/help-my-sin-is-slow-and-my-fpu-is-inaccurate/作者在计算π的精确倍数时遇到了sin()的奇怪减速,这触发了glibc的慢路径。由于范围缩减的困难,FPU硬件指令对于大输入的三角函数不准确。Payne-Hanek-Corbett算法(1983年)在软件中解决了大角度的精确范围缩减问题。减速发生是因为代码用整数步长计算sin(2π * Hz * t),产生了π的精确倍数。截至2021年,glibc的libm已经被优化(Wilco Dijkstra的补丁),消除了这类输入的巨大减速。
MicroAlloc2 months agohttps://bogdanthegeek.github.io/blog/projects/microalloc/作者通过研究ESP-IDF堆分配器,创建了一个自定义内存分配器(MicroAlloc)。通用堆分配器需要在速度、开销和碎片化之间进行权衡。该实现采用首次适应空闲链表分配器,其元数据结构存储偏移量而非完整指针,以最小化开销(每个分配仅2字节)。嵌入式工程师通常应避免动态分配;静态分配、暂存缓冲区、块分配器和区域分配器是更安全的选择。Free()实现包含合并相邻空闲块的功能,但可通过编译时标志延迟合并以获得更佳性能。
Matt Godbolt's blog2 months agohttp://xania.org/202512/23-switching-it-up?utm_source=feed&utm_medium=rssSwitch statements can compile to jump tables, but compilers often use more clever optimizations like arithmetic or bitmasks.For dense case values, compilers may build lookup tables or use bitmasks to avoid branches entirely.For sparse values, compilers may use binary search trees of comparisons or fall back to conditional branches.Different compilers (e.g., GCC vs Clang) employ different optimization strategies for switch statements.Programmers should write clear switch statements and trust the compiler to choose the best implementation.
Before You memo() — overreacted2 months agohttps://overreacted.io/before-you-memo/Before applying memo() or useMemo(), first try to split components that change from those that don't.Solution 1: Move state down by extracting the part of the UI that depends on the state into its own component.Solution 2: Lift content up by passing unchanged parts (e.g., as children prop) to the state-dependent component to prevent re-rendering.These techniques improve code clarity and data flow, with performance as a bonus.They complement memo() and useMemo()—use the Profiler and memo() only when these simpler methods aren't enough.
Welcome to the age of decadence without pleasure2 months agohttps://www.theguardian.com/us-news/ng-interactive/2026/jul/26/age-of-decadence-...现代财富提供了丰富的消遣,但常常导致空虚和无聊,创造了一个“没有快乐的颓废”时代。历史上的颓废,比如19世纪末的颓废,涉及奢华的艺术和一种“无用快乐”的哲学,这种快乐本身就是目的。当代文化表面上模仿颓废(奢华、过度),但将快乐从属于优化和算法刺激,导致无乐趣。科技精英推崇优化体系(例如布莱恩·约翰逊的抗衰老、外貌最大化),这些体系认为快乐是可疑的,优先考虑自我提升而非感官体验。无快乐的颓废从富人阶层向下渗透,不平等将快乐变成身份象征,将乐趣化为像工作一样的例行公事。人工智能和算法通过生产空洞的内容并培养依赖性来放大这一趋势,从语言和体验中榨取快乐。一种“新颓废”可以通过艺术和正念感觉重新获得日常快乐,抵制优化,复兴具身喜悦。
GNU C Library 2.44 Released With /etc./tunables.conf, More Optimizations2 months agohttps://www.phoronix.com/news/GNU-C-Library-glibc-2.44引入了系统范围内的可调参数配置文件 /etc/tunables.conf,其持久性优于环境变量实现了经 FMA 增强的双曲余弦函数,性能提升约 35%从 CORE-MATH 项目导入了经过优化且正确舍入的数学函数为 LoongArch CPU 添加了优化,并引入了 LoongArch32 32 位支持在 AArch64 和 RISC-V 上优化了多种函数
Fable 5 vs. GPT-5.6 Sol on an NP-Hard Problem: Does /goal help?2 months agohttps://charlesazam.com/blog/fable-5-gpt-5-6-sol-goal/Claude Fable 5在NP难优化问题上表现优于GPT-5.6 Sol,展现出更优的稳定性并产出了最佳整体解决方案。/goal模式呈现混合结果:在部分测试中改善了表现,但在其他测试中引发了显著衰退。尽管在多数独立试验中获胜,却导致了平均性能的下降。研究指出/gool并非通用的'加倍努力'开关,它会改变控制循环和搜索路径,从而可能放大决策中的优劣两方面效应。
AttoChess, a complete, playable chess program for 16-bit x86 DOS in 278 bytes2 months agohttps://nicholas-afk.github.io/AttoChess/AttoChess通过重新思考棋盘显示、走棋解码和搜索循环进行优化,节省了10字节。棋盘显示直接使用int 29h中断绘制到控制台,移除了渲染缓冲区和DOS的09h功能。启动过程去除BIOS模式设置,使用确定性假设和cld指令以缩小代码体积。输入解码器将常量折叠到基地址中,利用16位指针运算和imul指令提高效率。搜索循环通过比较指针释放CX寄存器,避免从栈中重新加载深度信息。兵的行进方向通过异或操作与颜色位折叠,使两种颜色的处理共用同一路径。
From Muon to Gradient Clipping: Some Thoughts on QK Stability2 months agohttps://MasterGodzilla.github.io/posts/2025/07/muon-clip/Muon优化器在函数空间中工作,通过对权重更新的谱范数施加约束,旨在限制对任何输入的函数变化,这与Adam等参数空间优化器形成对比。将标准Muon应用于Transformer的Q和K矩阵会导致训练不稳定,因为它分别约束W_Q和W_K的更新,未能控制它们在注意力分数中的耦合乘积,这可能导致谱范数爆炸。将Muon修改用于QK的一种理论尝试是直接约束注意力分数矩阵S的变化,这引出了一个优化问题,其约束条件耦合了ΔW_Q和ΔW_K。通过三角不等式解耦这一约束并解决子问题,得到了理论上简洁的更新公式,但它需要昂贵的伪逆计算,使其不切实际。数学简化表明,梯度G_Q自然地包含W_K,这引出了一个涉及投影矩阵的几何解释,然而外部的伪逆仍然存在,未能解决计算瓶颈。通过统一的双线性矩阵B = W_Q W_K^T 来看待注意力,将Muon更新简化为单矩阵约束,但这种方法由于参数爆炸(d^2对2dh参数)而不实用。多头注意力可视为完整双线性注意力的低秩近似,这与LoRA的结构相联系,提示了开发用于参数高效微调的Muon-LoRA优化器的潜力。由于计算障碍,实际解决方案转向经验近似,如梯度裁剪或Kimi的MuonClip,这些方法利用批信息来近似最坏情况行为,从而稳定训练。
Show HN: Small World – The "Preact" of 3D Web Engines (TypeScript, WebGPU)2 months agohttps://rottensteiner-stefan.github.io/small-world/该文本描述了一种混合渲染系统,其采用优化的Cook-Torrance物理基于渲染着色,可动态编译以适应WebGL2和WebGPU。该系统包含一个零分配的有限状态机工具,通过递归更新循环原生执行行为逻辑。后处理滤镜采用专门的着色器通道,以实现夜视、VHS跟踪、画面故障和黑白电影等效果。共形反射涉及镜面几何、程序化棋盘贴图以及实时球体反演计算。八叉树交互提供了类似DOM的指针事件,由优化的O(log n)光线投射算法支持。