标签: lapack

用lapack计算倒数条件数(即rcond(x))

我希望使用来自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)

c fortran lapack

7
推荐指数
1
解决办法
2198
查看次数

dtrtrs和dtrsm之间的区别

我正在寻找一些三角形求解器,我遇到了两个求解器.一个在BLAS:dtrsm 和另一个在LAPACK:dtrtrs.从它的外观来看,它们似乎都具有共同的功能,dtrsm具有更多的功能(在解决系统之前缩放右侧).

我想知道
1)这些功能有何不同?
2)执行相同操作时哪个更快?
3)如果(2)的答案不明显,dtrsm何时建议超过dtrtrs,反之亦然?

linear-algebra blas lapack

7
推荐指数
1
解决办法
1079
查看次数

Python中的密集Cholesky更新

任何人都可以指向一个库/代码,允许我在python(numpy)中对Cholesky分解进行低级更新吗?Matlab将此功能作为一种称为"cholupdate"的功能提供.LINPACK也有这个功能,但它(据我所知)尚未移植到LAPACK,因此不能用于scipy.

我发现scikits.sparse提供了一个基于CHOLMOD的类似函数,但我的矩阵很密集.

有没有可用于python的代码,'cholupdate'的功能与numpy兼容?

谢谢!

python numpy matrix lapack factorization

7
推荐指数
2
解决办法
2628
查看次数

在ATLAS中构建共享库

我已经阅读了整个ATLAS安装指南,它表示构建共享(.so)库所需的只是将--shared标志传递给configure脚本.然而,当我建,唯一.so出现在我的文件lib夹是libsatlas.solibtatlas.so,虽然指南说,应该有六人:

libatlas.so, libcblas.so, libf77blas.so, liblapack.so, libptcblas.so, libptf77blas.so
Run Code Online (Sandbox Code Playgroud)

安装后,某些测试失败,因为缺少这些库.此外,FFPACK在安装期间需要这些库.

有没有遇到过这个?我做错了什么?

installation shared-libraries lapack atlas

7
推荐指数
1
解决办法
6615
查看次数

NumPy和SciPy.静态与动态加载

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(共享动态库)文件lapackcblas

我的第二个问题是,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_PATHlibrary_dirs变量site.cfg.NumPy和SciPy会使用我的库吗?(即使它们是静态的?).

numpy blas scipy lapack atlas

7
推荐指数
1
解决办法
1708
查看次数

如何编译lapack以便在安装八度音程时可以正确使用?

我正在尝试在运行redhat + IBM LSF的集群中从源安装最新的octave 3.8.1.除了我自己的主目录之外,我没有其他任何地方的写访问权限,这就是我必须从源代码安装八度音程的原因.集群提供的blas和lapack不起作用,所以我必须自己构建它们.我现在已经完成了编译blas和lapack并传递了./configure,但是当我运行make时,报告错误如下:

在此输入图像描述

这些都是我用来建立自己的步骤BLASLAPACK.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)

installation gcc fortran octave lapack

7
推荐指数
1
解决办法
1万
查看次数

稀疏矩阵线性和非线性方程求解器

我正在寻找一个C库来解决线性,如果可能的话,还可以解决形式的非线性矩阵方程Ax = b.对我来说重要的是,包裹不是太大而且是免费的.速度与简单性和矩阵存储的稀疏特征无关.此外,它应该能够并行计算.由于我在数值线性代数的blas/lapack/...领域相当新,如果它包含一个很好的文档,可能还有一些例子,那就太棒了.你能推荐什么套餐吗?我有点不知所措的谷歌结果,也不知道我必须寻找的例程的名称.

我刚发现SuperLu似乎有一个非常好的文档,即使有代码片段.它是用C语言编写的,需要CBLAS.

c numeric lapack

6
推荐指数
1
解决办法
3648
查看次数

使用 LAPACK/BLAS 安装 numpy 的最简单方法是什么?

我在 Ubuntu 14.04 上。

我本来希望这样做:

sudo apt-get install python-numpy
Run Code Online (Sandbox Code Playgroud)

会起作用,但事实并非如此......

我试图检查的方法是通过做locate blas,但没有发现任何相关的东西。

我想要一个不涉及我从源代码编译的解决方案。

理想的解决方案是使用 ubuntu 存储库。

python numpy blas lapack ubuntu-14.04

6
推荐指数
1
解决办法
5376
查看次数

使用 Eigen 的 BLAS 和 LAPACK

我已经用 Eigen 实现了一段代码,我希望 Eigen 使用 BLAS 和 LAPACK 。

我在这里看到,这是可能的,但我不知道如何或将这些值/指令放在代码中的位置。

我必须在某个地方指定价值,EIGEN_USE_BLAS但我不知道在哪里。

我已经看到 Eigen 的源代码包括 BLAS 和 LAPACK 的代码,但我完全忽略它是否默认使用它或什么。我正在使用 Eigen 3.3.3。

blas lapack eigen3

6
推荐指数
2
解决办法
1562
查看次数

在 Raku 中通过 NativeCall 调用 GSL 函数会引发错误

问题

我想打电话给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)

lapack gsl docker nativecall raku

6
推荐指数
1
解决办法
135
查看次数