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 )
double averageSimplexIter
average number of simplex iteration except root node
int nTransferredLocalCuts
number of local cuts transferred from a ParaNode
int nSolvedWithNoPreprocesses
number of nodes solved when it is solved with no preprocesses
static ScipParaCommTh * comm
int minTransferredBendersCuts
minimum number of benders cuts transferred from a ParaNode
double maxIisum
maximum sum of integer infeasibility
int nSimplexIterRoot
number of simplex iteration at root node
double minIisum
minimum sum of integer infeasibility
double compTime
computation time of this ParaTask
int nSolved
the number of tasks solved
int minTransferredLocalCuts
minimum number of local cuts transferred from a ParaNode
#define PARA_COMM_CALL(paracommcall)
int minNii
minimum number of integer infeasibility
int nRestarts
number of restarts
void receive(ParaComm *comm, int source, int tag)
receive this object from source
int terminationState
indicate whether if this computation is terminationState or not. 0: no, 1: terminationState meaning c...
int maxTransferredLocalCuts
maximum number of local cuts transferred from a ParaNode
#define DEF_PARA_COMM(para_comm, comm)
double rootTime
computation time of the root node
int nSent
the number of ParaNodes sent
double dualBound
final dual bound value
int nImprovedIncumbent
the number of improved solution generated in this ParaSolver
int nSelfSplitNodesLeft
number of self-split nodes left
int maxNii
maximum number of integer infeasibility
int nTransferredBendersCuts
number of benders cuts transferred from a ParaNode
int maxTransferredBendersCuts
maximum number of benders cuts transferred from a ParaNode
MPI_Datatype createDatatype()
create MPI datatype of this object
#define MPI_CALL(mpicall)
Base class of communicator object.
void send(ParaComm *comm, int destination, int tag)
send this object to destination