24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2402  |  回复: 19

[交流] [软件编译交流]如下的编译问题你了解多少?


在linux下的计算,第一步就是需要编译相应的计算软件(或许师兄师姐已经帮助编译好了),然后才是用来做具体的计算。关于软件编译,大家了解到什么程度?对于下面这几个问题,大家来测试一下吧。回答问题有金币奖励哦~欢迎补充相关问题,欢迎补充相应的答案~  
推荐一本关于makefile的文档《跟我一起写 Makefile》,大家有空看以看看,链接如下:http://www.chinaunix.net/jh/23/408225.html

一、关于ifort
1. FFLAGS =  -FR
                     -lowercase
                     -assume byterecl  
                     -heap-arrays
上述编译选项分别代表什么意义?有什么用途?(每个选项10个金币)

2. OFLAG的选项O1, O2, O3等三个优化选项分别有什么优势和劣势?怎样针对自己的体系进行选择?(每个选项10个金币)

二、关于mkl
1.对于intel64而言,下列这几个选项分别代表什么意义?起什么作用?
-lmkl_intel_lp64
-lmkl_sequential
-lmkl_scalapack_lp64  
-lmkl_blacs_openmpi_lp64
-lmkl_lapack95_lp64
-lmkl_core
-lrt
-lsvml
-limf
-lm(每个选项10个金币)

2.对于em64t而言 , 下列这几个选项分别代表什么意义?起什么作用?(每个选项10个金币)
-lmkl_em64t
-lguide
-lpthread
-limp
-lm  

三、关于mpif90
下列这几个选项分别代表什么意义?起什么作用?需要赋值的选项分别赋多大值合适?(每个选项10个金币)
-DCACHE_SIZE=4000
-DPGF90 -Davoidalloc
-DMPI_BLOCK=8000



