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

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

mac安装brew 与 HomeBrew

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh >> brew_install BREW_REPO="