openmpi + gotoblas + hpl的安装

2023-11-06 03:59
文章标签 安装 openmpi gotoblas hpl

本文主要是介绍openmpi + gotoblas + hpl的安装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      前天应老大要求安装hpl。而hpl需要mpi库和blas库支持,于是选用openmpi1.4.3和gotoblas2。

      需要说明的是openmpi的安装没有什么问题,除了路径的设定(要在./bash_profile中设定PATH和LD_LIBRARY_PATH)。而gotoblas的安装也不需要特别复杂的说明,直接运行主目录下的configure.64bit(我是64位机,所以选择这个,如果是32位机,就选用configure.32bit)。

      最后一步安装hpl。这才是最难得一部分,害得我浪费了两天的时间。两天的时间,我都可以把小月月全集看个好几遍了。痛心啊。不过这也源于我自己的一贯不太好的习惯。认为linux下的程序安装就是简单的make就完事儿了。岂料hpl给我上了教训惨痛的一课。现在自己记录一下hpl的安装步骤。首先从/hpl/setup中选择一个Make.*文件,我选择的是Make.Linux_PII_CBLAS,复制这个文件到/hpl目录下,然后修改此文件。直接贴出修改的Make文件:

SHELL        = /bin/sh
#
CD           = cd
CP           = cp
LN_S         = ln -s
MKDIR        = mkdir
RM           = /bin/rm -f
TOUCH        = touch
#
# ----------------------------------------------------------------------
# - Platform identifier ------------------------------------------------
# ----------------------------------------------------------------------
#
ARCH         = Linux_PII_CBLAS
#
# ----------------------------------------------------------------------
# - HPL Directory Structure / HPL library ------------------------------
# ----------------------------------------------------------------------
#
TOPdir       = $(HOME)/hpl-2.0
INCdir       = $(TOPdir)/include
BINdir       = $(TOPdir)/bin/$(ARCH)
LIBdir       = $(TOPdir)/lib/$(ARCH)
#
HPLlib       = $(LIBdir)/libhpl.a
#
# ----------------------------------------------------------------------
# - Message Passing library (MPI) --------------------------------------
# ----------------------------------------------------------------------
# MPinc tells the  C  compiler where to find the Message Passing library
# header files,  MPlib  is defined  to be the name of  the library to be
# used. The variable MPdir is only used for defining MPinc and MPlib.
#
MPdir        = $(HOME)/openmpi-1.4.3
MPinc        = -I$(MPdir)/build/include
MPlib        = $(MPdir)/build/lib/libmpi.so
#
# ----------------------------------------------------------------------
# - Linear Algebra library (BLAS or VSIPL) -----------------------------
# ----------------------------------------------------------------------
# LAinc tells the  C  compiler where to find the Linear Algebra  library
# header files,  LAlib  is defined  to be the name of  the library to be
# used. The variable LAdir is only used for defining LAinc and LAlib.
#
LAdir        = $(HOME)/GotoBLAS2
LAinc        =
LAlib        = $(LAdir)/libgoto2_nehalemp-r1.13.so $(LAdir)/driver/others/xerbla.o
#
F2CDEFS      =
#
# ----------------------------------------------------------------------
# - HPL includes / libraries / specifics -------------------------------
# ----------------------------------------------------------------------
#
HPL_INCLUDES = -I$(INCdir) -I$(INCdir)/$(ARCH) $(LAinc) $(MPinc)
HPL_LIBS     = $(HPLlib) $(LAlib) $(MPlib)
#
# - Compile time options -----------------------------------------------
#
# -DHPL_COPY_L           force the copy of the panel L before bcast;
# -DHPL_CALL_CBLAS       call the cblas interface;
# -DHPL_CALL_VSIPL       call the vsip  library;
# -DHPL_DETAILED_TIMING  enable detailed timers;
#
# By default HPL will:
#    *) not copy L before broadcast,
#    *) call the BLAS Fortran 77 interface,
#    *) not display detailed timing information.
#
#HPL_OPTS     = -DHPL_CALL_CBLAS
HPL_OPTS        =
#
# ----------------------------------------------------------------------
#
HPL_DEFS     = $(F2CDEFS) $(HPL_OPTS) $(HPL_INCLUDES)
#
# ----------------------------------------------------------------------
# - Compilers / linkers - Optimization flags ---------------------------
# ----------------------------------------------------------------------
#
CC           = $(MPdir)/build/bin/mpicc
CCNOOPT      = $(HPL_DEFS)
CCFLAGS      = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops
#
# On some platforms,  it is necessary  to use the Fortran linker to find
# the Fortran internals used in the BLAS library.
#
LINKER       = $(MPdir)/build/bin/mpif77
LINKFLAGS    = $(CCFLAGS)
#
ARCHIVER     = ar
ARFLAGS      = r
RANLIB       = echo
#
# ----------------------------------------------------------------------

 之后运行make arch=<arch>命令,安装成功。安装成功的标志就是在/hpl/bin/<arch>下出现xhpl和HPL.DAT两个文件。

 

