调用clapack库注意事项
寒假期间在自己开发的模型DGOM里成功的用clapack替换了MKL,这里就介绍下遇到的几个坑,希望能够帮助别人少走弯路。
1. 调用clapack函数时注意整数类型为integer。
虽然clapack号称是c版本的lapack,实际只是为原始fortran函数添加了接口,所以调用参数的整数类型数据大小其实与fortran相同的。所以在f2c.h中提供了integer类型(long int),调用clapack的整数类型也必须为integer类型。下面给出一个简单的矩阵求逆函数main.c写法:
void Matrix_inverse(double *A, int N){
integer W = (integer) N;
integer LDA = W;
integer IPIV[W];
integer ERR_INFO;
integer LWORK = W * W;
double Workspace[LWORK];
// - Compute the LU factorization of a M by N matrix W
dgetrf_(&W, &W, A, &LDA, IPIV, &ERR_INFO);
// - Generate inverse of the matrix given its LU decompsotion
dgetri_(&W, A, &LDA, IPIV, Workspace, &LWORK, &ERR_INFO);
return;
}
2. 链接clapack blas f2c等函数库时注意链接顺序
编译后将编译好的代码进行链接时,链接库顺序其实是有要求的。最底层的函数库写在最后,依赖其他库的函数库需写在前面。如clapack中liblapack.a需要调用libf2c.a和libblas.a中一系列函数,那么链接时三者的顺序必须为
gcc main.c -ICLAPACK-3.1.1.1/INCLUDE -LCLAPACK-3.1.1.1/ -LCLAPACK-3.1.1.1/F2CLIBS -llapack -lblas -lf2c
若三者顺序颠倒则会报错。
调用clapack库注意事项的更多相关文章
- .NET 调用c++库注意事项
很久没有更新了,主要还是因为自己懒吧,希望从今天开始坚持至少一周写一篇文章. 调用函数库是正常的,调用完成后,在使用EF进行数据更新时,将发生如下异常信息,而且几乎必现. 行库遇到了错误.此错误的地址 ...
- C# 调用C++动态库注意事项
C# 调用C++动态库注意事项 最近项目上需要在C#中调用C++,期间遇到不少坑,总结如下: 1.in const char* 对应C#中string 或 IntPtr 2.out const ...
- Java调用动态库方法说明-最详细
Java不能直接调用由c或者c++写得dll(TF_ID.dll),所以只能采用jni得方法,一步一步生成符合规范得dll文件(假设叫FANGJIAN.dll),在FANGJIAN.dll这个文件里来 ...
- 空函数有参函数调用参数的注意事项Swift 1.1语言
空函数有参函数调用参数的注意事项Swift 1.1语言 7.2.3 空函数 空函数有参函数调用参数的注意事项Swift 1.1语言空函数是函数中最简单的形式.在空函数中,函数只有一个空壳,里面是没有 ...
- C#:控制台程序调用中间库创建窗体
1.类库项目引用System.Windows.Forms并添加引用后,才可创建窗体. 2.控制台应用程序调用中间库(DLL)中的方法创建窗体:中间类库使用反射下的Assembly加载包含窗体的类库及创 ...
- Android JNI如何调用第三方库
http://www.2cto.com/kf/201504/388764.html Android JNI找不到第三方库的解决方案 cannot load library 最近做一个jni项目,拿到的 ...
- C++调用C#库简单例程
有些时候,为了使用别人已经写好的C#库文件,我们需要使用C++调用C#库文件: 以下做了一简单的调用工程,步骤如下: 1.准备C#库 (dll文件) 1)创建C#库: 2)编写C#类: ...
- iOS开发:在Swift中调用oc库
先列举这个工程中用到的oc源码库: MBProgressHUD:半透明提示器,Loading动画等 SDWebImage:图片下载和缓存的库 MJRefresh: 下拉刷新,上拉加载 Alamofir ...
- Qt中调用PolarSSL库(一)
最近一直在学习SSL相关的知识,也是先了解理论相关的知识,主要是SSL相关的基本概念和连接建立过程,主要是基于PolarSSL开源库进行学习.学习完了之后就希望能给有所运用,就想用Qt写一个简单的程序 ...
随机推荐
- RabbitMQ:从入门到搞定面试官
安装 使用docker安装,注意要安装tag后缀为management的镜像(包含web管理插件),我这里使用的是rabbitmq:3.8-management 1. 拉取镜像 shell docke ...
- java中this关键字总结
1.this是一个引用,也是一个变量,存储在JVM堆内存的Java对象内部. 2.this变量中保存的内存地址指向自身. 3.this可以在实例方法中使用,this指向当前正在执行这个动作的对象(th ...
- [软工作业]-软件案例分析-CSDN
[软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...
- 大闸蟹的 O O 战记
一. 第四单元架构设计分析 第一次作业,UML类图 第一次作业的主要任务是完成对UML类图的解析并实现查询等操作,需要在课程组给定的框架中添加函数.对于UML类图,其存储是按照元素来存储的,其将所有的 ...
- Asp.net Core使用EFCore+Linq进行操作
注:EFCore和EF有区别,在core中写的也有一点区别,每个人写法不同仅供参考写的比较细致耐性一点看完会有收获的 首先加上必要的引用 using Microsoft.EntityFramework ...
- c++继承关系中成员函数的重载、重写、重定义之间的区别
1.Override.Overload.Redefine Overload 重载只能发生在类内部,不能发生在子类和父类的继承中.具体来说,如果子类中有父类同名.同返回值类型,但是不同参数列表,这两个在 ...
- 利用Ambari平台安装与部署Hadoop
* 本篇是利用Ambari平台安装与部署Hadoop,如果需要原生部署Hadoop,请点击以下地址: https://www.cnblogs.com/live41/p/15467263.html 一. ...
- Luogu P1196 [NOI2002]银河英雄传说 | 并查集
题目链接 并查集,具体看注释. #include<iostream> #include<cstdio> #include<cmath> using namespac ...
- SpringCloud微服务实战——搭建企业级开发框架(十四):集成Sentinel高可用流量管理框架【限流】
Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流.流量整形.熔断降级.系统负载保护.热点防护等多个维度来帮助开发者保障微服务的稳定性. Sentinel 具有 ...
- 攻防世界 Misc 新手练习区 gif Writeup
攻防世界 Misc 新手练习区 gif Writeup 题目介绍 题目考点 仔细联想 字符转换 Writeup 下载附件并打开 104张黑白图 发现是一堆黑色和白色的图片,按某种规律排列,猜想flag ...