问题标签 [lapacke]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
265 浏览

c - C中的Lapacke:使用dsymm,链接器错误

**编辑,包括问题末尾的更新。

当我尝试使用 LAPACKE 中的 dsymm 时,我收到“链接器命令失败”错误。(所以,可能我编译代码错误?)这是有问题的代码:

这是我得到的错误:

matrix_multiplication_attempt.c:51:10: warning: implicit declaration of function 'lapacke_dsymm' is invalid in C99 [-Wimplicit-function-declaration] info=lapacke_dsymm(side, uplo, ^ 1 warning generated. Undefined symbols for architecture x86_64: "_lapacke_dsymm", referenced from: _main in matrix_multiplication_attempt-e2c0b9.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

我对C没有经验,所以可能有一个简单的错误。非常感谢任何见解。

编辑:谢谢你,弗朗西斯,问题是 dsymm 不是 LAPACK 的一部分,而是在 BLAS 中,你的解决方案有效。现在,我更新的问题是:如何链接 LAPACKE 以便我可以在同一个文件中同时使用 LAPACKE 和 BLAS 例程?我的编译尝试之一是:

gcc matrix_multiplication_attempt.c -o matrix_multiplication_attempt -lblas -Wall -I/usr/local/opt/lapack/include -L/usr/local/opt/lapack/lib/ -llapacke

但这给出了错误 Undefined symbols for architecture x86_64: "_cblas_dsymm", referenced from: _main in matrix_multiplication_attempt-76b8f6.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

0 投票
0 回答
228 浏览

lapack - 使用 Lapack 子程序执行 Fortran 文件(程序退出代码:127)

在 CAE Linus 2013 中安装 Lapack 库后,我尝试在“Geany”中的“.sh”文件的帮助下运行一个调用 Lapack 子例程的 fortran 文件。我的程序以代码 127 退出。请帮忙!

航站楼照片: 终端窗口的照片 1 [航站楼照片][3]

错误照片错误照片

0 投票
1 回答
570 浏览

lapack - CentOS 5 中的 lapacke.h

我正在尝试创建一个使用 BLAS 和 LAPACK C 扩展的 Python 轮子。在 Ubuntu 下编译此类包需要以下系统包:

  • libopenblas-dev: (Open)BLAS 开发库
  • liblapack-dev: LAPACK 开发库
  • liblapacke-dev: LAPACK 的 C 标头

这很好用,但现在我需要在 CentOS 5 下重复这个过程。原因是我正在尝试创建一个 manylinux 轮子,推荐的方法似乎是使用旧的 CentOS 工具链来保证它可以在不同的 linux 发行版下工作.

问题是,虽然在 CentOS 5(libopenblas-dev和)中有等价物,但. 考虑到这些软件包中提供的 LAPACK 版本非常旧(3.0),这似乎是有道理的,它似乎不支持 lapacke。但正因为如此,我无法编译我的软件,因为 gcc 抱怨缺少 lapacke.h 头文件。liblapack-devopenblas-devellapack-develliblapacke-dev

我尝试过的事情:

  • 手动下载和编译更新的 LAPACK 版本(3.8.0 和 3.6.0)。我得到编译错误。
  • 直接将 lapacke.h 标头从上述 LAPACK 版本之一复制到 /usr/include。没用,可能是因为 LAPACK 版本的不同。
  • 按照官方说明添加英特尔 MKL 存储库,并将 BLAS/LAPACK 替换为 MKL。不幸的是 CentOS 5 不包含 中的--add-repo选项yum-config-manager,所以我在这里有点不知所措。
0 投票
1 回答
39 浏览

least-squares - 缓存之前调用 lapacke gelsd 的中间结果

迭代算法在每次迭代中调用 LAPACKE_sgelsd 并使用单列 B。后续调用通常使用相同的 A 矩阵。我相信一个实质性的性能改进将是缓存或在 A 矩阵没有改变的情况下重用上一次迭代的中间结果。这应该有点类似于为 B 传递多列时可能获得的收益。对吗?实施起来会有多困难,如何做到?它使用openblas。谢谢你。

0 投票
1 回答
105 浏览

c - 使用英特尔 MKL 计算 `trans(a)*inv(b)*a` 的正确方法

我正在使用英特尔的 MKL LAPACKE 和 CBLAS来计算

yn = trans(a)*inv(zt)*a + trans(b)*inv(zl)*b

其中ab是 m×n 实矩阵,ztzlm×m 复数矩阵。生成的复数矩阵yn是 n×n。

这是我的做法:

实际代码:

当我运行该测试时,它给出了一个错误

它没有显示我是否评论了第 2 次和第 4 次调用zgemm。根据我在文档中阅读的内容,参数是正确的。我尝试更改它们,但错误仍然存​​在,或者我收到错误参数的错误,例如:

那么,我的代码有什么问题?

0 投票
1 回答
71 浏览

c++ - 使用 dpbtrf 时出现分段错误

我尝试在 c++中使用 LAPACK 例程dpbtrfDocumentaton ),但总是出现分段错误。我不确定如何传递矩阵LAPACKE_dpbtrf并尝试从我发现的几个示例中复制它但没有成功。如何使下面的代码工作?