当然这一切都是在吃亏之后才总结出来的,感谢以前的大侠。现在找出原帖:http://www.cnblogs.com/xulei/archive/2009/03/30/1425258.html

 

这几天的一些总结,先发在这,以后整理

Dawning 5000A安装的OS有SUSE,遂决定装个SUSE,在Novell的site上down了64-bit的DVD,准备在虚拟机上安装
我的HP的laptop的OS是32-bit Vista Ultimate SP1,CPU是64-bit的Intel Core 2 Duo T7500,
在上面安装VMware Workstation 6.5.1 bulid-126130,但是从安装光盘启动后显示:
        This is a 32-bit computer. You cannot use 64-bit software on it!
VMware给出的错误信息:work_hard
This host is VT-capable, but VT is not enabled.
This is usually due to a BIOS/firmware problem. Please:
(1) Verify the BIOS/firmware settings enable VT mode.
(2) Power-cycle the host, if the BIOS/firmware VT settings were changed at boot.
(3) Power-cycle the host, if you have not done so since installing VMware Workstation.
(4) Update host BIOS/firmware to the latest version.
You have configured this virtual machine to use a 64-bit guest operating system. However, this host is not capable of running 64-bit virtual machines or this virtual machine has 64-bit support disabled.
For more detailed information, see
http://vmware.com/info?id=152

按照提示做了,修改BIOS的"Virtualisation Technology"为Enable,restart了pc无数次,问题依旧,耗时n久,最后在网上找到答案:关机再开机
也就是电脑冷启动才能让BIOS的设置生效,restart是不行的。
回头看看提示第(2),(3)点发现早有说明"Power-cycle the host",也就是重新加电啊
看来自己的e文还是太烂,以后要加强学习

安装完suse后,发现locate和updatedb都不能用
google到解决方案:
http://www.linuxquestions.org/questions/susenovell-60/what-is-the-equivlent-of-locate-and-updatedb-in-suse-321117/

安装rpm包,位于DVD的:/suse/x86_64/findutils-locate-4.2.27-14.15.x86_64.rpm
安装后就可以使用locate和updatedb命令了

