Originally posted by: Mr.Hai
Yes, there is error from my part. Now, it seems to work but I do not well understand
1. Case 1: If I set the value of thread to 1 for all machines in .vmc file (single computer with 4 cores, so I setup three distributed solvers)
Here is the result: Note that "Parallel mode: none, using 1 thread"
Tried aggregator 2 times.
Aggregator did 1 substitutions.
Reduced MIP has 2 rows, 3 columns, and 6 nonzeros.
Reduced MIP has 0 binaries, 1 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Running distributed MIP on 3 solvers.
Setting up 3 distributed solvers.
Setup time = 0.00 sec. (0.00 ticks)
Starting ramp-up.
Found incumbent of value 34.000000 after 0.00 sec. (0.00 ticks)
MIP emphasis: balance optimality and feasibility.
MIP search method: dynamic search.
Parallel mode: none, using 1 thread.
Root relaxation solution time = 0.00 sec. (0.00 ticks)
Nodes Cuts/
Node Left Objective IInf Best Integer Best Bound ItCnt Gap
* 0+ 0 34.0000 163.0000 379.41%
0 0 125.2083 1 34.0000 125.2083 3 268.26%
* 0+ 0 122.5000 125.2083 2.21%
0 0 cutoff 122.5000 3 0.00%
Elapsed time = 0.00 sec. (0.03 ticks, tree = 0.01 MB, solutions = 2)
Root node processing (before b&c):
Real time = 0.00 sec. (0.03 ticks)
Sequential b&c:
Real time = 0.00 sec. (0.00 ticks)
------------
Total (root+branch&cut) = 0.00 sec. (0.03 ticks)
Ramp-up : worker 0 terminated with lpstat 101
Ramp-up : worker 1 terminated with lpstat 101
Ramp-up : worker 2 terminated with lpstat 101
Ramp-up finished (winner: 2).
Ramp-up time = 0.01 sec. (0.03 ticks)
2. Case 2: If I put the values for threads are 2, 3, 4 correspondingly
Here is the result. Notice that "Parallel mode: deterministic, using up to 2 threads"
Tried aggregator 2 times.
Aggregator did 1 substitutions.
Reduced MIP has 2 rows, 3 columns, and 6 nonzeros.
Reduced MIP has 0 binaries, 1 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.00 sec. (0.01 ticks)
Running distributed MIP on 3 solvers.
Setting up 3 distributed solvers.
Setup time = 0.00 sec. (0.00 ticks)
Starting ramp-up.
Found incumbent of value 34.000000 after 0.00 sec. (0.00 ticks)
MIP emphasis: balance optimality and feasibility.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 2 threads.
Root relaxation solution time = 0.00 sec. (0.00 ticks)
Nodes Cuts/
Node Left Objective IInf Best Integer Best Bound ItCnt Gap
* 0+ 0 34.0000 163.0000 379.41%
0 0 125.2083 1 34.0000 125.2083 3 268.26%
* 0+ 0 122.5000 125.2083 2.21%
0 0 cutoff 122.5000 3 0.00%
Elapsed time = 0.02 sec. (0.03 ticks, tree = 0.01 MB, solutions = 2)
Root node processing (before b&c):
Real time = 0.02 sec. (0.03 ticks)
Parallel b&c, 2 threads:
Real time = 0.00 sec. (0.00 ticks)
Sync time (average) = 0.00 sec.
Wait time (average) = 0.00 sec.
------------
Total (root+branch&cut) = 0.02 sec. (0.03 ticks)
Ramp-up : worker 0 terminated with lpstat 101
Ramp-up : worker 1 terminated with lpstat 101
Ramp-up : worker 2 terminated with lpstat 101
Ramp-up finished (winner: 2).
Ramp-up time = 0.04 sec. (0.04 ticks)
Solution pool: 1 solution saved.
MIP - Integer optimal solution: Objective = 1.2250000000e+02
Solution time = 13.65 sec. Iterations = 3 Nodes = 0
Deterministic time = 0.05 ticks (0.00 ticks/sec)
3. So my questions are:
a. Could you please elaborate on the impact of setting the value for thread? How it is mapped to number of cores
b. I am going to extend this framework to HPC system and HPC system at my school works only with MPI. In order to create .vmc file for this case, it is necessary to know the host name. So, I wonder whether the host name is equivalent to the name of the node that I request from HPC.
Here are the possible situation that I would like to work on
a. I request 1 node with 16 cores and I would like to use those 16 cores to run distributed mip algorithms instead of concurrent optimization. What the .vmc file would look like? Note that the process transport protocol is not supported at our HPC system
b. I request 2 nodes and each nodes with 8 cores. I wonder how the algorithm will treat 8 cores for each node: whether it runs concurrent optimization algorithm on each node or it treats 8 cores of each node as a single one?
c. For the case of 2 nodes and each nodes with 8 cores, I wonder how could I use such 8x2=16 cores in parallel for distributed algorithms rather than simply indicating 2 nodes for parallel?
c. Is there any way to access to parameters for distributed algorithms (ramp-up time, etc)?
Thank so much
#DecisionOptimization#MathematicalProgramming-General