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相关的开发, 博文中有什么不正确.不严格的地方欢迎指正哈 本文后续也许还会有删改, 就 ...
随机推荐
- spring classpath & classpath*
classpath-找到系统类路径下的第一个匹配的配置文件 classpath*-找到系统类路径下的所有符合要求的配置文件 参考资料:http://www.micmiu.com/j2ee/spring ...
- UVALive 6884 GREAT + SWERC = PORTO dfs模拟
题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...
- MapReduce:详解Shuffle过程
Shuffle过程,也称Copy阶段.reduce task从各个map task上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定的阀值,则写到磁盘上,否则直接放到内存中. 官方的Shuffl ...
- IDEA中如何使用Maven进行打包。 IDEA版本是14
说实话,找了好半天的资料,也许是我的IDEA版本太高了网上资料稀缺,所以愣是没有找到打包的方法,只是自己瞎琢磨了,还好搞出来了,记录一下. 说文字说一下大概流程,其实很简单: 创建配置文件->创 ...
- html 绘制图像
- Eddy's digital Roots
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- HDU 4612 Warm up(Tarjan)
果断对Tarjan不熟啊,Tarjan后缩点,求树上的最长路,注意重边的处理,借鉴宝哥的做法,开标记数组,标记自己的反向边. #pragma comment(linker, "/STACK: ...
- javascript大全
事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcEl ...
- C#输入的字符串只包含汉字
public bool IsAllChineseCh(string input) { Regex regex = new Regex("^[\u4e00 ...
- Layui - 示例
示例地址 http://www.layui.com/demo/ 下载地址 http://www.layui.com/ 示例代码 <!doctype html> <html> & ...