刚开始无从下手,不知该做什么,经过一番查询尝试以后,成功! 记录下整个流程。
测试了两种环境:
(1)win10的子系统ubuntu16.04,64bit
(2)win7系统 + VMware虚拟机下的Ubuntu16.04 LTS,64bit
注:文中涉及到的图片均为自己运行截图,转载请注明。执行成功的状态如下图所示:
1、下载HPCC基准测试程序并解压
地址:http://icl.cs.utk.edu/hpcc/
解压之后进入到其中的hpl下的setup文件如下左图所示,从中随便复制一个文件到上层目录,也就是hpl文件夹中。我选择的是Make.LinuxIntelIA64Itan2_eccMKL文件。粘贴到hpl中后修改文件名为Make.MKL,改成其他的也可以,比如Make.Linux都可以。(如下右图所示,因为我试了两种,所以两个文件都有,只需一个即可。)
2、编译配置
编译HPCC文件需要两个插件:Intel MPI和Intel MKL。(注:也可以使用mpich代替Intel MPI ,用BLAS代替MKL,但是由于未知原因在我的机器上一直出错,所以没采用,大家可以尝试一下。)
Intel MPI:https://software.intel.com/en-us/mpi-library
Intel MKL:https://software.intel.com/en-us/mkl
下载之后解压,在命令行运行安装程序进行图形化安装。以MKL安装为例,解压之后的图片如下图所示:
执行“./install_GUI.sh” 文件,如果习惯命令界面安装的小伙伴们可以执行" ./install.sh"
执行后会进入安装界面,一步步按操作来就可以了。默认安装在" /opt/intel" 下,我采用的是默认路径。MPI安装类似MKL。
有一点需要主要,Intel MPI安装之后会自动弹出一个网页,当时忘记截图了,里边注明了在使用MPI之前还需要的配置工作。简单来说就是按路径找到mpivars.sh文件,然后source一下。
大致路径如下图所示,source语句是 " source mpivars.sh"。如果不是在当前文件夹下需填写完整路径
" source /opt/intel/compilers_and_libraries_2018.5.274/linux/mpi/intel64/bin/mpivars.sh"
注::首先我选择了默认安装位置"/opt/intel/",所以没有修改环境变量,而且没有报错!!这个真的要看电脑,一个电脑一个样,如果之后编译hpcc文件时报 gcc:error的错误就是没有配置好环境变量。如果修改了安装路径就一定要配置环境变量。配置过程见3.配置环境变量
3.配置环境变量
完成第2步的操作后后配置环境变量:[root@localhost ~]# vi .bashrc
在.bashrc文件的末尾添加: export PATH=/usr/local/mpi/bin:$PATH
然后再保存退出后,再更新配置文件使其生效:[root@localhost ~]# source .bashrc
此处参考博客是:https://www.cnblogs.com/leijin0211/p/6851675.html
至此MKL和MPI的安装结束。
4.配置Make.MKL文件
此处参考博客是:
https://blog.csdn.net/jfsufeng/article/details/88734985
https://blog.csdn.net/u012927281/article/details/51443676
根据本机的情况,改写如下:
MP部分:
LA部分:
HPL_LIBS部分:
CC和LINKER部分:
修改路径的含义:
MPdir :本机安装mpi的位置
MPinc :mpi头文件所在的位置
MPlib :mpi静态库所在的位置
LAdir :MKL所在的位置
LAinc :MKL头文件所在的位置
LAlib :MKL静态库所在的位置
CC :选用的编译语句(mpiicc是使用Intel mpi ,mpicc是使用gcc)
HPL_LIBS:添加静态链接库(因计算机配置不同,不添加-ldl有些会报错,有些不会)
其余位置具体修改为什么,请参考上边的配置图片。
5.编译并执行
终于来到最后一步!
首先编译hpcc文件,执行目录是在hpcc程序的顶级目录中,如下图所示:
编译命令:"make arch=XXX",XXX是make文件的后缀名,比如我的是"make.MKL",则编译命令如下图所示:
编译成功则会在此目录下生成一个hpcc的二进制文件,如果你生成成功,那恭喜你!离成功只差一步啦!
生成成功后,就可以执行了,执行命令"mpirun -np 4 ./hpcc",如果报"cannot oprn file hpccinf.txt"的错误,则重命名当前文件夹下的_hpccinf.txt文件,去掉前面的下划线 "_"即可。
然后再重新执行,结果还是报错" Need at least 4 processes for these tests ":
解决方案:
如果hpccinf.txt文件中的两个变量Ps和Qs的积(Ps*Qs)大于设置的线程数时,可以修改两个变量的值使其乘积满足条件即可,或者减小线程数使其大于(Ps*Qs)。报错位置在"hpcc-1.5.0/hpl/testing/ptest/HPL_pdinfo.c"的第440行:
如果已经满足上述条件还不行的话,就关掉重启,然后再重新执行就可以了!(我的就是这样解决的。)
最后成功执行,执行图片就是帖子的第一张图。运行结果就是在当前目录下会自动生成一个hpccouf.txt文件,这个就是所需要的HPCC各种分数所在文件啦!
6.遇到的问题与解决方案
前边的部分列出了一部分问题,还有一些其他问题汇总如下。首先要准确定位错误原因,如下图所示这是看不出哪里出错的,一定要往上翻,找到有error的位置,也就是出错原因。
(1)出现未定义的引用,这个问题一般就是没有配置好环境变量。配置过程见前边的 "2和3"。
(2)出现" make:*** empty variable name. Stop "错误,是编译命令错误,不能加空格。去掉arch 、Linux与 = 之间的空格。
(3)出现以下错误,解决方案:源码安装mpich。
参考博客:https://www.cnblogs.com/leijin0211/p/6851675.html
(4)出现" DSO missing from command line "错误,解决方案:修改Make.MKL文件中的HPL_LIBS,在" -lm "前添加" -lpthread " 和 " -ldl ",配置文件见前边的 "4.配置Make.MKL文件"
(5)如果同时安装了OpenMpi和Intel MPI,是有可能出现冲突的
(6)报错" Need at least 4 processes for these tests ",这个问题没有彻底解决,取巧使用了其他方法处理了,过程如下。
可能是mpirun本身的问题,使用which查看,此时使用的mpirun是Intel MPI的mpirun,一直会报错:
转移到root下使用which 查看,发现使用的是之前安装的mpich的mpirun,这次顺利执行,但是执行时间明显比使用Intel MPI的时间要长:
使用Intel MPI的mpirun在出错后也成功过,过程就是ubuntu崩溃了 ,然后不得不重启,结果就好了。显然这个方法太偶然了,之后再执行依旧会有问题。
最后祝大家都顺利成功!!!问题6如果哪位朋友解决了,麻烦您请一定告诉我,在此多谢各位了!!!