Intel Visual Fortran Compiler 11调用lapack库实现并行多处理计算
采用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, 否则可能会出现计算错误,这种情况我就遇到过。
Intel Visual Fortran Compiler 11调用lapack库实现并行多处理计算的更多相关文章
- Windows下Fortran编译Lapack库及使用的方法(转自新浪)
Lapack 是一套被非常广泛使用的线性代数计算工具库,现在的主要编写语言时 Fortran90 .Lapack 基本上可以说是速度最快的线性代数计算库,我们看看官方给出的其被应用的几个地方就可以看出 ...
- linux系统下C语言调用lapack ,blas库
在利用C语言编程,经常调用其他的软件包,其中lapack,blas库是最常用的两个库,这里讲下在linux系统下,C语言编程如何调用这两个库: 1.首先讲下blas库的调用,这里以两个向量内积函数为例 ...
- Compaq Visual Fortran生成静态库的方法及使用
Compaq Visual Fortran 6.5生成lib静态库详细方法: 打开Compaq Visual Fortran,新建Fortran Static Library工程,命名为ForLib: ...
- 16位汇编 多文件 intel汇编 编译器masm5.0 调用子程序库即静态库的自定义函数 WINDOWS
;以下是16位汇编 创建静态库,并调用静态库中的函数 ;多文件汇编格式 ;编译方法(此处用的是masm 5.0,如果是其他的编译器,有可能不能编译) ;第一种,编译方法 ;1.masm main.as ...
- visp库中解决lapack库的问题
解决的办法是——绕过去,不要用这个库: 使用中发现如下代码抛出异常: //vpTemplateTracker.cpp try { initHessienDesired(I); ptTemplateSu ...
- iOS开发:在Swift中调用oc库
先列举这个工程中用到的oc源码库: MBProgressHUD:半透明提示器,Loading动画等 SDWebImage:图片下载和缓存的库 MJRefresh: 下拉刷新,上拉加载 Alamofir ...
- windows下Qt Creator5.1.0编写程序以及调用OpenCV库
系统说明 最近使用opencv编写程序,程序编的差不多就学习使用QT加个界面,首先声明下本人的系统和使用的软件版本, 系统: windows xp QT IDE:QT Creator5.1.0 Ope ...
- C语言中复数运算及调用blas,lapack中复数函数进行科学计算
C语言中常用的数据类型主要int, float ,double ,char 等,但在科学运算中复数扮演着重要角色.这里讲下C语言中的复数运算以及如何调用blas,lapack库中的复数函数来进行科学计 ...
- 简单的调用OpenCV库的Android NDK开发 工具Android Studio
前言 本博客写于2017/08/11, 博主非专业搞安卓开发, 只是工作的需要倒腾了下Android NDK相关的开发, 博文中有什么不正确.不严格的地方欢迎指正哈 本文后续也许还会有删改, 就 ...
随机推荐
- Python读写文件乱码问题
对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...
- ffmpeg 中添加264支持
转自:http://blog.sina.com.cn/s/blog_513f4e8401011yuq.html ffmpeg 中带有264的解码,没有编码,需要添加x264: 参考百度上的“windo ...
- 讓 MySQL 能夠用 EF6
http://www.dotblogs.com.tw/yc421206/archive/2014/03/14/144395.aspx 要讓 MySQL 能夠用 EF6,我花了一點時間,在此記錄一下 安 ...
- Loadrunner模拟JSON接口请求进行测试
Loadrunner模拟JSON接口请求进行测试 一.loadrunner脚本创建 1.Insert - New step -选择Custom Request - web_custom_re ...
- C#可以做什么
C#可以做什么 学以致用.这也是大家学习C#的目标.当我们充分了解C#广阔的应用,才会激发我们最大的学习热情.下面将介绍一下C#的常见应用场景本文选自明明白白学C#大学霸. 0.2.1 开发普通软件 ...
- easyui的validatebox重写自定义验证规则的几个实例
validatebox已经实现的几个规则: 验证规则是根据使用需求和验证类型属性来定义的,这些规则已经实现(easyui API): email:匹配E-Mail的正则表达式规则. url:匹配URL ...
- BZOJ3796 : Mushroom追妹纸
将S1与S2用#号拼接在一起形成S串 将S3与S串跑KMP求出S3在S串中每次出现的位置l[i] 对于S串每个后缀i,求出f[i]表示该串不包含S3串的最长前缀 然后求出S串的后缀数组 先从小到大扫描 ...
- 响应式HTML5+CSS3 网站开发测试实践
仅仅利用media query适配样式是远远不够的,并没有考虑触屏下的行为和特有的内容组织方式的不同.简单在桌面版基础上叠加mobile版的代码,会带来请求增多.流量.性能.代码冗余等诸多方面问题.有 ...
- eclipse生成jar包
第一:普通类导出jar包,我说的普通类就是指此类包含main方法,并且没有用到别的jar包. 1.在eclipse中选择你要导出的类或者package,右击,选择Export子选项: 2.在弹出的对话 ...
- 【BZOJ】3224: Tyvj 1728 普通平衡树(某不科学的oj)
http://www.lydsy.com/JudgeOnline/problem.php?id=3224 无力吐槽,无力吐槽,无力吐槽....... bzoj竟然不能用time(0)我竟然不造!!re ...