46BbParaCalculationStateMpi::createDatatype(
50 const int nBlocks = 22;
52 MPI_Datatype datatype;
54 MPI_Aint startAddress = 0;
57 int blockLengths[nBlocks];
58 MPI_Aint displacements[nBlocks];
59 MPI_Datatype types[nBlocks];
61 for(
int i = 0; i < nBlocks; i++ ){
67 MPI_Get_address( &
compTime, &startAddress )
70 types[0] = MPI_DOUBLE;
73 MPI_Get_address( &
rootTime, &address )
75 displacements[1] = address - startAddress;
76 types[1] = MPI_DOUBLE;
79 MPI_Get_address( &
nSolved, &address )
81 displacements[2] = address - startAddress;
84 MPI_Get_address( &
nSent, &address )
86 displacements[3] = address - startAddress;
91 displacements[4] = address - startAddress;
96 displacements[5] = address - startAddress;
101 displacements[6] = address - startAddress;
106 displacements[7] = address - startAddress;
111 displacements[8] = address - startAddress;
112 types[8] = MPI_DOUBLE;
117 displacements[9] = address - startAddress;
122 displacements[10] = address - startAddress;
127 displacements[11] = address - startAddress;
132 displacements[12] = address - startAddress;
137 displacements[13] = address - startAddress;
142 displacements[14] = address - startAddress;
148 displacements[15] = address - startAddress;
151 MPI_Get_address( &
minIisum, &address )
153 displacements[16] = address - startAddress;
154 types[16] = MPI_DOUBLE;
157 MPI_Get_address( &
maxIisum, &address )
159 displacements[17] = address - startAddress;
160 types[17] = MPI_DOUBLE;
163 MPI_Get_address( &
minNii, &address )
165 displacements[18] = address - startAddress;
168 MPI_Get_address( &
maxNii, &address )
170 displacements[19] = address - startAddress;
175 displacements[20] = address - startAddress;
176 types[20] = MPI_DOUBLE;
181 displacements[21] = address - startAddress;
184 MPI_Type_create_struct(nBlocks, blockLengths, displacements, types, &datatype)
203 MPI_Datatype datatype;
206 MPI_Type_commit( &datatype )
209 commMpi->usend(&
compTime, 1, datatype, destination, tag)
212 MPI_Type_free( &datatype )
228 MPI_Datatype datatype;
231 MPI_Type_commit( &datatype )
234 commMpi->ureceive(&
compTime, 1, datatype, source, tag)
237 MPI_Type_free( &datatype )
CalcutationStte object extension for MPI communication.
void send(ParaComm *comm, int destination, int tag)
send this object to destination
MPI_Datatype createDatatype()
create MPI datatype of this object
void receive(ParaComm *comm, int source, int tag)
receive this object from source
int minTransferredLocalCuts
minimum number of local cuts transferred from a ParaNode
int nTransferredBendersCuts
number of benders cuts transferred from a ParaNode
double rootTime
computation time of the root node
double dualBound
final dual bound value
int maxTransferredLocalCuts
maximum number of local cuts transferred from a ParaNode
int maxTransferredBendersCuts
maximum number of benders cuts transferred from a ParaNode
int nSelfSplitNodesLeft
number of self-split nodes left
int nSimplexIterRoot
number of simplex iteration at root node
int maxNii
maximum number of integer infeasibility
int minTransferredBendersCuts
minimum number of benders cuts transferred from a ParaNode
int nSolvedWithNoPreprocesses
number of nodes solved when it is solved with no preprocesses
int nRestarts
number of restarts
double averageSimplexIter
average number of simplex iteration except root node
double maxIisum
maximum sum of integer infeasibility
int nImprovedIncumbent
the number of improved solution generated in this ParaSolver
double minIisum
minimum sum of integer infeasibility
int minNii
minimum number of integer infeasibility
int nSent
the number of ParaNodes sent
int nTransferredLocalCuts
number of local cuts transferred from a ParaNode
int nSolved
the number of tasks solved
int terminationState
indicate whether if this computation is terminationState or not. 0: no, 1: terminationState meaning c...
double compTime
computation time of this ParaTask
Base class of communicator object.
static ScipParaCommTh * comm
#define DEF_PARA_COMM(para_comm, comm)
#define MPI_CALL(mpicall)
#define PARA_COMM_CALL(paracommcall)