☆─────────────────────────────────────☆
livejt (livejt) 于 (Tue Oct 11 22:48:06 2022) 提到:
类似于矩阵计算,求特征值、线性方程组这种现成的工具?
多谢。
☆─────────────────────────────────────☆
hehao (_CTYPE) 于 (Wed Oct 12 09:00:05 2022) 提到:
GSL: gnu scientific library
【 在 livejt 的大作中提到: 】
: 类似于矩阵计算,求特征值、线性方程组这种现成的工具?
: 多谢。
☆─────────────────────────────────────☆
cjon (囧) 于 (Wed Oct 12 09:16:21 2022) 提到:
linpack
【 在 livejt 的大作中提到: 】
: 类似于矩阵计算,求特征值、线性方程组这种现成的工具?
: 多谢。
☆─────────────────────────────────────☆
rockyzhang (例如,每天爱你多一些) 于 (Wed Oct 12 10:12:10 2022) 提到:
blas?
【 在 hehao 的大作中提到: 】
: GSL: gnu scientific library
☆─────────────────────────────────────☆
dormouseBHU (dormouseBHU) 于 (Thu Oct 13 21:08:51 2022) 提到:
开源的功能最全的应该就是GSL了。不过GSL对VS编译器不太友好,自己从源代码编译会遇到好几个坑。不过现在有vcpkg了,用这个可以直接安装。
还有几本数值计算方面的书附带的源代码也不错,这里面最有名的应该是numerical recipe,国内徐世良的书也小有名气。
其他的商业库也有很多。比较有名的应该是isml和nag。
intel的mkl里面也包含了挺多矩阵相关的算法,amd也有个类似的库。
【 在 livejt 的大作中提到: 】
: 类似于矩阵计算,求特征值、线性方程组这种现成的工具?
: 多谢。
☆─────────────────────────────────────☆
livejt (livejt) 于 (Fri Oct 14 11:14:44 2022) 提到:
感谢大家的答复,谢谢。
我在考虑怎么用python的库,如numpy这种结合C来做个科学计算的程序。
【 在 dormouseBHU (dormouseBHU) 的大作中提到: 】
: 开源的功能最全的应该就是GSL了。不过GSL对VS编译器不太友好,自己从源代码编译会遇到好几个坑。不过现在有vcpkg了,用这个可以直接安装。
: 还有几本数值计算方面的书附带的源代码也不错,这里面最有名的应该是numerical recipe,国内徐世良的书也小有名气。
:
: 其他的商业库也有很多。比较有名的应该是isml和nag。
☆─────────────────────────────────────☆
dormouseBHU (dormouseBHU) 于 (Fri Oct 14 21:34:57 2022) 提到:
不如全都用python…
【 在 livejt 的大作中提到: 】
: 感谢大家的答复,谢谢。
: 我在考虑怎么用python的库,如numpy这种结合C来做个科学计算的程序。
:
☆─────────────────────────────────────☆
livejt (livejt) 于 (Sat Oct 15 08:39:17 2022) 提到:
速度太慢啊,我这个应用场景有一个环节是数亿次的往复迭代
【 在 dormouseBHU (dormouseBHU) 的大作中提到: 】
: 不如全都用python…
:
: 【 在 livejt 的大作中提到: 】
: : 感谢大家的答复,谢谢。
☆─────────────────────────────────────☆
qyli (泾渭漳淮) 于 (Sat Oct 15 09:40:45 2022) 提到:
正确的答案是blas和lapack。细说的话,这也不算一个库,算是一个标准,它提供了一系列线性代数的标准接口。具体实现有openblas,clapack之类的。但是这也不太符合楼主的问题,因为这些其实都不是纯C的库,它们多半是由C、Forthon、汇编等语言实现的。
如果觉得blas和lapack不好用的话(接口确实不好用),也可以用eigen或者armadillo,armadillo是对blas和lapack的封装,eigen可以封装lapack,也提供了自己的实现。不过它们都是C++的,不是C。
非要找纯纯的C的库的话,其实也有,比如我写的C语言基础库Morn里也有矩阵运算解方程组求特征值。在矩阵不大(比如小于100*100)的时候还比eigen之类稍快一点,但是对大规模的矩阵(几千,几万甚至更大)速度就比不上engen或者lapack了,毕竟我用纯C写人家用SIMD汇编写,比不上是正常的。
【 在 livejt 的大作中提到: 】
: 类似于矩阵计算,求特征值、线性方程组这种现成的工具?
: 多谢。
☆─────────────────────────────────────☆
dormouseBHU (dormouseBHU) 于 (Sat Oct 15 10:31:45 2022) 提到:
如果要求速度,那还是用一些商业库吧。
或者考虑GPU运算,比如cuda.
如果能用多线程,可以考虑openmp。
opencv里面有特征值计算,速度还算快。
【 在 livejt 的大作中提到: 】
: 速度太慢啊,我这个应用场景有一个环节是数亿次的往复迭代
☆─────────────────────────────────────☆
easior (潜行) 于 (Sat Oct 15 15:21:56 2022) 提到:
Intel CPU 上用 Intel MKL
龙芯上似乎该用 OpenBlas,听说这个由参与龙芯的中国人开发/维护的
【 在 livejt 的大作中提到: 】
: 速度太慢啊,我这个应用场景有一个环节是数亿次的往复迭代
☆─────────────────────────────────────☆
livejt (livejt) 于 (Sat Oct 15 22:29:56 2022) 提到:
一并感谢各位了,提供了这些参考。本人非计算机专业出生,本科期间学了点C语言的皮毛,会一点算法。现在工作中遇到一些需要做科学计算的场景,就想着做个工作提高效率。后面还会涉及到搞个GUI框架,争取半年做一个出来。
再次感谢大家。