我们只在我的计算机编程课上研究 MPI 大约一天,现在我必须为它编写一个程序。我要编写一个程序,将进程组织成两个环。
第一个环从进程 0 开始,然后继续向下一个偶数进程发送消息,最后一个进程将其消息发送回进程 0。例如,0--> 2 --> 4 --> 6 --> 8 --> 0(但它一直上升到 32 而不是 8)。下一个环也是一样,但是从进程1开始,发送到上一个关闭进程,然后返回到1。 例如,1--> 9--> 7--> 5 --> 3--> 1。
另外,我应该找到一个非常大的整数数组的最大值、最小值和平均值。我将不得不将数组分散到每个进程中,让每个进程计算一个部分答案,然后在每个人都完成后在进程 0 上一起减少答案。
最后,我将分散在各个流程中,每个流程都必须计算一个部分中出现的每个字母的数量。那部分对我来说真的没有意义。但是我们刚刚学习了非常基础的知识,所以请不要花哨的东西!这是我到目前为止所拥有的,我已经注释掉了一些东西只是为了提醒自己一些东西,所以如果有必要请忽略。
#include <iostream>
#include "mpi.h"
using namespace std;
// compile: mpicxx program.cpp
// run: mpirun -np 4 ./a.out
int main(int argc, char *argv[])
{
int rank; // unique number associated with each core
int size; // total number of cores
char message[80];
char recvd[80];
int prev_node, next_node;
int tag;
MPI_Status status; …Run Code Online (Sandbox Code Playgroud)