[ Last edited by uuv2010 on 2012-2-11 at 15:16 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
顶起~~!!
2楼2012-02-11 15:11:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小木虫(金币+0.5):给个红包,谢谢回帖
uuv2010(金币+2): 多谢很好的建议!上述问题是vasp的一些编译参数,呵呵,欢迎补充问题,欢迎回答问题,非常感谢! 2012-02-11 15:39:44
怎么都是ifort的啊,并且这些都是编译VASP时重要的编译参数~
也来几个其他编译器的吧,比如PGI的或者PathScale的~仅仅是ifort的免费版可使用的范围有点小啊~
3楼2012-02-11 15:34:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
引用回帖:
3楼: Originally posted by souledge at 2012-02-11 15:34:05:
怎么都是ifort的啊,并且这些都是编译VASP时重要的编译参数~
也来几个其他编译器的吧,比如PGI的或者PathScale的~仅仅是ifort的免费版可使用的范围有点小啊~

好啊,欢迎补充具体问题啊
免费版的ifort也是很强大的,呵呵
4楼2012-02-11 15:35:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小木虫(金币+0.5):给个红包,谢谢回帖
引用回帖:
4楼: Originally posted by uuv2010 at 2012-02-11 15:35:24:
好啊,欢迎补充具体问题啊
免费版的ifort也是很强大的,呵呵

俺是说让版主补充问题,最好还能顺便提供答案……
ifort的确很强大,在x86构架的Linux中,暂时还没发现哪个编译器的兼容性能比它强的~
5楼2012-02-11 15:37:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
集思广益,共同解决问题~
6楼2012-02-11 15:41:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

锐利的碎片

木虫 (正式写手)



小木虫(金币+0.5):给个红包,谢谢回帖
不觉得有什么好讨论的,ifort 编译选项意义 用 ifort --help看就行了,引用了外部库函数当然要加库的路径。预处理参数知道就好了,你要想知道编译器在干嘛,可以讲一学期,但对计算真的没什么用。
8楼2012-02-11 17:05:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
引用回帖:
8楼: Originally posted by 锐利的碎片 at 2012-02-11 17:05:49:
不觉得有什么好讨论的,ifort 编译选项意义 用 ifort --help看就行了,引用了外部库函数当然要加库的路径。预处理参数知道就好了,你要想知道编译器在干嘛,可以讲一学期,但对计算真的没什么用。

他总是这么酷~~
11楼2012-02-13 09:07:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
★ ★
zzy870720z(金币+2): 鼓励交流,不错哦 2012-03-03 08:31:52
关于O1、O2、O3等参数,ifort的help文档是如下说明的:
-O1    optimize for maximum speed, but disable some optimizations which
       increase code size for a small speed benefit. (最大速度的优化)
-O2    enable optimizations (DEFAULT)     (增强优化,这个是默认选项)
-O3    enable -O2 plus more aggressive optimizations that may not improve
       performance for all programs  
-O0    disable optimizations (不优化)
-O     same as -O2     (默认选项,同O2)

[ Last edited by uuv2010 on 2012-2-13 at 09:30 ]
12楼2012-02-13 09:27:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

iamikaruk

木虫 (著名写手)



小木虫(金币+0.5):给个红包,谢谢回帖
uuv2010(金币+2): 是的,呵呵 2012-02-13 21:30:28
uuv2010(金币+2): 可做过O1,O2,O3的对比测试? 2012-02-13 21:31:57
一般就-O2,省心又省力
13楼2012-02-13 20:40:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

aabbc1122

木虫 (正式写手)



小木虫(金币+0.5):给个红包,谢谢回帖
uuv2010(金币+10): 赞! 2012-02-13 21:30:51
Intel的EM64T技术,EM64T技术官方全名是Extended Memory 64 Tenchnology 中文解释就是扩展64bit内存技术。现在的32位奔腾 4 CPU都是采用IA-32指令集,EM64T其实就是在这个指令集的基础上进行扩展,我们将它命名为IA32e。Intel这种实现64位的方法其实和AMD的x86-64技术有异曲同工之妙,都是通过64位扩展指令来实现兼容32位和64位的运算。另外不同的是Intel的EM64T技术设定了IA-32和IA-32e两种模式的激活程序,就是说EM64T需要满足特定条件才会激活。
14楼2012-02-13 20:52:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

aabbc1122

木虫 (正式写手)


★ ★
zzy870720z(金币+2): 鼓励交流,但好像有点文不对题吧,呵呵 2012-03-03 08:33:12
下面是一个使用Intel MKL 进行矩阵计算的例子。 通过的这个例子,我们可以了解如何使用Intel MKL 的函数库:  

1>程序说明:下面的matrix.c 文件分别调用 C 代码,Intel MKL BLAS Level 1 函数 (ddot), BLAS Level 2 函数(dgemv) 与 BLAS Level 3的函数(DGEMM)完成矩阵计算: roll_your_own_multiply 是 C 源代码,它直接依赖编译器生成优化代码。Ddot_Multiply,Dgemv_multiply使用Intel MKL 函数实现部分矩阵运算。Dgemm_multiply 直接调用MKL 的矩阵计算函数。

2>程序编译与链接:


下面是在Linux 32 的系统上,使用Intel Compiler编译该程序并链接Intel MKL 10.0的例子:
> source /opt/intel/cc/10.x.xxx/bin/iccvars.sh #设置Intel Compiler 环境变量
> icl –o matrix –I/opt/intel/mkl/10.0.xxxxx/include/ matrix.c-L/opt/intel/mkl/10.0.xxxx/lib/32/ -lmkl_intel_c -lmkl_intel_thread -lmkl_core -lguide40.lib –lpthread   

其他的链接的方式,大家可以查看下面的帖子:http://support.intel.com/support ... ls/sb/CS-028699.htm
   
3> 程序执行:  
> source /opt/intel/mkl/10.0.xxxxx/tools/environment/mklvars32.sh #程序使用动态方式链接MKL函数时,设置MKL的环境变量。
>./matrix   
   
4> 设置多线程运行:在Intel MKL 10.0 使用OpenMP* 实现多线程。 OpenMP*程序可以通过环境变量 OMP_NUM_THREADS 去控制线程的数目。  
  > export OMP_NUM_THRADS=4 #设置程序的线程为 4
  > ./matrix #DGEMM在执行的时候使用4个线程。

注意:在MKL 10.0 中, 如果OMP_NUM_THREADS没有定义,MKL函数可能会根据数据的大小,以及其他的变量来设置线程数目, 缺省时,可能运行多个线程运行。  

源程序下载的URL:
http://download355.mediafire.com ... hflsx1md/testcode.c
15楼2012-02-13 20:53:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

aabbc1122

木虫 (正式写手)


★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
zzy870720z(金币+2): 谢谢分享,呵呵 2012-03-03 08:33:26
安装icc和ifort:
在Intel网站下载9.1.047版icc(我是没安装,可以不装)和9.1.043版ifort,然后按网站要求申请许可证,并按提示进行安装即可,我都是全部安装的。基本上10版本的ifort安装很方便就完成的。重 要一点就是必须先建立ifort的安装目录,并且把lincese文件复制进入对应目录里。

1、 把icc和ifort的路径加入到环境变量中:
把安装目录下bin文 件夹中的iccvars.sh和ifortvars.sh拷贝到/etc/profile.d中。

这个很重要,作了就可以进行下面的MPI的配置和MAKE了,否则死都过不去!

2、 卸载
按照说明说的介绍,PDF里有介绍如何卸载的

第四 品  配置ssh:
1、 安装ssh
本来是可以不要的, 不过操作起来很简单,就顺手都给安装上了

yum install openssh openssh-server openssh-clients openssh-askpass

2、 编辑/etc/hosts,
这一步我觉得单机并行似乎可以不要,不过以前这么做的,没有问题,所以 现在还这么做

加入一行:127.0.0.1 node01

c.启动sshd并自动生成密钥:

/etc/rc.d/init.d/sshd start

加入启动服务:

chkconfig --level 5 sshd on

d.限制其它人连接:两种做法:a.设置iptables,b.编辑/etc/hosts.deny和/etc/hosts.allow,

这两个文件的格式忘掉了,有需要的同学可以查一下。
16楼2012-02-13 20:54:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ANDPing

荣誉版主 (文坛精英)



小木虫(金币+0.5):给个红包,谢谢回帖
linux现在很火啊,早知道偶当初也学这个了,那么现在就能帮到你了
17楼2012-03-02 14:43:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

逍遥游006

至尊木虫 (职业作家)



小木虫(金币+0.5):给个红包,谢谢回帖
都是人才啊!俺没看懂
18楼2012-03-02 14:52:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

future_wl

木虫 (著名写手)


★ ★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
uuv2010: 金币+3, 是的,呵呵 2012-08-23 22:30:33
FFLAGS =  -FR
                     -lowercase
                     -assume byterecl  
                     -heap-arrays

俺只知道  -heap-arrays这个选项是控制堆栈大小的
19楼2012-08-23 10:34:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Vaucanson

金虫 (小有名气)



小木虫: 金币+0.5, 给个红包,谢谢回帖
这些都是非常关键的参数,要是有大神讲讲就好了
20楼2014-12-08 10:49:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
简单回复
buctsheng7楼
2012-02-11 15:55   回复  
I_Gabriel9楼
2012-02-11 17:29   回复  
uuv201010楼
2012-02-11 18:49   回复  
引用回帖:
8楼: Originally posted by 锐利的碎片 at 2012-02-11 17:05:49: 不觉得有什么好讨论的,ifort 编译选项意义 用 ifort --help看就行了,引用了外部库函数当然要加库的路径。预处理参数知道就好了,你要想知道编译器在干嘛,可以讲一学期,但对计算真的没什么用。

相关版块跳转 我要订阅楼主 uuv2010 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见