*.tar.gz/*.tgz、*.bz2形式的源代码软件包  
  安装:tar   zxvf   *.tar.gz   或   tar   yxvf   *.bz2   先解压  
  然后进入解压后的目录:  
  ./configure   配置  
  make   编译  
  make   install   安装  
  卸载:make   uninstall   或   手动删除  
  说明:建议解压后先阅读说明文件,可以了解安装有哪些需求,有必要时还需改动编译配置。有些软件包的源代码在编译安装后可以用make   install命令来进行卸载,如果不提供此功能,则软件的卸载必须手动删除。由于软件可能将文件分散地安装在系统的多个目录中,往往很难把它删除干净, 那你应该在编译前进行配置,指定软件将要安装到目标路径:./configure   --prefix=目录名,这样可以使用“rm   -rf   软件目录名”命令来进行干净彻底的卸载。

在linux下运行程序时显示"error while loading shared libraries :xxx.so cannot open shared object file: No such file or directory"
Linux 运行的时候,是如何管理共享库(*.so)的?在 Linux 下面,共享库的寻找和加载是由 /lib/ld.so 实现的。 ld.so 在标准路经(/lib, /usr/lib) 中寻找应用程序用到的共享库。

但是,如果需要用到的共享库在非标准路经,ld.so 怎么找到它呢?

目前,Linux 通用的做法是将非标准路经加入 /etc/ld.so.conf,然后运行 ldconfig 生成 /etc/ld.so.cache。 ld.so 加载共享库的时候,会从 ld.so.cache 查找。

传统上, Linux 的先辈 Unix 还有一个环境变量 - LD_LIBRARY_PATH 来处理非标准路经的共享库。ld.so 加载共享库的时候,也会查找这个变量所设置的路经。
http://jicknan.blogspot.com/2007/09/ldlibrarypath.html
http://blogs.sun.com/rie/date/20040710

如何让.bash_profile里面的设置立即生效?
bash: source .bash_profile

MPI(Message Passing Interface)是一套高性能计算使用的公共的通信接口,也是这套接口软件实现的名称,MPICH是MPI在以太网上实现软件的名称。
MVAPICH是MPI接口在Infiniband网路上的实现版本,使用方法基本一致,在Infiniband上具有较高的性能。
OpenMPI是MPI2实现的高性能的MPI,可以运行于任何网络上。

在SUSE下安装openmpi
在http://www.open-mpi.org下载1.3版本的openmpi在suse 10SP2下安装
依次执行:
./configure --prefix=/usr/local/openmpi-1.3
make
make install

安装完成后,进入安装文件包的examples目录,make,编译完测试程序
在$HOME目录下新建.bash_profile文件(suse默认没有.bash_profile文件),写入内容
PATH=$PATH:/usr/local/openmpi-1.3/bin
LD_LIBRARY_PATH=/usr/local/openmpi-1.3/lib

export PATH LD_LIBRARY_PATH

完成后执行source .bash_profile
但是执行mpirun -np 4 hello_c输入password后,总是出现如下错误:
bash: orted: command not found
解决办法是在$HOME下,新建.bashrc,输入:
PATH=$PATH:/usr/local/openmpi-1.3/bin
LD_LIBRARY_PATH=/usr/local/openmpi-1.3/lib

export PATH LD_LIBRARY_PATH
然后再使用openmpi就没问题了

总结:问题出在对.bash_profile文件和.bashrc文件的作用的不了解,在网上搜到两个文件的区别如下:

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该
该文件被读取.修改后在shell中立即生效
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.

~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。

HPL+GotoBLAS
最近准备在SUSE 10SP2 x86_64下编译HPL,亲自动手后,发现问题原来是这么的多
我的GotoBLAS目录:$(HOME)/GotoBLAS
MPI使用的是openmpi,MPI目录:/usr/local/openmpi-1.3
HPL目录:$(HOME)/hpl-2.0
现在说一下我的安装过程中碰到的问题:
error 1:Make.inc 不存在
一开始就在GotoBLAS下make,
GotoBLAS/exports/下 make so
将 xerblas.o拷贝到GotoBLAS下面
修改完Make.Linux, 直接make arch=Linux,提示Make.inc不存在
找到出错的地方:ln -s /root/hpl-2.0  /Make.Linux Make.inc
看了半天才发现问题的所在,本来的操作是链接 Make.Linux和Make.inc
command应该为:ln -s /root/hpl-2.0/Make.Linux Make.inc
问题所在:在编辑Make.Linux文件时,在HPL目录后面多了些空格
看来Linux下空格的使用一定要慎重

error 2:/root/GotoBLAS/libgoto_core2-r1.26.so: could not read symbols: File in wrong format
除掉error 1后,出现error 2
在网上找资料,应该是libgoto_core2-r1.26.so是32-bit的库导致的
修改GotoBLAS下的Makefile.rule
将BINARY64 = 1
再make,出现error 3

SUSE 关闭防火墙
sudo SuSEfirewall2 stop

error 3: copy_sse_core2.S: Assembler message:
copy_sse_core2.S:244: Error: no such instruction: `palignr $4,%xmm0,%xmm1'
copy_sse_core2.S:249: Error: no such instruction: `palignr $4,%xmm9,%xmm2'
copy_sse_core2.S:254: Error: no such instruction: `palignr $4,%xmm10,%xmm3'
copy_sse_core2.S:259: Error: no such instruction: `palignr $4,%xmm11,%xmm4'
copy_sse_core2.S:264: Error: no such instruction: `palignr $4,%xmm12,%xmm5'
copy_sse_core2.S:269: Error: no such instruction: `palignr $4,%xmm13,%xmm6'
copy_sse_core2.S:274: Error: no such instruction: `palignr $4,%xmm14,%xmm7'
copy_sse_core2.S:279: Error: no such instruction: `palignr $4,%xmm15,%xmm8'

在网上搜到的解释:
Symptom:
GotoBLAS version 1.12 or greater fails to compile with
"copy_sse_core2.S:241: Error: no such instruction: `palignr $4,%xmm0,%xmm1'"
on SLES 10 x86_64.
Explanation:
This problem is caused by an incompatible binutils package released with
SLES 10 x86_64, as well as with SLES 10 SP1 x86_64.
Action:
While in the base build directory for GotoBLAS run the following commands:
cp level1/copy/x86_64/copy_sse.S level1/copy/x86_64/copy_sse_core2.S
cp level1/copy/x86_64/zcopy_sse.S level1/copy/x86_64/zcopy_sse_core2.S
cp level1/dot/x86_64/dot_sse.S level1/dot/x86_64/dot_sse_core2.S
上面这三条语句就是解决问题的办法。

Then re-run quickbuild.64bit.
下面是Kazushige Goto提供的解决这个问题的方法:
http://lists.tacc.utexas.edu/pipermail/gotoblas/2007-December/000003.html
http://lists.tacc.utexas.edu/pipermail/gotoblas/2008-April/000044.html
摘录如下:
What you need is the latest binutils (version 2.17 or 2.18).
Palignr instruction is in SSSE3, not SSE4.
Please apply attached patch. Original source is wrong set force to build Core2 version instead of Nocona (you don't need latest binutils, actually).
But if you want to solve this problem anyway, you may check actual path that gcc executes as. It should be different path like /usr/x86_64-linux/bin/as instead of /usr/bin/as.
最后一句是什么意思暂时还没明白
Kazushige Goto提供的这种解决办法需要安装新版本的binutils,没有测试过,以后有时间再试。
最后使用第一种解决办法解决,make成功。

正常的步骤如下:
(1)安装openmpi,见前面的文章
(2)编译GotoBLAS
编辑vi Makefile.rule
    #BINARY64 = 1  ==>> BINARY64 = 1
在GotoBLAS目录下,执行:
    cp level1/copy/x86_64/copy_sse.S level1/copy/x86_64/copy_sse_core2.S
    cp level1/copy/x86_64/zcopy_sse.S level1/copy/x86_64/zcopy_sse_core2.S
    cp level1/dot/x86_64/dot_sse.S level1/dot/x86_64/dot_sse_core2.S
编译
    make
进exports目录,生成so文件
    cd exports
    make so
拷贝xerbla.o到GotoBLAS目录
    cp level1/others/xerbla.o ./
done!
(3)编译HPL
在HPL目录下,在setup文件中选出Make文件,我的选择是Make.Linux_PII_CBLAS文件,copy在HPL的目录下,
重命名为Make.core2_SELS_x86_64

修改Make.core2_SELS_x86_64,如下:
ARCH         = Linux_PII_CBLAS     ==>>
ARCH         = core2_SELS_x86_64
TOPdir       = $(HOME)/hpl         ==>>
TOPdir         = $(HOME)/hpl-2.0
MPdir        = /usr/local/mpi      ==>> MPdir          = /usr/local/openmpi-1.3
MPlib        = $(MPdir)/lib/libmpich.a   ==>>
MPlib         = $(MPdir)/lib/libmpi.so
LAdir        = $(HOME)/netlib/ARCHIVES/Linux_PII ==>>
LAdir         = $(HOME)/GotoBLAS
LAlib        = $(LAdir)/libcblas.a $(LAdir)/libatlas.a  ==>>
LAlib         = $(LAdir)/libgoto_core2-r1.26.so $(LAdir)/xerbla.o
HPL_OPTS     = -DHPL_CALL_CBLAS  ==>> HPL_OPTS     =
CC           = /usr/bin/gcc  ==>>
CC           = /usr/local/openmpi-1.3/bin/mpicc
LINKER       = /usr/bin/g77 ==>>
LINKER         = /usr/local/openmpi-1.3/bin/mpif77

编译
    make arch=core2_SELS_x86_64
完成后在bin/core2_SELS_x86_64目录下会出现HPL.dat和xhpl两个文件,表示成功

附:
(1)HPL下载地址:
http://www.netlib.org/benchmark/hpl
(2)GotoBLAS下载地址: http://www.tacc.utexas.edu/resources/software/
(3)openmpi下载地址:www.open-mpi.org
修改SUSE的hostname:修改/etc/HOSTNAME文件

Ctrl+D注销系统

这篇关于openmpi + gotoblas + hpl的安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/354331

相关文章

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

如何在pycharm安装torch包

《如何在pycharm安装torch包》:本文主要介绍如何在pycharm安装torch包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录在pycharm安装torch包适http://www.chinasem.cn配于我电脑的指令为适用的torch包为总结在p

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是