lapack c语言,Visual C ++ 2010和Lapack,Blas库(Visual C++ 2010 and Lapack, Blas libraries)

lapack c语言,Visual C ++ 2010和Lapack,Blas库(Visual C++ 2010 and Lapack, Blas libraries)VisualC 2010 和 Lapack Blas 库 VisualC 2010andLapac Blaslibrarie 我想使用 Blas 和 Lapack 库来使用一些 rutines 但我不知道如何在 VisualC 2010 使用它们 如何在这种情况下使用它们 IwanttouseBl

Visual C ++ 2010和Lapack,Blas库(Visual C++ 2010 and Lapack, Blas libraries)

我想使用Blas和Lapack库来使用一些rutines,但我不知道如何在Visual C++ 2010使用它们。

如何在这种情况下使用它们?

I want to use Blas and Lapack libraries to use some rutines, however I do not know how to use them in Visual C++ 2010.

How to use them in this context?

原文:https://stackoverflow.com/questions/

更新时间:2019-12-21 17:40

最满意答案

虽然我没有使用它,但似乎LAPACK有一个C ++ DLL接口。 请参阅此站点 – 向下滚动到标题为“第2部分:在Visual(Studio)C / C ++项目中使用LAPACK子例程”的部分。

有预先构建的Windows二进制文件可用。

如果我理解正确, LASACK中包含BLAS的参考版本。

Though I haven’t used it, it appears that LAPACK has a C++ dll interface. See this site – scroll down to the section titled “Part 2: Using LAPACK subroutines in a Visual (Studio) C/C++ Project”.

There are pre-built Windows binaries available.

If I understand correctly, a reference version of the BLAS is included in LAPACK.

2011-04-20

相关问答

BLAS和LAPACK有很多实现,也没有单一的Linux版本。 在netlib.org上有一个例程接口和参考实现的规范 ,但该参考实现并不专注于特定平台(CPU,OS ……)上的最大性能。 所以,Mac库所做的是它有自己的代码来进行一些计算,这可能比参考计算更快。 它可以用与参考Fortran代码不同的编程语言编程。 您可以尝试许多其他实现:英特尔MKL,ATLAS,GotoBLAS,OpenBLAS,Sun性能库,Cray科学库等。 它们通常用C语言或特定CPU的汇编语言编写。 Appl

如果您从提到的FEX提交中查看lapack.m文件,您将看到一些关于如何使用该函数的示例: 示例:使用DGESVD进行 SVD分解: X = rand(4,3);

[m,n] = size(X);

