43BbParaNodeMpi::createDatatype(
46 const int nBlocks = 15;
48 MPI_Datatype datatype;
50 MPI_Aint startAddress = 0;
53 int blockLengths[nBlocks];
54 MPI_Aint displacements[nBlocks];
55 MPI_Datatype types[nBlocks];
57 for(
int i = 0; i < nBlocks; i++ ){
70 displacements[1] = address - startAddress;
75 displacements[2] = address - startAddress;
80 displacements[3] = address - startAddress;
84 types[3] = MPI_LONG_LONG;
90 displacements[4] = address - startAddress;
95 displacements[5] = address - startAddress;
100 displacements[6] = address - startAddress;
105 displacements[7] = address - startAddress;
109 types[7] = MPI_LONG_LONG;
113 MPI_Get_address( &
depth, &address )
115 displacements[8] = address - startAddress;
120 displacements[9] = address - startAddress;
121 types[9] = MPI_DOUBLE;
126 displacements[10] = address - startAddress;
127 types[10] = MPI_DOUBLE;
132 displacements[11] = address - startAddress;
133 types[11] = MPI_DOUBLE;
138 displacements[12] = address - startAddress;
143 displacements[13] = address - startAddress;
148 displacements[14] = address - startAddress;
151 MPI_Type_create_struct(nBlocks, blockLengths, displacements, types, &datatype)
161 const int nBlocks = 8;
163 MPI_Datatype datatype;
165 MPI_Aint startAddress = 0;
166 MPI_Aint address = 0;
168 int blockLengths[nBlocks];
169 MPI_Aint displacements[nBlocks];
170 MPI_Datatype types[nBlocks];
172 for(
int i = 0; i < nBlocks; i++ ){
180 displacements[0] = 0;
185 displacements[1] = address - startAddress;
190 displacements[2] = address - startAddress;
195 displacements[3] = address - startAddress;
199 types[3] = MPI_LONG_LONG;
205 displacements[4] = address - startAddress;
210 displacements[5] = address - startAddress;
215 displacements[6] = address - startAddress;
220 displacements[7] = address - startAddress;
224 types[7] = MPI_LONG_LONG;
228 MPI_Type_create_struct(nBlocks, blockLengths, displacements, types, &datatype)
243 MPI_Datatype datatype;
246 MPI_Type_commit( &datatype )
252 MPI_Type_free( &datatype )
258 if( commMpi->getRank() != root )
275 MPI_Datatype datatype;
278 MPI_Type_commit( &datatype )
284 MPI_Type_free( &datatype )
299 MPI_Datatype datatype;
302 MPI_Type_commit( &datatype )
308 MPI_Type_free( &datatype )
324 MPI_Datatype datatype;
327 MPI_Type_commit( &datatype )
333 MPI_Type_free( &datatype )
364 MPI_Datatype datatype;
367 MPI_Type_commit( &datatype )
373 MPI_Type_free( &datatype )
393 MPI_Datatype datatype;
396 MPI_Type_commit( &datatype )
402 MPI_Type_free( &datatype )
423 MPI_Datatype datatype;
426 MPI_Type_commit( &datatype )
432 MPI_Type_free( &datatype )
BbParaNode extension for MIP communication.
int sendSubtreeRootNodeId(ParaComm *comm, int destination, int tag)
send subtree root to be removed
MPI_Datatype createDatatype()
create BbParaNode datatype
int sendNewSubtreeRoot(ParaComm *comm, int destination)
send new subtree root node
int bcast(ParaComm *comm, int root)
broadcast this object
int receive(ParaComm *comm, int source)
receive this object
MPI_Datatype createDatatypeForNodeId()
create BbParaNode datatype
int receiveNewSubtreeRoot(ParaComm *comm, int source)
receive this object
int send(ParaComm *comm, int destination)
send this object
int receiveSubtreeRootNodeId(ParaComm *comm, int source, int tag)
receive this object
double dualBoundValue
dual bound value
int mergingStatus
merging status: -1 - no merging node, 0 - checking, 1 - merged (representative) 2 - merged to the oth...
double initialDualBoundValue
dual bound value when this node is created This value is updated to precise one when there is guarant...
int depth
depth from the root node of original tree
int basisInfo
indicate if basis information is including or not
Base class of communicator object.
virtual int bcast(ParaComm *comm, int root)=0
broadcast function for ParaDiffSubproblem object
virtual int send(ParaComm *comm, int dest)=0
send function for ParaDiffSubproblem object
virtual int receive(ParaComm *comm, int source)=0
receive function for ParaDiffSubproblem object
int diffSubproblemInfo
1: with diffSubproblem, 0: no diffSubproblem
ParaDiffSubproblem * diffSubproblem
difference between solving instance data and subproblem data
TaskId taskId
solving task information
double estimatedValue
estimate value
TaskId generatorTaskId
subtree root task id of generator
int globalSubtaskIdInLc
Global Subtask ID in Solvers managed by LoadCoordinator.
int lcId
LoadCoordinator ID.
long long seqNum
sequential number in the subtree
SubtaskId subtaskId
subtree id
static ScipParaCommTh * comm
static const int TagNewSubtreeRootNode
#define DEF_PARA_COMM(para_comm, comm)
#define MPI_CALL(mpicall)
#define PARA_COMM_CALL(paracommcall)