采用fortran进行数值计算的朋友们都应该听说过大名鼎鼎的lapack库,我就不多做介绍了,在此,我只是介绍一个编译好的lapack二进制包ACML(AMD Core Math Library),并且我强烈推荐,有几个原因:

  1. ACML是预编译好的二进制文件,省去了许多重新编译的麻烦;

  2. AMD对ACML中的许多函数针对x86构架进行了优化,执行效率很高;

  3. ACML中有专门针对SMP(不要告诉我你不知道SMP是什么东东)的库,可以实现并行多处理,如果你是多核多线程处理器的话可以最大程度发挥处理器的效能,针对我的电脑我进行了一个测试,分别链接到libacml_mp_dll.dll(支持多处理)和ibacml_dll.dll(不支持多处理),性能提高70%左右(我的只是双核U);

  4. 还有一点ACML是免费的。

  不错吧,使用lapack包的朋友们可以试试,即使你的U是intel的也没有关系,ACML通吃(这里我说明一下ACML对AMD的机器优化的较好,但对于Intel的cpu还不行,如果你是Intel的cpu还是用MKL吧,下面我对MKL的使用也做了说明),呵呵,下面针对windows 7系统我介绍一下ACML的安装和使用过程;

  前提:

  1. Intel Visual Fortran 11(考虑到所使用的win7平台,目前ivf11应该是最好的的选择了,不要给我提cvf6了,太古董了,并且cvf的ide在win7下会崩溃);

  2. Visual Studio 2008 专业版或其它,但不能是速成版,ivf真是太那个了,凭什么不支持速成版啊;

  3. acml-4-4-0-ifort32.exe,下载地址 ;

  安装步骤如下,顺序可不能错哦:

  1. 首先安装visual studio 2008 pro,选择你需要的组件,至少得包含visual c++;

  2. 安装 Intel Visual Fortran Compiler 11;

  3. 安装ACML,记着安装的位置,如我们这里是 "C:\AMD\acml4.4.0",之后我们会用到;

  4. 如果你的处理器是多核的,进入acml安装路径下,并打开ifort32_mp\lib目录,将当前目录位置复制,比如我的是 “C:\AMD\acml4.4.0\ifort32_mp\lib”;

  5. 将之前复制的路径添加到path环境变量,如下图所示:

  6. 我们先测试一下在命令行界面下的情况,新建一个fortran源文件,main.f90, 输入以下内容:

    EXTERNAL         ACMLINFO

    CALL ACMLINFO()

    STOP

    END

    在开始菜单中打开依次打开 Intel(R) Software Development Tools->Intel(R) Fortran Compiler 11.0.061->Fortran Build Environment for applications running on IA-32 输入编译命令,ifort /libs:dll -Qopenmp main.f90 c:\amd\acml4.4.0\ifort32_mp\lib\libacml_mp_dll.lib,编译成功会输出以下内容,则表示设置成功了。

  7. 接着我们在图形界面的IDE下进行配置并测试,打开Visual Studio,新建工程Intel Fortran->Console Application,然后配置编译和链接选项,点Project->Properties,在Fortran的Command Line的Additional Options中填入-Qopenmp /libs:dll,在Linker的Command Line的Additional Options中填上C:\AMD\acml4.4.0\ifort32_mp\lib\libacml_mp_dll.lib,完成后,编译工程即可。

  如果你的机器是Intel的U的话,用Intel自己的MKL中的LAPCK库效率最理想,只需要把mkl的lib路径加入到链接搜索路径,再增加几个链接库文件就可以了,使用mkl需要以下几个库文件:mkl_intel_c.lib  mkl_intel_thread.lib mkl_core.lib libiomp5md.lib。另外,使用mkl时,如果你的U为AMD的话最好禁用优化,即加上选项/Od, 否则可能会出现计算错误,这种情况我就遇到过。

最新文章

  1. PHP 汉字拼音互转
  2. 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
  3. CDS
  4. sizeof和小部分c++语法
  5. 如何使用GitHub?
  6. 模仿$.Callbacks实现
  7. WCF - IIS Hosting
  8. Ubuntu 14.04 下使用IDEA开发Spark应用 入门
  9. JAVA之File类创建对象构造函数传参数需要注意的几点
  10. MySQL root密码忘记解决
  11. 【AGC030D】Inversion Sum DP
  12. String<-->int
  13. JavaScript和Ajax部分(1)
  14. angularjs优化方略
  15. [转] mongoose学习笔记(超详细)
  16. 【23】备忘录模式(Memento Pattern)
  17. 【转】inotify+rsync实现实时同步
  18. 《DSP using MATLAB》Problem 5.8
  19. 背水一战 Windows 10 (57) - 控件(集合类): ListViewBase - 增量加载, 分步绘制
  20. jenkins坑—— shell 命令返回空导致构建失败

热门文章

  1. UVALive 6884 GREAT + SWERC = PORTO dfs模拟
  2. 【Android】Android之Action Bar
  3. Linux常用命令_(文件操作)
  4. Selenium测试规划
  5. 在Linux下搭建SVN服务器
  6. HDU2222 Keywords Search(AC自动机模板)
  7. BZOJ1092 : [SCOI2003]蜘蛛难题
  8. BZOJ3784 : 树上的路径
  9. slice、substring和substr
  10. 使用Objective-C的文档生成工具:appledoc