调用clapack库注意事项
2017-02-16 19:17
127 查看
寒假期间在自己开发的模型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
若三者顺序颠倒则会报错。
相关文章推荐
- JNI调用c++注意事项
- java中调用Matlab的函数+注意事项
- 微信公众号开发调用微信接口,SPA应用注意事项
- x64系统调用API注意事项
- C++构造函数中调用另一构造函数注意事项
- 在ObjectArx中调用dll中的导出对话框或控件时的注意事项
- JAVA调用DLL的注意事项
- PHP调用shell脚本注意事项
- C#调用C++函数的注意事项
- C#调用C库的注意事项
- AIDL远程相互调用以及封装JAR的注意事项
- ava 调用 .net Webservice的一些问题和注意事项
- android studio 下调用so库时注意事项
- OTL调用存储过程/函数及注意事项
- Tcl或sh调用 exec调用管道”|”和awk的注意事项 + shell返回值如何赋值给tcl变量
- C#线程相关知识点2(线程调用注意事项)
- 【Web-Services】调用 SharePoint Web-Services 注意事项
- delphi 创建DLL文件 及其调用和注意事项
- awk中调用shell变量注意事项
- 使用JDBC调用存储过程时的注意事项