寒假期间在自己开发的模型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

若三者顺序颠倒则会报错。

最新文章

  1. TcpClient 有好多坑
  2. sp_configure错误:不支持对系统目录进行即席更新。
  3. Velocity(10)——指令的转义
  4. iOS推送失败的可能问题汇总
  5. WHERE谓词对索引使用的影响
  6. 傅里叶变换 fft_generic halcon
  7. mybatis for .net
  8. 『重构--改善既有代码的设计』读书笔记----Hide Delegate
  9. JavaSE学习总结第01天_Java概述
  10. Python爬虫(一)
  11. 《html表格》
  12. cron 执行php文件
  13. 关于iconfont字体图标的使用
  14. linkin大话面向对象--闭包和回调
  15. 使用docker-compose来部署开发环境
  16. Express全系列教程之(二):Express的路由以及动态路由
  17. LeetCode算法题-Intersection of Two Arrays II(Java实现)
  18. list集合排序
  19. 二叉树的递归,非递归遍历(C++)
  20. 配置quartz数据源的三种方式

热门文章

  1. 【c++ Prime 学习笔记】第17章 标准库特殊设施
  2. Scrum Meeting 16
  3. springboot读取配置文件中的信息
  4. 在浏览器上开发GO和Vue!(基于code-server)
  5. Netty:Netty的介绍以及它的核心组件(二)—— ChannelFuture与回调
  6. CSP-S 2021 爆零记
  7. PicGo插件
  8. Centos7 误删除bin/sbin之类的恢复
  9. Linux&C网络编程————“聊天室”
  10. xxx.app已损坏无法打开、来自身份不明的开发者解决办法