Originally posted by: Wangshu
Hello,
I want to solve a MIP problem (P-median problem) in HPC with process transport protocol.
when I submit a task on HPC, three machines are assigned to me, the name of the machines:
r1i3n11
r2i0n0
r2i1n4
I generated a vmc file like this:
<?xml version="1.0"?>
<vmc>
<machine name="r1i3n11">
<transport type="process">
<cmdline>
<item value="ssh"/>
<item value="r1i3n11"/>
<item value="/gsfs1/uaopt/cplex/12.6.1/cplex/bin/x86-64_linux/cplex"/>
<item value="-worker=process"/>
<item value="-stdio"/>
<item value="-libpath=/gsfs1/uaopt/cplex/12.6.1/cplex/bin/x86-64_linux"/>
</cmdline>
</transport>
<param name="threads" value="1"/>
</machine>
<machine name="r2i0n0">
<transport type="process">
<cmdline>
<item value="ssh"/>
<item value="r2i0n0"/>
<item value="/gsfs1/uaopt/cplex/12.6.1/cplex/bin/x86-64_linux/cplex"/>
<item value="-worker=process"/>
<item value="-stdio"/>
<item value="-libpath=/gsfs1/uaopt/cplex/12.6.1/cplex/bin/x86-64_linux"/>
</cmdline>
</transport>
<param name="threads" value="1"/>
</machine>
<machine name="r2i1n4">
<transport type="process">
<cmdline>
<item value="ssh"/>
<item value="r2i1n4"/>
<item value="/gsfs1/uaopt/cplex/12.6.1/cplex/bin/x86-64_linux/cplex"/>
<item value="-worker=process"/>
<item value="-stdio"/>
<item value="-libpath=/gsfs1/uaopt/cplex/12.6.1/cplex/bin/x86-64_linux"/>
</cmdline>
</transport>
<param name="threads" value="1"/>
</machine>
</vmc>
CPLEX can run with this settings and there is output.
But there is a problem: if I inspect the procedures on each machine, I notice that CPLEX is only running on machine r1i3n11 with multiple processes, no other cplex process exist in the other 2 machines. which indicate this problem is solved only by one machine instead of distributed parallel solved by all machines (which is what I want).
After I inspect the vitural machine configuration in CPLEX interactive command line with:
display vmc
it shows me this:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<vmc>
<machine>
<transport type="process">
<cmdline>
<item value="ssh"/>
<item value="r1i3n11"/>
<item value="/gsfs1/uaopt/cplex/12.6.1/cplex/bin/x86-64_linux/cplex"/>
<item value="-worker=process"/>
<item value="-stdio"/>
<item value="-libpath=/gsfs1/uaopt/cplex/12.6.1/cplex/bin/x86-64_linux"/>
</cmdline>
</transport>
<param name="threads" value="1"/>
</machine>
<machine>
<transport type="process">
<cmdline>
<item value="ssh"/>
<item value="r2i0n0"/>
<item value="/gsfs1/uaopt/cplex/12.6.1/cplex/bin/x86-64_linux/cplex"/>
<item value="-worker=process"/>
<item value="-stdio"/>
<item value="-libpath=/gsfs1/uaopt/cplex/12.6.1/cplex/bin/x86-64_linux"/>
</cmdline>
</transport>
<param name="threads" value="1"/>
</machine>
<machine>
<transport type="process">
<cmdline>
<item value="ssh"/>
<item value="r2i1n4"/>
<item value="/gsfs1/uaopt/cplex/12.6.1/cplex/bin/x86-64_linux/cplex"/>
<item value="-worker=process"/>
<item value="-stdio"/>
<item value="-libpath=/gsfs1/uaopt/cplex/12.6.1/cplex/bin/x86-64_linux"/>
</cmdline>
</transport>
<param name="threads" value="1"/>
</machine>
</vmc>
you may notice that the "name" attribute for each machine node is missing after read in the .vmc file.
So my questions are: is this a bug of CPLEX or I'm doing anything wrong? how is the right way of doing distributed parallel MIP in CPLEX?
Thank you.
#CPLEXOptimizers#DecisionOptimization