zoukankan      html  css  js  c++  java
  • 调用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
    

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

  • 相关阅读:
    第七周java学习总结
    第六周java学习总结
    20175206迭代与JDB测试
    第五周java学习总结
    实验一 Java开发环境的熟悉(Linux + Eclipse)
    第四周java学习总结
    第三周java学习总结
    es6零基础学习之项目目录创建(一)
    软键盘影响页面布局之定位
    当input的框全部不为空时,提交按钮变色
  • 原文地址:https://www.cnblogs.com/li12242/p/6407239.html
Copyright © 2011-2022 走看看