编辑: xiong447385 | 2013-04-22 |
1 函数库的通常组成
2 Linux命令行使用Lapack
4 IVF+VS使用MKL 目录3IVF+VS使用IMSL IVF+VS使用IMSL IMSL 在Compaq Visual Fortran 的专业版中捆绑销售,安装后自动进行了合理的配置.CVF中使用的IMSL是4.0版本,其用法简单,use IMSL 就能搞定一切. 现在主流的 IMSL 版本是7.0和6.0,主要支持 IVF.而IVF也只能使用5.0以上版本.它的使用方法已经和 4.0 截然不同.但是,依然遵循前面说过的五个内容. 注意:IMSL 是闭源库,不提供源代码,而且有 CNL和FNL的区分,也有32位和64位的区分,同时,面向不同编译器的发行也是不同的.在购买/下载的时候要注意. IVF+VS使用IMSL 我们附带了一个pdf文档它显示了 IMSL 的版本分别支持什么平台什么操作系统什么编译器什么位数很可惜的是,它几乎不支持开源的编译器 IVF+VS使用IMSL 关于32/64位数的注意:有一些 IVF64位编译器也同时提供了32位编译器(选择安装)此时,也可以同时安装32位和64位的 IMSL 库但是配置和使用时,要注意分别对待. IVF+VS使用IMSL IMSL的安装非常简单,一路下一步就可以了,可以安装在任何目录.安装好之后,我们一定要移步到安装目录,看看安装目录里面都有什么东西: 这里 include 和lib 比较重要我们需要首先告知编译器,这两个文件夹的位置 IVF+VS使用IMSL 然后,我们要把所需的模块告诉编译器告诉的方法是,use 某个模块.IMSL 从5.0 开始,统一把函数放入 numerical_libraries 模块中 注意:某些版本的IMSL有bug在use numerical_libraries 时会出错 IVF+VS使用IMSL 之后,编译就可以成功了.但是我们会遇到链接错误,我们还需要告诉编译器,所需的函数在哪里提供?我们可以用IMSL提供的包含文件,也可以直接添加lib文件到工程里这些方法是等效的: IVF+VS使用IMSL 之后,链接就可以成功了.如果你上一步使用的是 动态链接库 形式,那么可能还会遇到这种问题: 这种情况下,你还需要找到 imsl_dll.dll 的位置把这个路径添加到环境变量 path 中IVF+VS使用IMSL 总结一下,IMSL 的五步走:一定要翻一遍安装目录!!! include (mod)编译时用到 lib链接时用到 DLL Runtime Library运行时用到 路径(在哪儿?)一般只设置一次 把include的路径告知编译器 把lib的路径告知编译器 把运行时库加入系统目录或path目录 文件名(哪个?)一般每个工程都需要设置 把所需的module告知编译器 把所需的lib文件告知编译器
1 函数库的通常组成
2 Linux命令行使用Lapack
4 IVF+VS使用MKL 目录3IVF+VS使用IMSL IVF+VS使用MKL MKL 是Intel 公司出品的数学函数库,有C和Fortran接口并且MKL具有高度的汇编级优化,如果对执行效率有要求,应首选MKL MKL 吸纳了一些开源的函数库,同时也有 Intel 自身的贡献比如 Lapack,Blas,FFTW 等,都包含在 MKL 当中(并且为他们设计了 F95 接口) 我们将会用前面linux下调用lapack的代码来示范.这段代码,可以完全不修改的情况下用ifort编译,并调用MKL链接(F77接口) IVF+VS使用MKL 对于 F77 接口,不需要指定includeIntel 安装时自动指定了 lib 的路径.因此,我们只要进行一个操作即可: IVF+VS使用MKL F90 接口相比 F77 接口,更简单,函数参数更少假定形状避免了传递数组(矩阵)大小可选参数避免了不关心的输出参数但是,它需要额外的配置: IVF+VS使用MKL 在某些情况下MKL 并不直接提供 include 下的 mod 文件而是提供一个 接口源代码 ,需要用户自己去编译,得到 mod 文件 使用MKL以后,如果使用动态库的形式,也可能遇到找不到 DLL 的问题此时,我们建议用静态库形式发布.否则,应该同时发布 \redist\ia32\mkl 下的其他 DLL 总结 第三方函数库的使用,总结为 五步走:告知编译器include路径告知编译器lib路径告知编译器所需的module(include)编译错误:Error in opening the compiled module file. Check INCLUDE paths. [IMSL]告知编译器所需的lib文件无法解析的外部符号 _OPERATION_I_mp_SMI,该符号在函数 _MAIN__ 中被引用unresolved external symbol _OPERATION_I_mp_SMI告知操作系统运行时库的位置无法启动此程序,因为计算机中丢失 imsl_dll.dll ,尝试重新安装此应用程序 具体要 use 哪个module? 链接哪个 lib 文件?参考说明书,或 翻安装目录!不可照抄任何一个教程. 感谢收看! Fortran Coder Grouphttp://www.fcode.cn 还有疑问?请联系我们 下一讲:f90SQL调用数据库敬请关注 &