mpi第二站 -- mac上安装open-mpi + 在clion上运行第一个helloworld程序

版权声明:博主原创文章属私人所有,未经允许 不可转发和使用 https://blog.csdn.net/a1066196847/article/details/89417058

1:去官网上下载open-mpi安装包

https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.1.tar.gz  下载最新的版本

2:解压,将下载的包移动到 /Users/用户名/ 下

tar zxvf openmpi-4.0.1.tar.gz

3: 安装

cd openmpi-4.0.1

将openmpi安装在 /usr/local下,你会发现这个目录下有很多你安装的东西,比如 homebrew    --enable-mpi-cxx是支持Mpi可以编译c++代码,要是不加这个,在之后编译c++的时候就会报错 找不到MPI这个头文件

对应的解释在这个下面文档解释的很好

https://stackoverflow.com/questions/38680530/use-of-undeclared-identifier-mpi-when-using-c-syntax-for-openmpi-on-macos/38681881

./configure --prefix=/usr/local --enable-mpi-cxx

这个过程大约需要3分钟

4:make是mac自带的命令,所以可以用这个来编译mpi所需要的依赖和库

make all

这个过程大约需要10分钟

5:安装Mpi   sudo make install

6: 到这里,mpicc mpicxx mpirun这两个命令就可以用了

mpicc 是用来编译c代码的  比如你可以进到examples文件夹下面,mpicc hello_c.c 就会生成a.out文件,然后用mpirun 执行下这个编译好的文件 mpirun -np 4 a.out  

正常就会像上面的输出一样,但是如果是低配版本的mac的话,会报错下面这样

是你的核太少了,那就 mpirun -np 2 a.cout 就行

其中mpicxx是用来编译c++代码的,如果你有c++的话,可以试试    mpicxx hello_cxx.cc

7:新建个clion工程,因为前面一篇博客已经讲解了gcc编译器的配置,所有新建个工程后,里面只有两个文件需要注意

一是 CMakeLists.txt

# cmake的最低要求版本
cmake_minimum_required(VERSION 3.5)
# project的名字
project(Test)
# 设置c++的标准库版本
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

# 前面已经安装好openmpi了,使用下面命令自动找到mpi需要的包 的 路径
find_package(MPI REQUIRED)
# 然后设置到 依赖中去
include_directories(${MPI_INCLUDE_PATH})

# 设置c++ c编译的命令
SET(CMAKE_CXX_COMPILER mpicxx)
SET(CMAKE_C_COMPILER  mpicc)

# 将main.cpp加入到可执行文件中去
set(SOURCE_FILES main.cpp)
add_executable(Test ${SOURCE_FILES})




main.cpp

#include "mpi.h"
#include "iostream"

int main(int argc, char** argv){
    //初始化MPI环境
    MPI_Init(NULL, NULL);

    //获取进程数
    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

    //获取进程的等级
    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);

    //获取进程的名字
    char processor_name[MPI_MAX_PROCESSOR_NAME];
    int name_len;
    MPI_Get_processor_name(processor_name, &name_len);

    //打印helloworld
    printf("Hello world from processor %s, rank %d out of %d processors\n",processor_name, world_rank, world_size);

    //关闭MPI环境
    MPI_Finalize();
}

接下来就可以点Run按钮,执行这个程序

猜你喜欢

转载自blog.csdn.net/a1066196847/article/details/89417058
今日推荐