嗨,我是Nabeel。在八月份,我发布了RunMat,这是一个开源的MATLAB代码运行时,它在我尝试的工作负载上已经比GNU Octave快得多。<a href="https://news.ycombinator.com/item?id=44972919">https://news.ycombinator.com/item?id=44972919</a><p>从那时起,我进一步发展了RunMat Accelerate:这个运行时现在可以自动融合操作,并在CPU和GPU之间调度工作。你只需编写MATLAB风格的代码,RunMat就会在CPU和GPU上运行你的计算,以提高速度。无需CUDA,无需内核代码。<p>在底层,它构建了一个数组数学运算的图,融合长链操作为少数几个内核,当有助于性能时将数据保留在GPU上,并在小规模情况下回退到CPU JIT/BLAS。<p>在Apple M2 Max(32 GB)上,这里是一些当前的基准测试(多次运行的中位数):<p>* 500万路径蒙特卡罗
* RunMat ≈ 0.61秒
* PyTorch ≈ 1.70秒
* NumPy ≈ 79.9秒
→ 在这个测试中,RunMat比PyTorch快约2.8倍,比NumPy快约130倍。<p>* 64 × 4K图像预处理管道
(均值/标准差,归一化,增益/偏置,伽马,均方误差)
* RunMat ≈ 0.68秒
* PyTorch ≈ 1.20秒
* NumPy ≈ 7.0秒
→ RunMat比PyTorch快约1.8倍,比NumPy快约10倍。<p>* 10亿点逐元素链(sin / exp / cos / tanh混合)
* RunMat ≈ 0.14秒
* PyTorch ≈ 20.8秒
* NumPy ≈ 11.9秒
→ RunMat比PyTorch快约140倍,比NumPy快约80倍。<p>如果你想了解更多关于融合和CPU/GPU路由如何工作的细节,我在这里写了一篇更长的文章:
<a href="https://runmat.org/blog/runmat-accel-intro-blog" rel="nofollow">https://runmat.org/blog/runmat-accel-intro-blog</a><p>你可以从GitHub仓库中运行相同的基准测试,链接在主HN页面中。欢迎反馈、报告错误以及提供“这里是它崩溃或变慢的地方”的示例。
返回首页
最新
有人告诉我,可以使用一些旧款的摩托罗拉手机来制作“刺猬”(stingray),它们能够同时进行广播和接收,这是真的吗?
我想控制我摄入的食材,但我不想每天花1到2小时在烹饪上。你有没有找到自动化烹饪的方法?比如自制设备?或者是价格昂贵的专业技术?特斯拉的机器人?<p>这似乎是可以实现的,我很惊讶市场上居然没有满足这一需求的消费产品。
频繁的内存分配在 Go 中可能会带来较高的开销。Go 的 sync.Pool 有助于对象的重用,但它并不具备类型安全性,可能会引入错误。你需要进行类型断言,而这很容易导致意外地返回对象两次或完全忘记返回它们。
SafePool 提供了类型安全性,利用 Go 的泛型,消除了对类型断言的需求,使得池的使用更加安全和清晰。
对于需要跨函数边界存活的对象,我们添加了 PoolManager。它跟踪从池中获取的所有对象,并确保在清理管理器时将它们全部返回,从而防止在函数调用之间出现内存泄漏。
我们在 Oodle AI 遇到 sync.pool 的问题后构建了这个工具,在那里,高效的内存管理对于处理高容量的遥测数据至关重要。