刚刚接触MPICH,入手写了一个计算A * B(A 矩阵,B 向量)的测试程序,以熟悉MPICH。
程序以主从模式进行设计,主节点负责分发计算任务到不同的计算节点,然后接收从计算节点发送来的计算结果。
应用OpenThread线程库,在主机端创建数据接收子线程,专门负责接收计算结果。程序代码如下:
数据接收子线程:
<span style="font-size:14px;">#pragma once
#include <list>
#include "OpenThreads/Thread"
#include "OpenThreads/Mutex"
#include "OpenThreads/ScopedLock"
#include "mpi.h"
/*
数据接收线程
*/
class ReceiveThread :
public OpenThreads::Thread
{
public:
ReceiveThread(){isRuning = false;receiveFanish = false;}
virtual ~ReceiveThread(void){}
//接收线程开始运行
void run()
{
isRuning = true;
for (int i = 0;i < row_col;++i)
{
MPI_Status