Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  distributed parallel MIP using a process transport protocol

    Posted 09/09/15 04:21 PM

    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


  • 2.  Re: distributed parallel MIP using a process transport protocol

    Posted 09/10/15 12:51 AM

    Your VMC file looks correct. It is expected that the machine name is missing from the output. This is because it is optional and not used by CPLEX right now.

    When using DistMIP, CPLEX prints lines like "setting up ... with N workers". What is N in your case? It should be 3.

    How did you check that there is no cplex process on those other machines. What tool/command did you use to perform that check?


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: distributed parallel MIP using a process transport protocol

    Posted 09/23/15 04:23 PM

    Originally posted by: Wangshu


    Problem solved. No problem with vmc file but something else.


    #CPLEXOptimizers
    #DecisionOptimization