mpi第三站(3) -- 巩固上一轮学习到的 定点MPI_Send MPI_Recv

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

main.cpp

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

using namespace std;

// 写一个贪吃蛇-然后蛇头撞蛇尾死掉的程序
void tanchishe(){
    // 初始化
    MPI_Init(NULL, NULL);
    // 定义进程号 rank 秩
    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    // 找到一共有多少个 进程
    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

    int token;

    if(world_size == 0){
        MPI_Recv(&token, 1, MPI_INT, world_rank-1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
        cout << "Process "<<world_rank<<" received block "<<token<<" from process "<<world_rank-1;
    }else{
        token=-1;
    }

    MPI_Send(&token, 1, MPI_INT, (world_rank+1)%world_size, 0, MPI_COMM_WORLD);

    if(world_rank == 0){
        MPI_Recv(&token, 1, MPI_INT, world_size-1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
        cout << "Process "<<world_rank<<" received block "<<token<<" from process "<<world_rank-1;
    }
    MPI_Finalize();
}


int main() {
//    // 第一个helloworld程序
//    first();

//    //尝试接受API
//    send();

//    // 用学习到的接受、发送 写一段程序
//    fun();

    // 用学习到的接受、发送 写一个贪吃蛇最后死掉的程序
    tanchishe();
}


CMakeLists.txt

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

# 前面的已经安装好Openmpi了,使用下面命令自动寻找地址
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 send.cpp send.h)
add_executable(test2 ${SOURCE_FILES})



执行的时候还依旧是上面几个命令

mpicxx main.cpp -o main.out

mpirun -np 2 ./main.out

猜你喜欢

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