C = lapack(‘dgesvd’, …

‘A’, ‘A’, … % compute ALL left/right singular vectors

m, n, X, m, … % input MxN matrix

ze

这里描述了在Windows 7 64位上没有用于SciPy安装的BLAS / LAPACK库的解决方案: http://www.scipy.org/scipylib/building/windows.html 安装Anaconda更容易,但您仍然不会获得英特尔MKL或GPU支持,而不需要支付(他们在MKA优化和加速Anaconda的附加组件中 – 我不知道他们是否使用PLASMA和MAGMA) 。 使用MKL优化,numpy在大矩阵计算上的表现优于IDL 10倍。 MATLAB在内部使用英特尔MK

最近,这两个来自田纳西大学的接口已经发布: https://bitbucket.org/icl/blaspp https://bitbucket.org/icl/lapackpp 使用这些本机C ++实现有一些直接的好处。 让我们考虑一个基本的通用编程示例: 想象一下,你想要缩放矢量: v = alpha*v这要归功于cblas_?scal函数。 使用cblas ,如果你想要一些“泛型”,因为它具有所有支持的标量类型( float , double , complex , compl

虽然我没有使用它,但似乎LAPACK有一个C ++ DLL接口。 请参阅此站点 – 向下滚动到标题为“第2部分:在Visual(Studio)C / C ++项目中使用LAPACK子例程”的部分。 有预先构建的Windows二进制文件可用。 如果我理解正确, LASACK中包含BLAS的参考版本。 Though I haven’t used it, it appears that LAPACK has a C++ dll interface. See this site – scroll down

我曾经有过类似的问题 ,而且看起来很可能你的代码中存在一些未定义的行为(例如double free),这是以编译器特定的方式处理的。 也许这在gcc 4.9和6.0之间改变了。 很难说如果不知道你的代码,但你可以自己使用一些工具来跟踪这个问题,例如GDB或特别是valgrind的memcheck (对我来说非常出色): valgrind –tool memcheck

这将报告代码中与内存相关的错误和未定义行为的位置。 Problem solved. 1 –

我假设,如果你是C++新手,你也是C和Fortran新手。 在那种情况下,我肯定会建议你,不要从Blas / Lapack开始,至少没有一个不错的C++ -wrapper。 我的建议是看看Eigen ,它使用原生C++代码提供了更容易的矩阵运算开始。 您可以查看他们的入门指南 。 据说Eigen性能与Blas / Lapack相当,例如他们的基准 。 但是我没有自己测试。 如果你真的想要进入低级别并使用Blas / Lapack来看看cBlas ( C Wrapper of Blas)和Lapac

根据netlib dger(M, N, ALPHA, X INCX, Y, INCY, A, LDA)执行A := alpha*x*yT + A 因此A应该全部为零以获得X和Y的外积。 According to netlib dger(M, N, ALPHA, X INCX, Y, INCY, A, LDA) performs A := alpha*x*yT + A. So A should be all zeros to get the outer product of X and Y.

实际上dgemm是为子矩阵乘法而设计的。 您只需要正确使用每个矩阵的起始指针和参数LDA , LDB , LDC 。 BLAS的C变体是: void cblas_dgemm (const CBLAS_LAYOUT layout, const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const double alpha, const double *A,

您的链接顺序错误。 在需要它们的代码之后链接库,而不是之前。 喜欢这个: gcc -o eigen eigen.c -llapack

gcc -static -o eigen eigen.c -llapack

这应解决联系问题。 为了回答随后的问题,为什么会这样,GNU ld文档说: 它在您编写此选项的命令中有所不同; 链接器按照指定的顺序搜索和处理库和目标文件。 因此, foo.o -lz bar.o’ searches library ‘在文件foo.o之后但在bar.o之前foo.o –

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226034.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午7:59
下一篇 2026年3月17日 上午8:00


相关推荐

  • 扩展欧几里德算法计算乘法逆元详解

    扩展欧几里德算法计算乘法逆元详解乘法逆元的定义 nbsp nbsp nbsp nbsp nbsp A XMODN 1 则称 X 为 A 关于模 N 的乘法逆元 注 nbsp nbsp nbsp nbsp nbsp 只有两个数互素的时候才会有乘法逆元 nbsp nbsp nbsp nbsp nbsp 两个数不互素是没有乘法逆元的 nbsp 费马小定理 利用费马小定理只能求出 N 为素数的情况下的乘法逆元 所以还是需要采用扩展欧几里德算法来计算普遍情况下的乘法逆元的情况 下面的算法是求出 n 的简化剩余集的元素个数 利用 an

    2026年3月19日
    2
  • 手机web页面调用手机QQ实现在线聊天的效果

    手机web页面调用手机QQ实现在线聊天的效果

    2021年10月21日
    81
  • vue获取当前路由的几种方式

    vue获取当前路由的几种方式vue 路由获取当前路由地址

    2026年3月18日
    1
  • 数据库之表操作

    什么是表表(TABLE)是一种结构化的文件,可用来存储某种特定类型的数据。表中的一条记录有对应的标题,标题称之为表的字段。创建表createtablestudent(idintn

    2022年3月29日
    45
  • sqlite开发图形界面_linux下sqlite3头文件

    sqlite开发图形界面_linux下sqlite3头文件哈哈,朋友编写了一款服务器web界面管理工具,使用到了SQLite数据库。SQLite介绍SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl…

    2025年10月10日
    4
  • 机器学习之类别性特征

    类别型特征原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型。Sklearn中提供了几个转换器来处理文本属

    2021年12月30日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号