0
mpiコードで作業していますが、タグに関するエラーがありました。私はMPI_ANY_tagを使用していました。私はこのエラーがあったとき、私はゼロでタグを置き換え、それは全く何も生成されませんでした。mpiエラー:無効なタグ値は-1
送信するときに、ない受信時にのみ、MPI_ANY_TAGを使用することができます任意の体は私にあなたが行く理由が
#include<iostream>
#include<mpi.h>
using namespace std;
void ParaStochSimulator::first_reacsimulator()
{
if (mnprocess_id != 0)/*worker node*/
{
PrepareRun();
//SimulateSingleStep();
//PostProcessRun();
CalculateAllHazardValues();
sent_taus = calc_tau();
std::cout << "tau =" << sent_taus << std::endl;
MPI_Send(&sent_taus, 1, MPI_DOUBLE, 0, 0,MPI_COMM_WORLD);
/*FireTransition(min_mu, long p_nEnabledness = 1);*/
}
else if (mnprocess_id = 0)/*master*/
{
/*SimulateSingleRun();*/
MPI_Status status;
MPI_Recv(&sent_taus, 1, MPI_DOUBLE, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD,&status);
std::cout << sent_taus << std::endl;
MPI_Reduce(&sent_taus, &min_rec_taus, 1, MPI_DOUBLE, MPI_MIN, 0, MPI_COMM_WORLD);
std::cout << min_rec_taus << std::endl;
}
ParaStochSimulator::~ParaStochSimulator()
{
MPI_Finalize();
}
送信時ではなく、受信時のみMPI_ANY_TAGを使用できます。二度考えてみましょう。 if(mnprocess_id = 0)は "=="にする必要があります。 マスターの削減は、労働者の中では比類のないものです。 –
あなたは、比類のない労働者はどういう意味ですか?受信者のランクとしてルートが0であると正確には一致しません –
私は労働者のMPI_Reduceへの呼び出しがないことを意味します。多分それはCalculateHazardValuesに隠されていますか? –