由于我之前描述的原因,我需要在 Python 中使用 LAPACK dgesvd 和 zgesvd 方法,而不是用 numpy 包装的方法。
有人指出,我可以使用 f2py 来创建我自己的 python 包。问题是,lapack 中的 dgesdd 调用了一堆其他方法,如 dbdsqr、dgelqf 以及一些 BLAS 例程,我不知道我应该如何处理。
谁能指出,在不必重新编译整个 lapack 库的情况下,创建 dgesvd python 模块的正确方法是什么?
非常感谢米莎
我一直在尝试安装 CVXOPT,它需要 LAPACK/BLAS,说实话,这简直要了我的命!
语境:
我正在尝试 SVM,因此需要 QP 求解器。CVXOPT 似乎是最好的。问题在于 LAPACK/BLAS(或 ATLAS)依赖性。
我尝试安装 ATLAS,我认为它有效,但是当尝试安装 CVXOPT 时,我仍然得到“找不到 -lblas”和“找不到 -llapack”。
所以在过去的两天里,我一直在尝试遵循http://icl.cs.utk.edu/lapack-for-windows/lapack/#libraries_mingw上的各种方法来安装LAPACK,但事实证明这是这是我曾经执行过的最困难的安装,而且我什至还没有开始尝试安装 BLAS。
问题:
有人可以:
A) 给我指点 LAPACK/BLAS 安装指南的英文翻译。或者某种简单的灌输方法(如果存在的话)。
或者
B) 给我指出一个不需要 LAPACK/BLAS 的 QP 求解器?到目前为止,我还没有找到一个更容易安装的。
谢谢!
我按照下面的网页在 linux 中安装 ATLAS + Lapack :
http://math-atlas.sourceforge.net/atlas_install/node6.html
bunzip2 -c atlas3.10.1.tar.bz2 | tar xfm - # create SRCdir
mv ATLAS ATLAS3.10.1 # get unique dir name
cd ATLAS3.10.1 # enter SRCdir
mkdir Linux_C2D64SSE3 # create BLDdir
cd Linux_C2D64SSE3 # enter BLDdir
../configure -b 64 -D c -DPentiumCPS=2400 \ # configure command
--prefix=/home/whaley/lib/atlas \ # install dir
--with-netlib-lapack-tarfile=/home/whaley/dload/lapack-3.4.2.tgz
make build # tune & build lib
make check # sanity check correct answer
make ptcheck # sanity check parallel
make time # …Run Code Online (Sandbox Code Playgroud) 我是数值线性代数的新手,我刚刚开始使用 LAPACK 和 BLAS。
是否有可以在打包存储和完整存储之间复制/转换对称矩阵的例程?
我发现了dtrttp,我可以用它来将双精度全对称矩阵转换为压缩存储。但是,这些例程适用于三角形矩阵,因此相应的dtpttr仅填充完整矩阵的三角形。我怎样才能填满另一半?
问题:将 numpy 链接到更正的线性代数库。过程太复杂了,我可能会第 6 次寻找解决方案,但我不知道出了什么问题。我在 Ubuntu 12.04.5 上。我重新安装了 blas 和 lapack,然后使用 pip 重新安装了 numpy。我在系统环境中这样做,然后也在 virtualenv 环境中尝试。所有的事情似乎都没有奏效。
这是我的numpy.__config__.show():
lapack_info:
NOT AVAILABLE
lapack_opt_info:
NOT AVAILABLE
openblas_lapack_info:
NOT AVAILABLE
blas_info:
NOT AVAILABLE
atlas_3_10_blas_threads_info:
NOT AVAILABLE
atlas_threads_info:
NOT AVAILABLE
blas_src_info:
NOT AVAILABLE
atlas_3_10_threads_info:
NOT AVAILABLE
atlas_blas_info:
NOT AVAILABLE
atlas_3_10_blas_info:
NOT AVAILABLE
lapack_src_info:
NOT AVAILABLE
atlas_blas_threads_info:
NOT AVAILABLE
openblas_info:
NOT AVAILABLE
blas_mkl_info:
NOT AVAILABLE
blas_opt_info:
NOT AVAILABLE
atlas_info:
NOT AVAILABLE
atlas_3_10_info:
NOT AVAILABLE
lapack_mkl_info:
NOT AVAILABLE
mkl_info:
NOT AVAILABLE
Run Code Online (Sandbox Code Playgroud)
这是一个非常常见的错误,根据用户的环境和历史有很多解决方案。我最近按照此处的说明完成了安装 BLAS 和 LAPACK …
我们有一个 Python 代码,其中涉及昂贵的线性代数计算。数据存储在 NumPy 数组中。该代码使用 numpy.dot 以及一些 BLAS 和 LAPACK 函数,当前可通过 scipy.linalg.blas 和 scipy.linalg.lapack 访问这些函数。当前代码是为CPU编写的。我们想要转换代码,以便一些 NumPy、BLAS 和 LAPACK 操作在 GPU 上执行。
我正在尝试确定执行此操作的最佳方法。据我所知,Numba 不支持 GPU 上的 BLAS 和 LAPACK 函数。看来 PyCUDA 可能是最佳途径,但我无法确定 PyCUDA 是否允许同时使用 BLAS 和 LAPACK 函数。
编辑:我们需要将代码移植到不同的 GPU 架构,包括 AMD 和 Nvidia。虽然 PyCUDA 似乎提供了所需的功能,但 CUDA(以及 PyCUDA)无法在 AMD GPU 上运行。
我正在编写一个 OpenCL 内核,它将涉及解决一个线性系统。目前我的内核太慢了,提高线性系统部分的性能似乎是一个很好的起点。
我还应该注意,我并不是要让我的线性求解器平行,我正在处理的问题在宏观层面上已经令人尴尬地平行了。
以下是我为使用部分旋转的高斯消元法求解 Ax=b 而编写的 C 代码,
#import <stdio.h>
#import <math.h>
#import <time.h>
#define K 50
// Solve the system Ax=b using Gaussian elimination with partial pivoting.
void linear_solve(float A[K * K], float b[K])
{
for (long j=0; j<K; j++)
{
// Begin partial pivoting.
float maxval = fabs(A[K * j + j]);
long maxrow = j;
for (long i=j+1; i<K; i++)
{
if (fabs(A[K * j + i]) > maxval)
{
maxval = fabs(A[K * j + …Run Code Online (Sandbox Code Playgroud) 我在这里定义了计算矩阵行列式的函数.但有时我会得到错误的信号.我从这个答案中建模了我的功能.
from scipy.linalg.cython_lapack cimport dgetrf
cpdef double det_c(double[:, ::1] A, double[:, ::1] work, double[::1] ipiv):
'''obtain determinant of float type square matrix A
Notes
-----
As is, this function is not yet computing the sign of the determinant
correctly, help!
Parameters
----------
A : memoryview (numpy array)
n x n array to compute determinant of
work : memoryview (numpy array)
n x n array to use within function
ipiv : memoryview (numpy array)
length n vector use within …Run Code Online (Sandbox Code Playgroud)