在ASC19大赛中,楼主负责优化CESM(全球气候系统模型)性能(十年跑不完,提交两行泪)。其中MPI库的选择尤其重要,这种大型系统都需要分布式(多进程)计算,充分调动CPU资源来提高CESM的运行效率。
  MPI(message passing interface):在分布式内存之间实现信息通讯的一种规范/标准/协议。它是一个库,不是一门语言。可以被fortran,c,c++等调用。MPI 允许静态任务调度,提供了良好的性能和移植性,用 MPI 编写的程序可直接在多核集群上运行。在集群系统中,集群的各节点之间可以采用 MPI 编程模型进行程序设计,每个节点都有自己的内存,可以对本地的指令和数据直接进行访问,各节点之间通过互联网络进行消息传递,这样设计具有很好的可移植性,完备的异步通信功能,较强的可扩展性等优点。
  本来楼主想要使用IntelMPI来运行CESM(众多资料显示其在使用Intel芯片的服务器上有最强分布式计算性能),但在调用IntelMPI时,系统显示其是使用gnu编译的,与当前编译器不能(Intel)兼容运行,加上还有其他bug。由于时间紧迫,我们来不及修改。在比较多个可以运行CESM的MPI库(mpich,openmpi等)后,我们最后采用OpenMPI4.0版本(也是目前最新版本)。
  在安装MPI库时要注意:CC,FC必须指定为你要运行CESM的编译器。比如我用的是Intel编译器,那么在configure时要加上“CC=icc,FC=ifort”。建议安装在个人目录下,通过修改.bashrc文件,方便以后调用不同的MPI库。

以下是自定义安装过程:

OpenMPI4.0下载官网:
https://www.open-mpi.org/software/ompi/v4.0/

1.将openmpi-4.0.0.tar.gz文件移动到你要储存的目录

2.解压文件:$tar -zxvf openmpi-4.0.0.tar.gz

3.进入解压后的目录:$cd openmpi-4.0.0

4.安装openmpi4.0.0

$./configure --prefix=/home/CESM_Share/openmpi4_intel CC=icc CXX=icpc FC=ifort CFLAGS="-g -O2" FCFLAGS="-g -O2" FFLAGS="-g -O2" --enable-mpi1-compatibility

1)要提前建立文件夹/home/CESM_Share/openmpi4_intel。
2)-g:使vtune可以监控此mpi库的函数调用。
3)-O2:Intel编译器的编译选项,在编译MPI安装包时具有稳定的优化作用。
4)- -enable-mpi1-compatibility:使其支持多线程化,但是在此版本貌似默认支持多线程,加上以防万一。
5)其他的诸如CC,CXX等,请使用./configure --help查看具体信息。

5.$make

6.$make install

7. 环境配置:

vi ~/.bashrc  #(打开文件.bashrc,按i 进入编辑状态)添加
export PATH=/home/CESM_Share/openmpi4_intel/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/CESM_Share/openmpi4_intel/lib

修改完后,重新登录帐号,更新环境变量;虽然可以使用source ~/.bashrc,但它不会消除你在这次修改中隐藏的变量,所以重新登录是较安全的。

8.测试mpirun

配置完成后,进入安装文件包的examples目录。输入以下命令行:

$ mpicc --version
icc (ICC) 19.0.0.117 20180804
Copyright (C) 1985-2018 Intel Corporation.  All rights reserved.$ mpicc hello_c.c -o hello$ mpirun hello
Hello, world, I am 0 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 10 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 14 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 2 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 4 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 6 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 8 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 15 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 1 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 3 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 5 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 7 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 11 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 12 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 13 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)
Hello, world, I am 9 of 16, (Open MPI v4.0.0, package: Open MPI liangziquan@master Distribution, ident: 4.0.0, repo rev: v4.0.0, Nov 12, 2018, 113)

9.如果要卸载openmpi ,可以直接删除安装文件

