从Scheme操纵Numpy

By guenchi at 2018-12-14 • 1人收藏 • 380人看过


https://github.com/guenchi/Darkart


欢迎大家试用,之后会进一步包装,让跨语言调用更容易。


希望大家对Chez Scheme的发展更有信心,以前说库少是很大一部分人看不起Scheme的理由,随着FLI的发展,将会支持从Chez Scheme调用大多数语言的库。以后库的数量可以直接碾压Clojure。


关于调用Python库的效率问题:

  1. 调用时大多数计算是放在底层C/Fortran库,中间Python的运算量并不大。

  2. Chez对Python数据进行操作时,基本只是传递指针,并不会频繁的跨语言传值和拆装PythonObject,所以并不比Python调用这些库多消耗多少。

  3. 一些数据准备从Python移到了Chez这边,所以总体看来甚至可能比Python原生更快。

  4. 可以从Chez分线程开多个Python库并行,完美规避GIL限制。

3 个回复 | 最后更新于 3 天前
2018-12-14   #1

加油!!!!~~~

2018-12-30   #2

第一版已经可以运行了


测试结果来看 比Python直接调用Numpy要快


最近一个星期300个提交了... 


每天只睡了3-4小时..


不过成效显著 现在项目已经被好几个大佬关注了

3 天前   #3

你好,我对Lisp的科学计算库非常感兴趣,虽然我用的是Common Lisp。

关于Numpy的子矩阵有几个细节问题请教一下,,虽然不是lisp相关问题,还是希望不吝赐教。


  1. 在复制一个矩阵的子矩阵到一个新的矩阵的时候,Numpy是用C程序的函数直接复制,还是同python复制的?比如一个5x5矩阵A,令B = np.array (A[1:3:2, 0:4:4])这种操作,新生成的B的数据是用python从A中复制过去的,还是有C的函数?

  2. 在对子矩阵做线性代数的时候,是先复制出一个新的矩阵然后调用BLAS和LAPACK,还是直接在原矩阵上调用呢?因为有些时候LAPACK和BLAS的函数可能不能刚好从原矩阵中扣出想要的子矩阵,所以我怀疑是先复制出一个矩阵。

登录后方可回帖

登 录
信息栏

Scheme中文社区

推荐实现 ChezScheme / r6rs / r7rs large
theschemer.org
Q群: 724577239

精华导览

社区项目

包管理器:Raven
HTTP服务器:Igropyr (希腊火)
官方插件:vscode-chez

社区目标:

完善足以使Scheme工程化和商业化的库,特别是开发极致速度的Web服务器和ANN模块。

一直以来Scheme缺少一个活跃的中文社区,同时中文资料的稀少,导致大多数因为黑客与画家和SICP而接触Scheme的朋友,在学完SICP后无事可做,不能将Scheme转换为实际的生产力。最后渐渐的放弃。
同时Chicken等实现,却因效率问题无法与其他语言竞争。本社区只有一个目的,传播Scheme的文明之火,在最快的编译器实现上,集众人之力发展出足够与其他语言竞争的社区和库。


友情链接:

Clojure 中文论坛
函数式·China


Loading...