标签: 软件

  • 让你的 Windows 11 飞起来:ReadyBoost 助力加速

    你是否觉得你的 Windows 11 运行速度有点慢?你是否想要让你的电脑更快地启动,更流畅地运行?别担心,今天我们就来介绍一个简单易用的方法,那就是 ReadyBoost

    ReadyBoost 是 Windows 系统内置的一项功能,它可以利用 USB 闪存盘或 SD 卡来加速你的硬盘。简单来说,ReadyBoost 会将你经常使用的数据缓存到你的 USB 设备上,这样当你下次需要这些数据时,就可以更快地从 USB 设备上读取,而不是从硬盘上读取,从而提高系统速度。

    ReadyBoost 如何工作?

    ReadyBoost 的原理其实很简单,它就像一个高速缓存,将你经常使用的数据存储在更快的 USB 设备上,这样当你需要这些数据时,就可以更快地获取。

    ReadyBoost 适合哪些人?

    如果你使用的是机械硬盘(HDD),那么 ReadyBoost 可以显著提高你的电脑速度。但是,如果你使用的是固态硬盘 (SSD),那么 ReadyBoost 的效果可能并不明显,因为 SSD 本身已经非常快了。

    如何启用 ReadyBoost?

    1. 确保你的电脑运行的是 SuperFetch 或 SysMain 服务
    • 打开 运行 对话框 (Windows + R. ,输入 services.msc 并按回车键打开 服务管理器
    • 找到 SuperFetchSysMain 服务,查看它是否正在运行。
    • 如果服务没有运行,右键单击它,选择 属性
    • 启动类型 设置为 自动,然后点击 启动 按钮,最后点击 确定应用 保存更改。
    1. 连接你的 USB 闪存盘或 SD 卡
    • 将你的 USB 闪存盘或 SD 卡插入电脑的 USB 端口,确保它出现在你的桌面。
    1. 启用 ReadyBoost
    • 打开 文件资源管理器 (Windows + E. 。
    • 在左侧窗格中点击 此电脑,右键单击你的 USB 闪存盘,然后选择 属性
    • 点击 ReadyBoost 选项卡,等待 Windows 检查你的 USB 设备是否兼容 ReadyBoost。
    • 选择 使用此设备 选项,然后将 为系统速度保留的空间 滑块滑到最右边。
    • 点击 确定 按钮,然后点击 应用 即可启用 ReadyBoost 功能。

    ReadyBoost 的一些注意事项:

    • 你的 USB 闪存盘或 SD 卡需要至少 500 MB 的可用空间,并且需要有较高的数据传输速度。
    • USB 端口需要至少是 USB 2.0 标准。
    • USB 设备的随机读取速度需要至少达到 3.5 MB/s (4 KB),随机写入速度需要至少达到 2.5 MB/s (512 KB)。

    如果你的电脑没有 ReadyBoost 选项怎么办?

    如果你的电脑没有 ReadyBoost 选项,可能是因为你使用的是 SSD,或者你的 USB 设备不符合 ReadyBoost 的要求。

    ReadyBoost 并不是唯一的加速方法

    除了 ReadyBoost 之外,还有很多其他方法可以提高你的 Windows 11 速度,例如:

    • 关闭不必要的程序和服务。
    • 清理磁盘空间。
    • 优化 Windows 设置。

    总结

    ReadyBoost 是一个简单易用的加速方法,可以帮助你提高 Windows 11 的运行速度。如果你使用的是机械硬盘,并且你的 USB 设备符合 ReadyBoost 的要求,那么不妨试试 ReadyBoost,它可能会让你惊喜。

    参考文献:

  • Groovy 的秘密武器:Grape 依赖管理

    作为一名资深的coder,我经常需要使用各种各样的编程语言和工具来完成工作。其中,Groovy 语言凭借其简洁的语法和强大的功能,成为了我日常开发中的得力助手。而 Grape 依赖管理工具,则是 Groovy 的一大亮点,它让 Groovy 的使用更加便捷和高效。

    轻松添加依赖:告别手动下载

    你是否曾经为手动下载和配置各种依赖库而烦恼?Grape 的出现彻底改变了这种状况。它就像一个魔法师,只需几行代码,就能将所需的依赖库自动下载并添加到你的项目中。

    最简单的使用方式就是添加一个 @Grab 注解到你的脚本中。例如,如果你想使用 Spring ORM 库,你可以这样写:

    @Grab(group='org.springframework', module='spring-orm', version='5.2.8.RELEASE')
    import org.springframework.jdbc.core.JdbcTemplate

    这段代码会自动下载 Spring ORM 库,并将其添加到你的脚本的类路径中。你就可以直接使用 JdbcTemplate 类来操作数据库了。

    扩展你的依赖库:不仅仅是 Maven Central

    除了 Maven Central 仓库,Grape 还支持从其他仓库下载依赖库。例如,如果你想使用 Restlet 库,你可以这样写:

    @GrabResolver(name='restlet', root='http://maven.restlet.org/')
    @Grab(group='org.restlet', module='org.restlet', version='1.1.6')

    这段代码会告诉 Grape 从 Restlet 的仓库中下载 org.restlet 库。

    高级功能:排除依赖、配置 JDBC 驱动、使用 Groovy Shell

    Grape 还提供了很多高级功能,例如:

    • 排除依赖: 如果你想排除某个依赖库,可以使用 @GrabExclude 注解。
    • 配置 JDBC 驱动: 由于 JDBC 驱动的加载方式特殊,你需要使用 @GrabConfig 注解来告诉 Grape 将 JDBC 驱动依赖添加到系统类加载器中。
    • 使用 Groovy Shell: 你也可以在 Groovy Shell 中使用 Grape.grab() 方法来添加依赖库。

    探索 Grape 的奥秘:深入理解其机制

    Grape 的底层机制依赖于 Ivy,这是一个强大的依赖管理工具。它遵循 Ivy 的命名规范,使用 groupmoduleversionclassifier 来标识依赖库。

    下载的依赖库会被存储在 ~/.groovy/grapes 目录下。

    灵活使用 Grape:注解、方法调用、命令行工具

    Grape 提供了多种使用方式:

    • 注解: 使用 @Grab 注解是最常用的方式,它可以方便地将依赖库添加到脚本中。
    • 方法调用: 你也可以使用 Grape.grab() 方法来添加依赖库,这种方式更灵活,可以根据需要传递不同的参数。
    • 命令行工具: Grape 还提供了一个命令行工具,可以用来管理本地 Grape 缓存。

    总结:Grape 让 Groovy 更强大

    Grape 是 Groovy 的一大亮点,它简化了依赖管理,让 Groovy 的使用更加便捷和高效。无论是初学者还是资深开发者,都可以轻松地使用 Grape 来管理依赖库,专注于代码的编写。

    参考文献:

  • 高性能WordPress站优化技巧

    基于对本站和几个WordPress站的持续优化,有以下的技巧值得尝试:

    • PHP的pm模式切换到 ondemand 比dynamic模式快,而且不会出现卡顿;由于进程创建和退出更加积极,内存泄露也不会出问题。
    • 关闭PHP的gc,对于ondemand模式来说,GC几乎没有必要;
    • 开启sqlite object cache插件,这个插件很简单和快速;
    • 采用caddy 2 server,高性能的http/3协议支持,网站持续交互的响应延迟大大降低;
    • 定期优化MySQL的索引,尤其没有频繁写入请求的表,一定要把索引加足;
    • 插件尽可能少,尤其是缓存插件,开启object cache就足够了,浏览器页面缓存可以不开;
    • PHP 的JIT一定要打开,能快很多;
  • IPFS 的新宠:Helia,让 JavaScript 开发者拥抱去中心化

    IPFS(星际文件系统)作为一种去中心化的文件存储和分发协议,正逐渐成为 Web3 世界的基石。而 Helia 作为 IPFS 在 JavaScript 和浏览器端的现代化实现,为开发者提供了更便捷、高效的工具,让他们能够轻松地将 IPFS 集成到自己的应用中。

    Helia 的优势

    Helia 拥有以下几个关键优势:

    • 模块化: Helia 采用模块化设计,开发者可以根据自己的需求选择不同的模块组合,例如选择使用 HTTP 网关或 libp2p 进行网络连接。
    • 现代化: Helia 基于 TypeScript 开发,提供类型安全和代码提示等现代化开发体验。
    • 易用性: Helia 提供了一系列易于使用的 API,让开发者能够快速上手,将 IPFS 集成到自己的应用中。

    Helia 的应用场景

    Helia 可以应用于多种场景,例如:

    • 去中心化存储: 使用 Helia 存储网站、应用程序、数据等,避免依赖中心化的服务器。
    • 内容分发: 使用 Helia 分发内容,提高内容的可用性和安全性。
    • 去中心化应用开发: 使用 Helia 开发去中心化的应用,例如去中心化的社交网络、去中心化的存储服务等。

    Helia 的使用示例

    以下是一些使用 Helia 的示例:

    • 存储字符串:
    import { createHelia } from 'helia';
    import { strings } from '@helia/strings';
    
    const helia = await createHelia();
    const s = strings(helia);
    
    const myImmutableAddress = await s.add('hello world');
    
    console.log(await s.get(myImmutableAddress));
    // hello world
    • 存储 JSON 对象:
    import { createHelia } from 'helia';
    import { json } from '@helia/json';
    
    const helia = await createHelia();
    const j = json(helia);
    
    const myImmutableAddress = await j.add({ hello: 'world' });
    
    console.log(await j.get(myImmutableAddress));
    // { hello: 'world' }
    • 存储 DAG-JSON 对象:
    import { createHelia } from 'helia';
    import { dagJson } from '@helia/dag-json';
    
    const helia = await createHelia();
    const d = dagJson(helia);
    
    const object1 = { hello: 'world' };
    const myImmutableAddress1 = await d.add(object1);
    
    const object2 = { link: myImmutableAddress1 };
    const myImmutableAddress2 = await d.add(object2);
    
    const retrievedObject = await d.get(myImmutableAddress2);
    console.log(retrievedObject);
    // { link: CID(baguqeerasor...) }
    
    console.log(await d.get(retrievedObject.link));
    // { hello: 'world' }

    Helia 的未来

    Helia 正在不断发展,未来将会有更多功能和改进,例如:

    • 更强大的 API: 提供更丰富的 API,支持更多功能,例如文件系统操作、数据加密等。
    • 更好的性能: 优化性能,提高数据存储和检索速度。
    • 更广泛的应用: 支持更多应用场景,例如 Web3 应用、物联网应用等。

    总结

    Helia 是 IPFS 在 JavaScript 和浏览器端的现代化实现,为开发者提供了更便捷、高效的工具,让他们能够轻松地将 IPFS 集成到自己的应用中。随着 IPFS 的不断发展,Helia 将会扮演越来越重要的角色,推动 Web3 世界的构建。

    参考文献

  • 逃离中心化:星际文件系统 IPFS 的崛起

    互联网正变得越来越中心化。从域名解析到内容托管,再到路由和证书颁发,越来越多的服务都集中在少数几家大型公司手中。这种中心化趋势带来了单点故障风险,一旦这些公司出现问题,整个互联网都可能陷入瘫痪。2013 年亚马逊电商平台的宕机事件就是一个典型的例子,每分钟的损失超过 66000 美元。

    为了解决这个问题,近年来兴起了一场“网络去中心化”技术运动,旨在赋予用户更多控制权。IPFS (星际文件系统) 就是这场运动中的重要一员。IPFS 是一个完全去中心化的、内容寻址的媒体对象存储和检索平台。 它将内容的名称与其存储位置分离,并依赖去中心化的对等网络来索引和存储数据,从而避免了单一实体对网络的控制。

    IPFS 的核心概念

    IPFS 的设计基于四个主要概念:

    • 内容寻址: IPFS 使用基于哈希的内容标识符 (CID) 来标识数据,而不是使用传统的基于位置的地址。这意味着数据可以由任何对等点提供,而无需依赖特定的服务器。
    • 去中心化对象索引: IPFS 使用去中心化的 P2P 覆盖网络来索引对象的可用位置,即使一些节点失效,也不会影响数据的访问。
    • 不可变性及自认证: IPFS 使用加密哈希来自认证对象,确保数据的完整性和真实性,无需依赖证书颁发机构。
    • 开放参与: 任何人都可以部署 IPFS 节点并参与网络,无需特殊权限。

    IPFS 如何工作?

    IPFS 通过以下步骤发布和检索内容:

    1. 内容发布: 当用户将数据导入 IPFS 时,数据会被分割成块,每个块都会被分配一个唯一的 CID。然后,IPFS 会构建一个 Merkle DAG (默克尔有向无环图) 来存储这些块,并生成一个根 CID,代表整个数据的标识符。
    2. 提供者记录: 为了让其他用户找到数据,发布者需要生成一个提供者记录,将 CID 映射到自己的 PeerID (对等点标识符) 和 Multiaddress (网络地址)。
    3. DHT 索引: 提供者记录会被发布到一个去中心化的哈希表 (DHT) 上,DHT 会将 CID 和 PeerID 存储起来,并帮助用户找到数据。
    4. 内容检索: 当用户想要检索数据时,他们会向 DHT 发送请求。DHT 会根据 CID 找到最近的提供者记录,并返回提供者的 PeerID 和 Multiaddress。
    5. 对等点连接: 用户会连接到提供者,并使用 Bitswap 协议从提供者获取数据。

    IPFS 的优势

    IPFS 带来了许多优势,包括:

    • 名称持久性: 数据的标识符是不可变的,即使数据被复制或移动,其标识符也不会改变。
    • 文件完整性: IPFS 使用加密哈希来验证数据的完整性,确保数据没有被篡改。
    • 数据去重: IPFS 会自动识别和删除重复数据,节省存储空间和带宽。
    • 抗审查性: 由于数据分布在多个节点上,任何人都无法轻易删除或修改数据。
    • 网络分区容错性: 即使网络出现故障,IPFS 仍然可以正常工作。

    IPFS 的挑战

    IPFS 也面临着一些挑战,包括:

    • 激励机制: 目前 IPFS 缺乏有效的激励机制,导致用户参与度不高。
    • 访问控制: IPFS 默认不提供访问控制机制,需要用户自行实现。
    • 内容可用性: 由于 IPFS 是一个尽力而为的网络,无法保证所有数据都始终可用。

    IPFS 的未来

    尽管面临着挑战,IPFS 仍然拥有巨大的潜力。它有可能改变我们存储和访问数据的方式,并为互联网带来更去中心化、更安全、更可靠的未来。

    参考文献


    https://ipfs.io/ipfs/QmePKXH5VsUmRrWr5iQgz1gvf5AujoRpd9yxFtcx7CgeZ2?filename=IPFS%E5%8E%9F%E7%90%86%E8%AF%A6%E8%A7%A3.pdf


    https://ipfs.io/ipfs/QmSX6abumAo8BGGawLx2nRrKy4885oFiKEnpKec1oLKjxK?filename=IPFS%E4%B8%AD%E7%9A%84%E5%88%86%E5%B8%83%E5%BC%8F%E5%93%88%E5%B8%8C%E8%A1%A8DHT.pdf


  • 斯坦福“雷猫”:GPU 性能的秘密武器

    AI 计算需求与日俱增,如何让 GPU 充分发挥潜力成为一大难题。斯坦福大学的研究人员最近发布了一个名为“雷猫”(ThunderKittens)的工具,它可以显著提升 GPU 的运行效率,甚至比目前最快的 FlashAttention2 还要快 30%!

    雷猫的秘密武器在于它对 GPU 硬件的深度理解。研究人员从“硬件实际需要什么?如何满足这些需求?”这两个问题出发,设计了一个嵌入式 CUDA DSL 工具。雷猫通过操作小型张量块(tile)来简化 AI 内核的编写,并充分利用张量核心、异步数据传输和共享内存等硬件特性。

    H100:性能之王,如何榨干它的潜力?

    研究人员以英伟达最新的 H100 GPU 为例,深入探讨了如何优化 GPU。H100 拥有 989 TFLOPs 的半精度矩阵乘法计算能力,但要充分发挥它的能力,关键是保持张量核心持续运算。

    然而,要做到这一点并不容易。研究人员发现,H100 硬件具有一些特性,对于保持矩阵乘法的运行至关重要:

    • WGMMA 指令: H100 引入了新的指令集 WGMMA,它允许 128 个线程跨 SM 所有子单元协作同步,并从共享内存及寄存器异步启动矩阵乘法。这些指令对于充分利用 H100 的计算能力是必不可少的,没有它们,GPU 的峰值利用率会损失 37%。
    • 共享内存: 共享内存的延迟虽然看似不多,但对于高速运行的张量核心来说已经足够显著。此外,共享内存的存储单元独立,处理不当会导致 bank conflicts,显著拖慢内核速度。
    • 地址生成: H100 的张量核心和内存速度极快,仅生成用于获取数据的内存地址就占用了芯片的大量资源。英伟达提供的张量内存加速器(TMA)可以异步提取张量的一部分,大大节省了地址生成的开销。
    • 占用率: 占用率指的是 GPU 上同时调度的线程数。高占用率可以隐藏缺陷或同步问题,但一个设计良好的 pipeline 即使在占用率不高的情况下也能运行得相当快。

    雷猫:小而精,性能大提升

    为了更轻松地编写所需的内核类型,并充分发挥硬件的全部潜力,雷猫应运而生。它是一个嵌入在 CUDA 中的 DSL,包含四种模板类型:寄存器 tiles、寄存器向量、共享 tiles 和共享向量。雷猫提供了一系列操作来处理这些张量,既可在 warp 级别使用,也可用于多个 warp 协作。

    雷猫的优势在于它的小而简单,功能有限,但它符合 AI 和硬件的发展趋势。研究人员认为,AI 的设计理念应该根据硬件特性进行重新定义,例如循环状态应该足够大以适应一个 SM,计算的密度应该不低于硬件的需求。

    未来展望:AI 与硬件的深度融合

    雷猫的出现,标志着 AI 和硬件深度融合的新方向。研究人员认为,未来需要利用对硬件的了解,设计与之匹配的 AI,从而进一步提升 GPU 的性能,释放 AI 的潜力。

    雷猫的未来展望:

    • 跨平台支持: 研究人员计划将雷猫扩展到 AMD 硬件平台,进一步扩大其应用范围。
    • 更深度的硬件融合: 雷猫团队将继续研究如何更深入地利用 GPU 硬件特性,例如利用 H100 的分布式共享内存,以进一步提升性能。
    • AI 设计理念的革新: 研究人员认为,未来 AI 的设计理念应该更加贴近硬件,例如循环状态的大小应该与 SM 的容量相匹配,计算密度应该不低于硬件的需求。

    雷猫的出现,为 AI 计算领域带来了新的希望。通过深入理解硬件特性,并设计与之匹配的 AI,我们可以进一步提升 GPU 的性能,释放 AI 的潜力,为 AI 技术的进步贡献力量。

    参考文献:

    [1] https://hazyresearch.stanford.edu/blog/2024-05-12-tk


    斯坦福大学的研究人员开发了一款名为“雷猫”的新工具,它被称为GPU性能的秘密武器。这个工具可以提高GPU的运行效率,比使用FlashAttention-2(FA2)还要快。通过使用雷猫,研究人员成功地将H100 GPU的性能提升了30%[1]

    以下是关于斯坦福“雷猫”工具的一些关键信息:

    1. 工具简介:
    • 雷猫是一个嵌入式CUDA DSL工具,它可以简化AI内核的编写,并充分利用底层硬件能力[1]
    • 雷猫的主要抽象是寄存器和共享内存中的小型张量块(tile),与GPU中对小矩阵乘法的优化相匹配[1]
    1. 工具优势:
    • 使用雷猫实现的注意力机制内核,代码量少且能实现很高的硬件利用率,性能超过直接使用底层库(如Cutlass)[1]
    • 雷猫可以帮助开发者相对简单地编写代码,充分利用张量核心、异步数据传输和共享内存等硬件特性[1]
    1. H100 GPU的优化方法:
    • H100 GPU是斯坦福研究人员探讨的一个例子,用于讨论GPU的优化方法[1]
    • H100 GPU具有80GB的HBM3内存、50MB的L2缓存和132个流式多处理器(SM)等硬件细节[1]
    • 为了充分发挥H100的计算能力,关键是保持张量核心持续运算[1]
    1. 保持张量核心持续运算的注意事项:
    • WGMMA指令是保持矩阵乘法运行的关键,但使用起来较为麻烦[1]
    • 共享内存的速度可能不如预期快,需要额外注意[1]
    • 生成地址的成本较高,需要注意控制[1]
    • 保持高占用率对于提升性能是有益的,寄存器至关重要[1]

    斯坦福大学的研究人员通过这项研究和开发的“雷猫”工具,成功提高了GPU的运行效率,为AI算力资源紧张的时代提供了一种新的解决方案。这项研究对于进一步优化GPU性能和提高AI算力的利用率具有重要意义。


    Learn more:

    1. 斯坦福让“GPU高速运转”的新工具火了,比FlashAttention2更快创事记新浪科技_新浪网
    2. 斯坦福让”GPU高速运转”的新工具火了,比FlashAttention2更快 | 量子位
    3. 优化架构,降低频率,骁龙8gen2高性能、低功耗的秘密武器之一|高通|gpu|处理器|cpu|骁龙+移动平台_网易订阅

  • 斯坦福新工具“雷猫”:让 GPU 性能飙升,比 FlashAttention2 更快!

    AI 算力资源越来越紧张,如何让 GPU 充分发挥潜力成为一大难题。最近,斯坦福大学的研究人员发布了一个名为“雷猫”(ThunderKittens)的工具,它可以显著提升 GPU 的运行效率,甚至比目前最快的 FlashAttention2 还要快 30%!

    雷猫的秘密武器在于它对 GPU 硬件的深度理解。研究人员从“硬件实际需要什么?如何满足这些需求?”这两个问题出发,设计了一个嵌入式 CUDA DSL 工具。雷猫通过操作小型张量块(tile)来简化 AI 内核的编写,并充分利用张量核心、异步数据传输和共享内存等硬件特性。

    H100:性能之王,如何榨干它的潜力?

    研究人员以英伟达最新的 H100 GPU 为例,深入探讨了如何优化 GPU。H100 拥有 989 TFLOPs 的半精度矩阵乘法计算能力,但要充分发挥它的能力,关键是保持张量核心持续运算。

    然而,要做到这一点并不容易。研究人员发现,H100 硬件具有一些特性,对于保持矩阵乘法的运行至关重要:

    • WGMMA 指令: H100 引入了新的指令集 WGMMA,它允许 128 个线程跨 SM 所有子单元协作同步,并从共享内存及寄存器异步启动矩阵乘法。这些指令对于充分利用 H100 的计算能力是必不可少的,没有它们,GPU 的峰值利用率会损失 37%。
    • 共享内存: 共享内存的延迟虽然看似不多,但对于高速运行的张量核心来说已经足够显著。此外,共享内存的存储单元独立,处理不当会导致 bank conflicts,显著拖慢内核速度。
    • 地址生成: H100 的张量核心和内存速度极快,仅生成用于获取数据的内存地址就占用了芯片的大量资源。英伟达提供的张量内存加速器(TMA)可以异步提取张量的一部分,大大节省了地址生成的开销。
    • 占用率: 占用率指的是 GPU 上同时调度的线程数。高占用率可以隐藏缺陷或同步问题,但一个设计良好的 pipeline 即使在占用率不高的情况下也能运行得相当快。

    雷猫:小而精,性能大提升

    为了更轻松地编写所需的内核类型,并充分发挥硬件的全部潜力,雷猫应运而生。它是一个嵌入在 CUDA 中的 DSL,包含四种模板类型:寄存器 tiles、寄存器向量、共享 tiles 和共享向量。雷猫提供了一系列操作来处理这些张量,既可在 warp 级别使用,也可用于多个 warp 协作。

    雷猫的优势在于它的小而简单,功能有限,但它符合 AI 和硬件的发展趋势。研究人员认为,AI 的设计理念应该根据硬件特性进行重新定义,例如循环状态应该足够大以适应一个 SM,计算的密度应该不低于硬件的需求。

    未来展望:AI 与硬件的深度融合

    雷猫的出现,标志着 AI 和硬件深度融合的新方向。研究人员认为,未来需要利用对硬件的了解,设计与之匹配的 AI,从而进一步提升 GPU 的性能,释放 AI 的潜力。

    参考文献:

    [1] https://hazyresearch.stanford.edu/blog/2024-05-12-tk

    [2] https://github.com/HazyResearch/ThunderKittens

    [3] https://news.ycombinator.com/item?id=40337936


    斯坦福大学的研究人员最近发布了一个名为“雷猫”(ThunderKittens)的工具,它可以显著提升 GPU 的运行效率,比目前最快的 FlashAttention2 还要快30% [1]。雷猫是一个嵌入在 CUDA 中的 DSL 工具,通过操作小型张量块来简化 AI 内核的编写,并充分利用 GPU 硬件的特性,如张量核心、异步数据传输和共享内存等 [1]

    下面是关于雷猫和 GPU 性能提升的一些关键信息:

    雷猫:GPU 性能提升的秘密武器

    • 雷猫是一个嵌入在 CUDA 中的 DSL 工具,通过操作小型张量块来简化 AI 内核的编写,并充分利用 GPU 硬件的特性 [1].
    • 雷猫提供了四种模板类型:寄存器 tiles、寄存器向量、共享 tiles 和共享向量,用于处理张量操作 [1].
    • 雷猫的优势在于它的小而简单,功能有限,但符合 AI 和硬件的发展趋势 [1].

    GPU 性能提升的关键因素

    • GPU 硬件具有一些特性,对于保持矩阵乘法的运行至关重要 [1]:
    • WGMMA 指令:H100 GPU 引入了新的指令集 WGMMA,允许线程跨 SM 所有子单元协作同步,并从共享内存及寄存器异步启动矩阵乘法 [1].
    • 共享内存:共享内存的延迟对于高速运行的张量核心来说已经足够显著,处理不当会导致 bank conflicts,拖慢内核速度 [1].
    • 地址生成:GPU 的张量核心和内存速度极快,但生成用于获取数据的内存地址占用了大量资源,张量内存加速器(TMA)可以异步提取张量的一部分,节省了地址生成的开销 [1].
    • 占用率:高占用率可以隐藏缺陷或同步问题,但设计良好的 pipeline 即使在占用率不高的情况下也能运行得相当快 [1].

    未来展望:AI 与硬件的深度融合

    • 雷猫的出现标志着 AI 和硬件深度融合的新方向,未来需要利用对硬件的了解,设计与之匹配的 AI,进一步提升 GPU 的性能,释放 AI 的潜力 [1].

    参考文献:

    1. 比标准Attention提速5-9倍,大模型都在用的FlashAttention v2来了 | 机器之心 [1]
    2. 斯坦福大学发布的ThunderKittens工具 [1]
    3. https://news.ycombinator.com/item?id=40337936 [1]

    Learn more:

    1. 比标准Attention提速5-9倍,大模型都在用的FlashAttention v2来了 | 机器之心
    2. 通透理解FlashAttention与FlashAttention2:全面降低显存读写、加快计算速度-CSDN博客
    3. FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning | Princeton NLP Group
  • 斯坦福“雷猫”:让 GPU 高速运转,比 FlashAttention2 还快!

    AI 算力资源越来越紧张,如何提升 GPU 的运行效率成为了热门话题。斯坦福大学的研究人员近日推出了一个名为 ThunderKittens(暂且译为“雷猫”)的嵌入式 CUDA DSL 工具,它能显著提升 GPU 的性能,甚至比目前最快的 FlashAttention-2 还要快 30%。

    “雷猫”的秘密武器:小型张量块

    “雷猫”的强大之处在于它巧妙地利用了 GPU 的硬件特性。它将 AI 内核的编写简化,并充分利用底层硬件能力。具体来说,它主要抽象了寄存器和共享内存中的小型张量块(tile),这与目前 GPU 中对小矩阵乘法的优化相匹配。通过操作这些 tile,开发者可以相对简单地编写代码,充分利用张量核心、异步数据传输和共享内存等硬件特性。

    H100:如何榨干它的潜力?

    为了更好地理解“雷猫”的原理,我们以英伟达最新的 H100 GPU 为例。H100 拥有强大的计算能力,但要充分发挥它的潜力,需要克服一些挑战。

    • WGMMA 指令:H100 引入了一套新的指令集,名为“warp group matrix multiply accumulate”。这些指令对于充分发挥 H100 的计算能力至关重要,但它们的使用也颇为复杂,需要精心控制内存请求的合并和避免 bank conflicts。
    • 共享内存:共享内存的速度并不如预期快,使用时需要格外注意。处理不当可能会引发 bank conflicts,显著拖慢内核速度。
    • 地址生成:生成地址的成本较高,特别是加入复杂的交错或重排模式时,这种情况更为明显。
    • 占用率:保持高占用率对于提升性能是有益的,寄存器至关重要。

    “雷猫”:简化代码,提升性能

    为了解决这些挑战,斯坦福的研究人员开发了“雷猫”。它包含四种模板类型:寄存器 tiles、寄存器向量、共享 tiles 和共享向量。开发者可以使用这些模板类型和一系列操作来处理张量,并充分利用 GPU 的硬件特性。

    “雷猫”的优势:

    • 简化代码:使用“雷猫”编写的内核代码量更少,复杂性更低。
    • 提升性能:“雷猫”可以显著提高 GPU 的硬件利用率,性能超过直接使用底层库(如 Cutlass)。
    • 适应性强:“雷猫”作为一个嵌入到 CUDA 中的库,其提供的抽象层在遇到不支持的功能时能够很好地处理。

    未来展望:

    斯坦福的研究人员认为,小型张量块的设计理念符合 AI 和硬件的发展趋势。他们相信,未来会看到更多基于小型张量块的 AI 设计,以及硬件对小型矩阵乘法的支持。

    总结:

    “雷猫”是一个强大的工具,它可以帮助开发者更轻松地编写高效的 AI 内核,并充分发挥 GPU 的潜力。它不仅能提升 AI 模型的训练和推理速度,还能促进一系列高吞吐量应用的发展。

    参考文献:

    [1] https://hazyresearch.stanford.edu/blog/2024-05-12-tk
    [2] https://github.com/HazyResearch/ThunderKittens
    [3] https://news.ycombinator.com/item?id=40337936

  • 【油猴脚本】将网页中的IPFS链接自动转到本地的IPFS节点,以便加速加载

    【油猴脚本】将网页中的IPFS链接自动转到本地的IPFS节点,以便加速加载

    // ==UserScript==
    // @name         ipfs link redirctor
    // @namespace    http://tampermonkey.net/
    // @version      0.2
    // @description  Replaces ipfs links with user configured host
    // @author       TheDailySpank
    // @match        *://*/ipfs/*
    // @match        *://*/ipns/*
    // @match        *://*/*
    // @grant        none
    // @run-at       document-end
    // ==/UserScript==
    
    (function() {
        'use strict';
    
        var ipfsHost = "http://127.0.0.1:8080"   // default settings if running ipfs daemon on local machine
    
        // ipfs.io gateway
        // var ipfsHost = "https://ipfs.io"
    
        // Cloudflare gateway
        // var ipfsHost = "https://cloudflare-ipfs.com"
    
        var anchors = document.querySelectorAll('a');
    
        for (var i = 0; i < anchors.length; i++) {
            var regex = /.*(\/ipfs\/Qm\w.*)/g;
            anchors[i].href = anchors[i].href.replace(regex, ipfsHost + '$1');
        }
    
        var imgs = document.querySelectorAll('img');
    
        for (var i = 0; i < imgs.length; i++) {
            var regex = /.*(\/ipfs\/Qm\w.*)/g;
            imgs[i].src = imgs[i].src.replace(regex, ipfsHost + '$1');
        }
    
    })();// ==UserScript==
    // @name        New script kkgithub.com
    // @namespace   Violentmonkey Scripts
    // @match       https://raw.kkgithub.com/TheDailySpank/ipfs-redirector/master/ipfs-redirector.js*
    // @grant       none
    // @version     1.0
    // @author      -
    // @description 2024/6/7 13:07:26
    // ==/UserScript==
    

    本站图片大部分放在IPFS,如果直接加载困难,可以在本地部署IPFS节点后安装上面的油猴脚本,即可实现本地IPFS节点快速加载资源。

  • 永久关闭Windows Defender

    方法一:通过Windows安全中心关闭Windows Defender

    1. 打开Windows安全中心。你可以通过点击开始菜单并搜索”Windows安全中心”来找到它 [1]
    2. 在Windows安全中心中,点击”病毒和威胁防护”。
    3. 在病毒和威胁防护页面中,点击”病毒和威胁防护设置”。
    4. 在病毒和威胁防护设置中,将”实时保护”切换为”关”。请注意,这只是临时关闭实时保护,下次计划扫描之前不会扫描下载或安装的文件 [1]

    方法二:通过注册表编辑器禁用Windows Defender
    请注意,修改注册表可能会对系统造成损坏,因此在进行此操作之前,请务必备份注册表并小心操作。

    1. 打开注册表编辑器。你可以通过按下Win + R键,然后输入”regedit”并按Enter来打开注册表编辑器 [2]
    2. 在注册表编辑器中,导航到”HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender”路径。
    3. 如果”Windows Defender”文件夹不存在,请右键点击”Microsoft”文件夹,选择”新建”,然后选择”键”,并将其命名为”Windows Defender”。
    4. 在”Windows Defender”文件夹上右键点击,选择”新建”,然后选择”DWORD (32位)值”。
    5. 将新创建的DWORD值命名为”DisableAntiSpyware”。
    6. 双击”DisableAntiSpyware”,将数值数据设置为1,然后点击确定。
    7. 重新启动计算机。

    请注意,禁用Windows Defender可能会使您的计算机面临安全风险。建议只在特定情况下进行禁用,并在完成后重新启用它以确保计算机的安全性。


    Learn more:

    1. 关闭 Windows 安全中心中的Defender 防病毒保护 – Microsoft 支持
    2. 如何在Windows 10中关闭Windows Defender
    3. 如何完全關閉 Windows Defender (內建防毒)?Win10/Win11 都適用! | Ted聊科技
人生梦想 - 关注前沿的计算机技术 acejoy.com