**Phobos** 是一种基于研究的极简内核语言,旨在通过抽象硬件复杂性来简化 GPU 编程。Phobos 受 Triton 启发,以“一等块(first-class tiles)”为核心,允许开发者针对二维数据块而非单个线程来定义计算。
该项目流水线使用 Rust 通过基于 MLIR 的堆栈编译代码,并将其降级为 NVIDIA GPU 的 PTX 指令。主要特性包括:
* **隐式优化**:编译器自动处理分块(tiling)、合并(coalescing)和线程束级优化,使开发者能够专注于高层张量运算。
* **自动调优**:它通过基准测试各种配置,采用暴力搜索法来寻找最佳分块参数(例如 `TILE_M`、`TILE_K`)。
* **分布式潜力**:该语言具有无标度特性。通过使用 `@cluster` 属性,同一个抽象语法树(AST)可以被重新解释,将大型“超块(supertiles)”分布到多个节点上,并依赖块有向无环图(tile-DAG)进行依赖管理,而非显式同步。
尽管 Phobos 主要是一个学习项目,但在 RTX 2080 Super 上运行 SGEMM 时,它已经能达到 cuBLAS 约 76% 的性能。该项目成功展示了一条从高层源代码到低层 GPU 执行的清晰路径,证明了稠密张量代数可以有效地建模为基于任务的异步系统。
排版爱好者经常将名为“花饰”(fleurons)的装饰性 Unicode 符号融入数字设计中。然而,由于 Unicode 双向算法的存在,使用这些符号可能会引发意想不到的排版问题。
作者在使用摩尼教标点符号(𐫱)时就遇到了这种情况,该符号在 Unicode 中被归类为“从右向左”(R)。由于该字符具有很强的方向性,它会无意中重新排列周围的“弱”元素(如数字),导致其显示顺序错误。
这种情况的发生是因为网络浏览器使用复杂的双向规则来处理混合语言文本。幸运的是,开发者可以通过将花饰与周围文本隔离来覆盖这种行为。使用 HTML `<bdi>` 标签或 CSS 属性 `unicode-bidi: bidi-override;` 可以强制浏览器独立处理该符号,确保其在渲染时不会干扰相邻文本的排版。随着独特且鲜为人知的 Unicode 符号在博客设计中越来越受欢迎,掌握这些方向属性对于保持排版的一致性至关重要。
Meta 已紧急撤回其新的 AI 图像生成功能“Muse Image”,此前该功能因隐私和用户许可问题引发了广泛抵制。该工具允许 Meta AI 聊天机器人用户利用公开 Instagram 账号的内容来生成或修改图像,因其在未经用户许可的情况下默认将用户纳入使用范围而遭到批评。
包括好莱坞工会 SAG-AFTRA 和隐私倡导者在内的批评人士谴责该功能剥削个人数据,并威胁到肖像权。该工会将 Meta 撤回工具的决定视为一场重大胜利。
Meta 承认其“未达到预期”,并表示已听取了关于用户控制权的反馈。尽管该公司原本打算将此功能作为 Instagram 的一项创意工具,但此前曾表示计划将类似的 AI 功能扩展至 Facebook、WhatsApp 和 Messenger。目前,该公司已叫停该功能,并拒绝就其未来的开发作进一步评论。
本指南详细介绍了如何使用 ESP32 和 **iroh** 网络库构建一个不依赖云平台的智能风扇。通过利用 iroh 的中继功能,用户无需中央云服务器,即可通过基于 WebAssembly 的浏览器界面从任何地方控制该设备。
**主要组件包括:**
* **硬件:** 一个 ESP32(建议配备 PSRAM),搭配 DHT22 温度传感器和一个 5V PWM 控制的风扇。
* **网络:** 系统使用存储在非易失性内存中的持久化端点 ID。Iroh 通过基于中继的票据(tickets)处理连接,在保持局域网通信的同时实现全球访问。
* **协议:** 使用 `irpc` 定义的自定义 RPC 来管理数据交换。该协议专为迭代升级而设计,允许在不破坏旧版本客户端的情况下添加新功能(例如设置风扇阈值)。
* **界面:** 基于浏览器的 GUI 允许用户查看实时传感器数据并管理风扇设置。安全控制通过 API 密钥实现,同时保持只读访问权限的开放。
本项目展示了 iroh 如何通过将 ESP32 转变为一个独立且可全球访问的嵌入式设备来简化物联网开发,让硬件集成变得像“乐高”积木一样模块化。
本文认为,用户态的抢占应被视为一种“沉没成本”(类似于垃圾回收),并可借此简化无锁编程。作者特别提出,利用中断处理机制以及 `IRET`(中断返回指令)的序列化特性,能够构建高效、低开销的同步原语。
作者介绍了两个主要应用:
1. **事件计数(Event Counts):** 通过在版本计数器中嵌入“睡眠标志位”,无锁代码可以与操作系统阻塞机制(如 futex)集成,从而避免高 CPU 消耗的自旋。通过在快速路径上使用非原子指令并依赖中断驱动的排序,作者在单生产者场景下实现了近乎零开销的性能。
2. **非对称屏障(Asymmetric Barriers):** 针对危险指针(hazard pointers)和纪元回收(epoch reclamation)等内存回收技术,作者提出了 `barrierd`,这是一个通过 eBPF 跟踪中断时间戳的守护进程。相比 `membarrier` 系统调用,这提供了一种低延迟的替代方案,允许线程在无需昂贵的核间中断(IPI)的情况下,等待全系统的内存可见性。
作者总结道,尽管有界 TSO(Bounded TSO)等技术能以极低延迟提供活性,但基于中断的方法能为非对称同步提供可靠的时间边界,将抢占带来的麻烦转化为一种有用的“预付费”屏障资源。