CESM优化——Intel编译器安装OpenMPI4.0相关推荐

  1. Ubuntu16.04 安装 OpenMPI4.0.0

    Ubuntu16.04 安装 OpenMPI4.0.0 文章目录 OpenMPI 简介 一.OpenMPI 1.0.0版本下载 二.OpenMPI 安装步骤 1.解压并进行配置 2.Build 并安装 ...

  2. 【数值模型环境搭建】Intel编译器安装

    Intel编译器在数值模型编译中被广泛使用,它有一个很好的地方是自带Mpich,不需要额外安装.本文介绍Intel2018.1.163版本的安装. 1.安装包获取 Intel编译器可从官网下载下载: ...

  3. CP2K 7.1.0 使用 Intel 编译器安装

    安装环境简介: IntelMPI 18.0.3 GCC:5.4.0 python 3.6 (python 版本必须 > 3) gcc 的版本只需要支持 c++11 都是可以的 几乎需要从零开始安 ...

  4. Intel 编译器更新licence

    学生可以申请免费使用intel套装,但是期限只有1年,每次到期之后都要重新更新证书.使用licence manager可以方便地更新而不用重新安装. intel编译器安装的时候,都会带有一个licen ...

  5. mysql netcdf_Linux下用Intel编译器编译安装NetCDF-Fortan库(4.2以后版本)

    本来这个问题真的没必要写的,可是真的困扰我太久%>_ 首先,最权威清晰的安装文档还是官方的: 那这个文档最开始就告诉我们,自NetCDF库4.2版本以后,Fortran的库和C的库就要分开bui ...

  6. FVCOM 环境基础配置(1) intel编译器 下载与安装

    FVCOM 配置(1):intel编译器的下载与安装 FVCOM模型需要Intel编译器 之前的Intel Parallel Studio XE2019软件需要认证许可.不过现在Intel已经免费开发 ...

  7. 使用Intel编译器系列合集

    好的帖子: http://topic.csdn.net/u/20080327/16/071b45df-3795-4bf1-9c4d-da4eb5aaa739.html 参考手册: http://sof ...

  8. 【华为认证】HCIA-DATACOM技术分享-ENSP简介和软件安装操作界面+Python编译器安装-进阶级手册(二)

    这里写目录标题 一.Python 环境部署 1.Python下载 2.Python安装 2.1.Unix & Linux 平台安装 Python: 2.2.Window 平台安装 Python ...

  9. fortran 编译器安装(转载)

    在Linux操作系统安装盘中,一般自带有Fortran编译器,SuSe9.1以前为g77,Suse9.2以后为gfortran.但是,由于g77和gfortran编译的程序运行效率不高,一般情况下不会 ...

  10. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)...

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

最新文章

  1. ORB_SLAM2单目初始化策略
  2. android小球移动代码,Android自定义圆形View实现小球跟随手指移动效果
  3. 2021.9.6 跑FICS【当时的经验】
  4. MySQL主从的一致性校验及修复
  5. linux下C/C++编译时系统搜索 include 和 链接库 文件路径的指定
  6. COGS-257-动态排名系统-树状数组+主席树
  7. 张恩民 php,php张恩民PHP中ltrim与rtrim去除左右空格及特殊字符实例
  8. html点击按钮计算两个输入框的和_小程序计算报价功能介绍
  9. [零基础学JAVA]Java SE应用部分-35.JAVA类集之四
  10. css legend框大小,CSS-如何给 legend 标签设定宽度
  11. [国家集训队]飞飞侠
  12. iOS 颜色选择器 仿ps 调色板
  13. 用户体验与可用性测试_读书笔记
  14. lora_pkt_fwd.c代码解读
  15. 支付宝,百度,头条集卡群,过年一起玩
  16. vector(向量)的简单操作
  17. rono在oracle的作用_sqlnet.ora的作用
  18. HTTPError错误
  19. 写给养花小白的水培小教程
  20. 被 GPT 带火的 Prompt 是什么?

热门文章

  1. PostgreSQL 逻辑复制插件 UDR,可以愉快的玩类似MySQL的binlog复制了。
  2. php 求幂数,C 笔记九 求幂函数
  3. stream流倒序排序_Stream流排序
  4. LaTeX中生成标题、摘要、关键词、目录方法以及自定义所需样式
  5. python爬虫解决频繁访问_python爬虫防止IP被封的一些措施
  6. HDLBits在线练习题之Exams/ece241 2014 q7b
  7. 51单片机培训计划(新订)
  8. 后盾网php项目开发实例,后盾网thinkphp许愿墙html源码
  9. 连接局域网及共享打印机提示操作无法完成(0x00000709)
  10. maya调磨砂教程_怎么用maya调磨砂玻璃的材质?