<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Distribute processes across nodes in Intel® MPI Library</title>
    <link>https://community.intel.com/t5/Intel-MPI-Library/Distribute-processes-across-nodes/m-p/1159441#M6302</link>
    <description>Hi!

I'm trying to run a software called LAMMPS, across nodes. As recommended in it's page I'm using 2 OpenMP threads and enough MPI processes to fill all cores:

&lt;A href="https://lammps.sandia.gov/doc/Speed_intel.html" target="_blank"&gt;https://lammps.sandia.gov/doc/Speed_intel.html&lt;/A&gt;

This is fine if I'm running it on one node. When I use, say 4 nodes, the process uses only 2 nodes.

How do I distribute it across nodes? This is what I've tried:

    mpirun -machinefile $PBS_NODEFILE -n 64 -ppn 16 \
            -genv OMP_NUM_THREADS=2 -genv I_MPI_PIN_DOMAIN=omp \
            lmp -in in.lammps -suffix hybrid intel omp -package intel 0 omp 2

There are 32 cores per node, and so I'm trying to assign 16 MPI processes per node, so each may spawn 2 OMP threads. And `lmp` is the LAMMPS executable.

What am I doing wrong?</description>
    <pubDate>Tue, 04 Jun 2019 14:07:33 GMT</pubDate>
    <dc:creator>Vishnu</dc:creator>
    <dc:date>2019-06-04T14:07:33Z</dc:date>
    <item>
      <title>Distribute processes across nodes</title>
      <link>https://community.intel.com/t5/Intel-MPI-Library/Distribute-processes-across-nodes/m-p/1159441#M6302</link>
      <description>Hi!

I'm trying to run a software called LAMMPS, across nodes. As recommended in it's page I'm using 2 OpenMP threads and enough MPI processes to fill all cores:

&lt;A href="https://lammps.sandia.gov/doc/Speed_intel.html" target="_blank"&gt;https://lammps.sandia.gov/doc/Speed_intel.html&lt;/A&gt;

This is fine if I'm running it on one node. When I use, say 4 nodes, the process uses only 2 nodes.

How do I distribute it across nodes? This is what I've tried:

    mpirun -machinefile $PBS_NODEFILE -n 64 -ppn 16 \
            -genv OMP_NUM_THREADS=2 -genv I_MPI_PIN_DOMAIN=omp \
            lmp -in in.lammps -suffix hybrid intel omp -package intel 0 omp 2

There are 32 cores per node, and so I'm trying to assign 16 MPI processes per node, so each may spawn 2 OMP threads. And `lmp` is the LAMMPS executable.

What am I doing wrong?</description>
      <pubDate>Tue, 04 Jun 2019 14:07:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-MPI-Library/Distribute-processes-across-nodes/m-p/1159441#M6302</guid>
      <dc:creator>Vishnu</dc:creator>
      <dc:date>2019-06-04T14:07:33Z</dc:date>
    </item>
    <item>
      <title>Hello Vishnu,</title>
      <link>https://community.intel.com/t5/Intel-MPI-Library/Distribute-processes-across-nodes/m-p/1159442#M6303</link>
      <description>&lt;P&gt;Hello Vishnu,&lt;/P&gt;&lt;P&gt;-machinefile option should not be used together with -n -ppn options. Please replace -machinefile to -f in your command line and try again.&lt;/P&gt;&lt;P&gt;There are 2 ways to set process placement across the nodes:&lt;/P&gt;&lt;P&gt;1. using -machinefile, where you specify the &amp;lt;node_name&amp;gt;:&amp;lt;num_processes&amp;gt; in each line of machine file&lt;/P&gt;&lt;P&gt;or&lt;/P&gt;&lt;P&gt;2. -f &amp;lt;hostfile&amp;gt; which contains a list of nodes. And using -n you specify a total number of MPI processes and -ppn&amp;nbsp;to specify a number of &amp;nbsp;processes per node.&lt;/P&gt;&lt;P&gt;--&lt;/P&gt;&lt;P&gt;Best regards, Yury&lt;/P&gt;</description>
      <pubDate>Tue, 04 Jun 2019 15:15:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-MPI-Library/Distribute-processes-across-nodes/m-p/1159442#M6303</guid>
      <dc:creator>Yury_K_Intel</dc:creator>
      <dc:date>2019-06-04T15:15:06Z</dc:date>
    </item>
    <item>
      <title>Hey Yury!</title>
      <link>https://community.intel.com/t5/Intel-MPI-Library/Distribute-processes-across-nodes/m-p/1159443#M6304</link>
      <description>&lt;P&gt;Hey Yury!&lt;/P&gt;&lt;P&gt;Before you replied, I tried this, and it works for me, even with the machinefile:&lt;/P&gt;
&lt;PRE class="brush:bash; class-name:dark;"&gt;#!/bin/bash
#PBS -l select=4:ncpus=32:mpiprocs=16
#PBS -N bench
#PBS -q cpuq

NODES=4

cd $PBS_O_WORKDIR

mpirun -machinefile $PBS_NODEFILE -n $((16*${NODES})) -ppn 16 \
    -genv OMP_NUM_THREADS=2 -genv I_MPI_PIN_DOMAIN=omp \
    lmp -in in.lammps -suffix intel -package intel 0 omp 2 &lt;/PRE&gt;

&lt;P&gt;The primary difference being that earlier, I was using the following PBS line to requisition nodes:&lt;/P&gt;

&lt;PRE class="brush:bash; class-name:dark;"&gt;#PBS -l nodes=4:ppn=32&lt;/PRE&gt;

&lt;P&gt;The application now scales well across nodes.&lt;/P&gt;</description>
      <pubDate>Wed, 05 Jun 2019 04:27:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-MPI-Library/Distribute-processes-across-nodes/m-p/1159443#M6304</guid>
      <dc:creator>Vishnu</dc:creator>
      <dc:date>2019-06-05T04:27:00Z</dc:date>
    </item>
  </channel>
</rss>

