21 分•作者: graham33•2 个月前
在 DGX OS 上使用 Nix 尝试 DGX Spark playbook,或者在 DGX Spark 上安装 NixOS 以获得完整的 Nix 体验。该存储库提供了 USB 映像和一个 NixOS 模块,其中包含 DGX Spark 系统的设置。 这适用于 NVIDIA DGX Spark 本身以及 Asus Ascent GX10。 请参阅我在 Planet Nix 上时长 5 分钟的闪电演讲,以获取介绍:https://youtu.be/AvK_gi_snJE?si=MPKv3iiuS9B5elIE
1 分•作者: navalsaini•2 个月前
独立开发者。Schmess 是一个取消了回合制的国际象棋变体。双方玩家可以在有空位时随时移动,并且每枚棋子在移动后都会进入冷却状态。游戏在一个半尺寸的棋盘上进行,包含 100 多个谜题关卡。如果两个人用实体棋盘玩这个游戏,他们会互相刮伤手指——这大致就是游戏的节奏。 可在浏览器中游玩,无需注册。前 29 个关卡免费,其余关卡一次性解锁(3.99 美元/149 卢比)。无订阅,无广告。 这是我正在开发的几个小型棋盘变体中的第二个(半象棋是第一个,还有更多)。为一款没有回合制的游戏构建国际象棋引擎被证明是困难的部分——我已将相关的开发故事放在下面的评论中。
1 分•作者: rextio•2 个月前
大家好,HN!我来介绍一下我的实验性项目 Rextio。 Python 在人工智能和数据分析等领域被广泛应用,并且具有快速编码的优势,但由于其解释型语言的特性,常常会带来一些性能问题。 当然,也有各种替代方案来解决 Python 的速度问题。在某些情况下,Python 代码仅用于初步原型开发,而在过渡到生产环境时,开发会重新评估并使用 Rust 或 C/C++ 进行。 然而,我正在实验性地开发这个名为 Rextio 的工具,作为一种新的替代方案,旨在在不放弃 Python 的情况下解决速度问题。 Rextio 通过自动将可原生编译的 Python 热路径部分(例如带有类型提示的静态代码)转换为 Rust 代码并编译成二进制文件来提高性能。然后,它会回退到其余的原始代码,并使用 CPython 执行。这样可以在完全保留原始 Python 逻辑的同时,针对特定部分提高执行速度。 大致流程如下: ``` 类型提示的 Python 项目 -> 分析支持的原生候选 -> 拒绝不安全或不支持的函数 -> 为接受的函数生成 Rust + PyO3 -> 为其余部分生成 Python 回退包装器 -> 构建兼容导入的工件 ``` 更多详情请参阅 Git 仓库中的文档。 与仅使用 CPython 执行原始 Python 代码相比,使用 Rextio 转换的原生二进制文件执行也证实了性能的提升。 * 运行基本 Python 代码转换为原生:57.73 倍 * 运行 NumPy 转换为原生:2.52 倍 * 运行 NetworkX 的 Dijkstra 算法转换为原生:3.68 倍 * 运行 `pandas` 的 `Series.map` 转换为原生:66.14 倍 * 运行 PyTorch 深度 MLP 转换为原生:1.02 倍(由于现有 Python 包已使用 C 扩展,速度提升受限) * 运行 TensorFlow eager chain 转换为原生:1.04 倍(由于现有 Python 包已使用 C 扩展,速度提升受限) 有关产生上述结果的基准测试所使用的源代码和执行环境信息,请参阅 [`rextio-benchmark` Git 仓库](https://github.com/rextio/rextio-benchmark)。 Rextio 包含一个核心 CLI,用于转换和编译 Python 代码,我们正在开发附加插件,这些插件定义了将单个 Python 包转换为 Rust 代码的规则,并将其附加到核心 CLI。目前,我们已经开发了一些用于 NumPy 等的插件(`rextio-numpy`、`rextio-networkx`、`rextio-pandas`、`rextio-torch`、`rextio-tensorflow` 等),并且上述基准测试结果就是使用这些插件获得的。 Rextio 仍处于早期阶段,有很大的改进空间,将 Python 代码编译成基于 Rust 的原生代码并不能保证在所有情况下都能获得性能提升。 例如,如果在原生编译部分和 CPython 回退之间频繁进行数据交换,跨越边界的数据转换实际上可能会导致速度下降。但是,在这种情况下,Rextio 会尝试将整个过程回退到 CPython,而不经过原生代码,以防止这种性能下降。 如果您有任何问题或反馈,我将尽力回答并将其纳入功能改进中。 谢谢。