我想计算矩阵的cholesky分解

这是我尝试过的:

0 投票
1 回答
318 浏览

c++ - 如何将 OpenBlas Lapacke 与 Rcpp 一起使用

我有一些正在运行的 c++ 代码Lapacke,使用OpenBlas. 我想将此代码包含到 R 包中,并使用该Rcpp包在该函数和 R 之间传输数据。但不知何故,两人似乎并不喜欢对方。一旦我有了一个源文件#include <lapacke.h>#include <Rcpp.h>它就不再编译了。两者分别工作正常。据我所知,有一大堆错误消息Rcpp已损坏(例如/home/Alex/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/include/Rcpp/traits/traits.h:32:15: error: expected ‘)’ before ‘__extension__’).

我不知道为什么会这样。有没有办法同时使用两者?还是我应该做一些完全不同的事情?

这是一个给我错误的最小示例:

  1. 我使用创建了一个包

    /li>
  2. 我添加了一个.cpp文件以/src包含

    /li>
  3. 我添加了一个 Makvars 文件以/src包含

    /li>
  4. 编译安装

    /li>
0 投票
0 回答
194 浏览

python - 安装 slycot 后 Control.tf2ss() 出现故障

control.tf2ss() 模块在 SISO 系统上完美运行,但是一旦我安装了 slycot(这是 MIMO 系统所必需的),该函数就会返回错误(对于 SISO 和 MIMO 系统)。

一旦安装了 slycot 模块,下面的代码

返回

我在 slycot 模块上运行诊断并获得以下结果

我显然对 LAPACKE 有问题,但我似乎找不到。

预先感谢您的帮助!

0 投票
1 回答
119 浏览

c - LAPACKE 矩阵反演分段错误 C

我正在尝试使用 lapacke 库编写代码来反转 C 中的复杂矩阵。但是我遇到了一个似乎取决于矩阵大小 N 的分段错误。更重要的是,每次编译程序或触摸任何东西时,发生分段错误的大小都会有所不同。这让我觉得代码在某处试图访问分配不当或被禁止的内存。不幸的是,我不明白这是怎么发生的,因为它似乎与 LAPACKE 函数本身有关。事实上,当函数 / *MatrixComplexInv(invA,A,N);*/(其中调用 LAPACKE 函数进行反转)被注释时,不会发生分段错误。下面是可以自行编译和运行的工作代码。

0 投票
2 回答
213 浏览

c# - Intel MKL LAPACKE_dsyevd with n > 32766 --> 没有足够的内存在 LAPACKE_dsyevd 中分配工作数组

我想使用英特尔 MKL(2019 更新 2)的LAPACKE_dsyevd计算实对称矩阵的所有特征值和所有特征向量。

我在 C# 中有以下方法:

和以下测试代码:

如果n大于 32766,则会失败并显示以下错误消息:

没有足够的内存在 LAPACKE_dsyevd 中分配工作数组

我的电脑有 128 GB 的 RAM,应该足够了。我知道<gcAllowVeryLargeObjects enabled="true" />并已将其设置为 true。我也很清楚 C# 中多维数组的 65535^2 限制,请参阅2d-Array with more than 65535^2 elements --> Array dimensions exceeded supported range

顺便说一句,我可以使用 MATLAB 计算 n = 40000 或更大的矩阵的特征值分解。而且我认为 MATLAB 也在后台使用英特尔 MKLin 来计算它。

那么如何使用英特尔 MKL 在 C# 中计算非常大的矩阵(n > 40000)的特征值分解?