我希望使用来自C的LAPACK来完成MATLAB/Octave中的rcond操作.MATLAB手册告诉我使用了dgecon,这是使用基于1的规范.
我为一个非常简单的案例写了一个简单的测试程序; [1,1; 1,0]对于此输入,matlab和octave使用rcond和1/cond(x,1)给出0.25,但在使用LAPACK的情况下,此示例程序打印0.0.对于其他情况,例如身份,它会打印正确的值.
由于MATLAB实际上是成功使用这个例程,我做错了什么?我试图破译Octave所做的事情,因为它包含了很少的成功
#include <stdio.h>
extern void dgecon_(const char *norm, const int *n, const double *a,
const int *lda, const double *anorm, double *rcond, double *work,
int *iwork, int *info, int len_norm);
int main()
{
int i, info, n, lda;
double anorm, rcond;
double w[8] = { 0,0,0,0,0,0,0,0 };
int iw[2] = { 0,0 };
double x[4] = { 1, 1, 1, 0 };
anorm = 2.0; /* maximum column sum, computed manually */
n = 2;
lda …Run Code Online (Sandbox Code Playgroud) 任何人都可以指向一个库/代码,允许我在python(numpy)中对Cholesky分解进行低级更新吗?Matlab将此功能作为一种称为"cholupdate"的功能提供.LINPACK也有这个功能,但它(据我所知)尚未移植到LAPACK,因此不能用于scipy.
我发现scikits.sparse提供了一个基于CHOLMOD的类似函数,但我的矩阵很密集.
有没有可用于python的代码,'cholupdate'的功能与numpy兼容?
谢谢!
我已经阅读了整个ATLAS安装指南,它表示构建共享(.so)库所需的只是将--shared标志传递给configure脚本.然而,当我建,唯一.so出现在我的文件lib夹是libsatlas.so和libtatlas.so,虽然指南说,应该有六人:
libatlas.so, libcblas.so, libf77blas.so, liblapack.so, libptcblas.so, libptf77blas.so
Run Code Online (Sandbox Code Playgroud)
安装后,某些测试失败,因为缺少这些库.此外,FFPACK在安装期间需要这些库.
有没有遇到过这个?我做错了什么?
TLDR:我可以在NumPy和SciPy中使用静态ATLAS/LAPACK库吗?
背景:
使用LAPACK构建ATLAS之后:
wget http://sourceforge.net/projects/math-atlas/files/Stable/3.10.1/atlas3.10.1.tar.bz2/download
wget http://www.netlib.org/lapack/lapack-3.4.2.tgz
tar -jxvf atlas3.10.1.tar.bz2
mkdir BUILD
cd BUILD
../ATLAS/configure -b 64 -Fa alg -fPIC \
--with-netlib-lapack-tarfile=../lapack-3.4.2.tgz \
--prefix=<ATLAS_INSTALL_PATH>
make
cd lib
make shared
make ptshared
cd ..
make install
Run Code Online (Sandbox Code Playgroud)
我得到以下文件BUILD/lib:
Make.inc@
Makefile
Run Code Online (Sandbox Code Playgroud)
.a 文件:
libatlas.a
libcblas.a
libf77blas.a
libptf77blas.a
libtstatlas.a
liblapack.a
libf77refblas.a
libptlapack.a
libptcblas.a
Run Code Online (Sandbox Code Playgroud)
.so 文件:
libsatlas.so*
libtatlas.so*
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是,为什么我没有.so(共享动态库)文件lapack和cblas?
我的第二个问题是,NumPy使用以下哪两个文件?
libsatlas.so*
libtatlas.so*
Run Code Online (Sandbox Code Playgroud)
最后,如果我定义:
BLAS=/path_to_BUILD/lib/libcblas.a
LAPACK=/path_to_BUILD/lib/liblapack.a
ATLAS=/path_to_BUILD/lib/libatlas.a
Run Code Online (Sandbox Code Playgroud)
并在NumPy中添加/path_to_BUILD/lib到文件中LD_LIBRARY_PATH的library_dirs变量site.cfg.NumPy和SciPy会使用我的库吗?(即使它们是静态的?).
我正在尝试在运行redhat + IBM LSF的集群中从源安装最新的octave 3.8.1.除了我自己的主目录之外,我没有其他任何地方的写访问权限,这就是我必须从源代码安装八度音程的原因.集群提供的blas和lapack不起作用,所以我必须自己构建它们.我现在已经完成了编译blas和lapack并传递了./configure,但是当我运行make时,报告错误如下:

这些都是我用来建立自己的步骤BLAS和LAPACK.BLAS ~/src/BLAS的来源是在LAPACK ~/src/lapack-3.5.0的来源进入,而八度音阶3.8.1的来源是~/src/octave-3.8.1.只有两个模块,1) pcre/8.33 2) acml/5.3.1/gfortran64加载,我编译BLAS共享库使用
gfortran -shared -O2 *.f -o libblas.so -fPIC
Run Code Online (Sandbox Code Playgroud)
和静态库使用
gfortran -O2 -c *.f -fPIC
ar cr libblas.a *.o
Run Code Online (Sandbox Code Playgroud)
然后我将共享库复制libblas.so到〜/ src/octave-3.8.1.make.inclapack的目录中的文件内容是:
####################################################################
# LAPACK make include file. #
# LAPACK, Version 3.5.0 #
# November 2013 #
####################################################################
#
SHELL = /bin/sh
#
# Modify the FORTRAN and OPTS definitions to refer to the
# …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个C库来解决线性,如果可能的话,还可以解决形式的非线性矩阵方程Ax = b.对我来说重要的是,包裹不是太大而且是免费的.速度与简单性和矩阵存储的稀疏特征无关.此外,它应该能够并行计算.由于我在数值线性代数的blas/lapack/...领域相当新,如果它包含一个很好的文档,可能还有一些例子,那就太棒了.你能推荐什么套餐吗?我有点不知所措的谷歌结果,也不知道我必须寻找的例程的名称.
我刚发现SuperLu似乎有一个非常好的文档,即使有代码片段.它是用C语言编写的,需要CBLAS.
我在 Ubuntu 14.04 上。
我本来希望这样做:
sudo apt-get install python-numpy
Run Code Online (Sandbox Code Playgroud)
会起作用,但事实并非如此......
我试图检查的方法是通过做locate blas,但没有发现任何相关的东西。
我想要一个不涉及我从源代码编译的解决方案。
理想的解决方案是使用 ubuntu 存储库。
我已经用 Eigen 实现了一段代码,我希望 Eigen 使用 BLAS 和 LAPACK 。
我在这里看到,这是可能的,但我不知道如何或将这些值/指令放在代码中的位置。
我必须在某个地方指定价值,EIGEN_USE_BLAS但我不知道在哪里。
我已经看到 Eigen 的源代码包括 BLAS 和 LAPACK 的代码,但我完全忽略它是否默认使用它或什么。我正在使用 Eigen 3.3.3。
我想打电话给CHISQ功能的累积分布函数在GSL从乐。
这是我的乐曲脚本 chisq.raku
#Calling gsl_cdf_chisq-P function in GSL from raku
use NativeCall;
sub gsl_cdf_chisq_P(num64, num64) returns num64 is native('gsl') { * };
sub gsl_cdf_chisq_Q(num64, num64) returns num64 is native('gsl') { * };
sub pchisq($q, $df, $lower-tail = True) {
my $a = $q.Num;
my $b = $df.Num;
if $lower-tail == True {
return gsl_cdf_chisq_P($a, $b)
} else {
return gsl_cdf_chisq_Q($a, $b)
}
}
say pchisq(3,4);
Run Code Online (Sandbox Code Playgroud)
执行此脚本时,出现以下错误:
Cannot locate native library '(null)': /usr/lib/x86_64-linux-gnu/libgsl.so: undefined symbol: cblas_ctrmv …Run Code Online (Sandbox Code Playgroud)