Neanderthal 是什么网站?
更新时间
Neanderthal 是面向 Clojure 开发者的高性能矩阵与线性代数库,主打原生 CPU 和 GPU 加速。它适合已经使用 Clojure、需要在 JVM 上做大规模数值计算(矩阵运算、线性方程组、分解等)的开发者;如果你不写 Clojure,或者只是偶尔做小规模计算,它的优势并不明显。网站本身是该项目的主页,汇集了文档、教程、基准测试和社区入口。
它解决什么问题
Clojure 运行在 JVM 上,纯 Java/Clojure 实现的数值计算在大矩阵场景下性能有限。Neanderthal 的做法是:数值计算交给底层原生 BLAS 和/或 GPU 完成,Clojure 层只保留一层薄接口。按网站说法,GPU 上大矩阵运算比优化过的 Clojure/Java 库快近 3000 倍,CPU 上比优化过的纯 Java 快 100 倍。这些是项目方给出的基准数字,实际差距取决于矩阵规模、硬件和运算类型,建议用网站提供的基准测试入口自行核对。
关键特性
- 贴近 Clojure 的接口:按函数式风格设计,同时保留数值计算的现实需求,提供快速的原始类型版本
map和reduce。 - 可插拔引擎:计算引擎可替换,网站明确提到甚至可以接入纯 Java 引擎,用于不追求速度的场景。
- 尊重 BLAS/LAPACK 标准:不重新发明数值计算轮子,因此现有以 BLAS/LAPACK 为中心的教材、文章和教程中的代码与理论可以继续沿用。
- 硬件覆盖:支持 AMD、Nvidia、Intel 硬件;新闻中提到 GPU 引擎也支持 Mac OSX。
- LAPACK 支持:已提供分解与求解器(factorizations and solvers)。
适合谁
| 你的情况 | 是否适合 |
|---|---|
| 用 Clojure 做矩阵运算、线性代数 | 适合,这是核心场景 |
| 需要 GPU 加速的大矩阵计算 | 适合,但需确认你的 GPU 在支持列表内 |
| 已有 BLAS/LAPACK 背景,想迁移到 Clojure | 适合,接口与标准对齐 |
| 不写 Clojure | 不适合,库的价值绑定在 Clojure 生态 |
| 只做小规模、偶发的数值计算 | 收益有限,引入原生依赖的成本可能不划算 |
网站上有什么
- 入门与文档:Get Started 入口、完整 API 文档、若干教程。
- 基准测试:独立的 benchmarks 页面,可查看性能数据。
- 社区:Slack 的 Clojurians 群组(Uncomplicate group)、邮件列表、Twitter 账号 @Uncomplicateorg 和 @draganrocks。
- 书籍:网站提到有新书可供订阅(subscription),但未给出价格或访问限制细节,需要以站内实际页面为准。
- 支持方式:作者通过 Patreon 接受赞助,赞助者可认领一个函数命名并加入专属 Discord 讨论服务器;无法赞助的人可以申请免费邀请。
使用前要知道的
项目由 Dragan Djuric 开发维护,源码在 GitHub。由于依赖原生 BLAS/LAPACK 和 GPU 驱动,环境配置通常是主要门槛:需要先确保对应平台的本地库和驱动可用,再接入 Clojure 项目。具体安装步骤和版本要求,应以网站 Get Started 与 API 文档中的说明为准,而不是照搬通用教程。