Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
OMPI_Affinity_str(3)		   Open	MPI		  OMPI_Affinity_str(3)

NAME
       OMPI_Affinity_str  -  Obtain  prettyprint strings of processor affinity
       information for this process

SYNTAX
C Syntax
       #include	<mpi.h>
       #include	<mpi-ext.h>

       int OMPI_Affinity_str(ompi_affinity_fmt_type_t fmt_type,
			     char ompi_bound[OMPI_AFFINITY_STRING_MAX],
			     char current_binding[OMPI_AFFINITY_STRING_MAX],
			     char exists[OMPI_AFFINITY_STRING_MAX])

Fortran	Syntax
       There is	no Fortran binding for this function.

C++ Syntax
       There is	no C++ binding for this	function.

INPUT PARAMETERS
       fmt_type	 An enum indicating how	to format the returned ompi_bound  and
		 current_binding  strings.   OMPI_AFFINITY_RSRC_STRING_FMT re-
		 turns the string as human-readable resource  names,  such  as
		 "socket 0, core 0".

		 OMPI_AFFINITY_LAYOUT_FMT returns ASCII	art representing where
		 this MPI process is bound relative to	the  machine  resource
		 layout.   For	example	 "[.  B][.  .]"	shows the process that
		 called	the routine is bound to	socket 0, core 1 in  a	system
		 with 2	sockets, each containing 2 cores.

		 See below for more output examples.

OUTPUT PARAMETERS
       ompi_bound
		 A  prettyprint	 string	 describing what processor(s) Open MPI
		 bound this process to,	or a string indicating that  Open  MPI
		 did not bind this process.

       current_binding
		 A   prettyprint  string  describing  what  processor(s)  this
		 process is currently bound to,	or a  string  indicating  that
		 the  process  is  bound  to  all available processors (and is
		 therefore considered "unbound").

       exists	 A prettyprint string describing  the  available  sockets  and
		 sockets on this host.

DESCRIPTION
       Open MPI	may bind a process to specific sockets and/or cores at process
       launch time.  This non-standard Open MPI	function  call	returns	 pret-
       typrint information about three things:

       Where Open MPI bound this process.
	      The string returned in ompi_bound	will either indicate that Open
	      MPI did not bind this process to anything, or it will contain  a
	      prettyprint  description	of  the	processor(s) to	which Open MPI
	      bound this process.

       Where this process is currently bound.
	      Regardless of whether Open MPI bound this	process	 or  not,  an-
	      other  entity  may  have	bound it.  The string returned in cur-
	      rent_binding will	indicate what the current binding is  of  this
	      process, regardless of what Open MPI may have done earlier.  The
	      string returned will either indicate that	the process is unbound
	      (meaning	that  it  is  bound to all available processors) or it
	      will contain a prettyprint description of	the sockets and	 cores
	      to which the process is currently	bound.

       What processors exist.
	      As  a  convenience to the	user, the exists string	will contain a
	      prettyprint description of  the  sockets	and  cores  that  this
	      process can see (which is	usually	all processors in the system).

Examples
       Example 1:  Print out processes binding using resource string format.

	   int rank;
	   char	ompi_bound[OMPI_AFFINITY_STRING_MAX];
	   char	current_binding[OMPI_AFFINITY_STRING_MAX];
	   char	exists[OMPI_AFFINITY_STRING_MAX];

	   MPI_Init(&argc, &argv);
	   MPI_Comm_rank(MPI_COMM_WORLD, &rank);

	   OMPI_Affinity_str(OMPI_AFFINITY_RSRC_STRING_FMT,
			     ompi_bound, current_binding, exists);
	   printf("rank	%d: \n"
		  "	  ompi_bound: %s\n"
		  "  current_binding: %s\n"
		  "	      exists: %s\n",
		  rank,	ompi_bound, current_binding, exists);
	   ...

       Output of mpirun	-np 2 -bind-to-core a.out:
       rank 0:
	      ompi_bound: socket 0[core	0]
	 current_binding: socket 0[core	0]
		  exists: socket 0 has 4 cores
       rank 1:
	      ompi_bound: socket 0[core	1]
	 current_binding: socket 0[core	1]
		  exists: socket 0 has 4 cores

       Output of mpirun	-np 2 -bind-to-socket a.out:
       rank 0:
	      ompi_bound: socket 0[core	0-3]
	 current_binding: Not bound (or	bound to all available processors)
		  exists: socket 0 has 4 cores
       rank 1:
	      ompi_bound: socket 0[core	0-3]
	 current_binding: Not bound (or	bound to all available processors)
		  exists: socket 0 has 4 cores

       Example 2:  Print out processes binding using layout string format.

	   int rank;
	   char	ompi_bound[OMPI_AFFINITY_STRING_MAX];
	   char	current_binding[OMPI_AFFINITY_STRING_MAX];
	   char	exists[OMPI_AFFINITY_STRING_MAX];

	   MPI_Init(&argc, &argv);
	   MPI_Comm_rank(MPI_COMM_WORLD, &rank);

	   OMPI_Affinity_str(OMPI_AFFINITY_LAYOUT_FMT,
			     ompi_bound, current_binding, exists);
	   printf("rank	%d: \n"
		  "	  ompi_bound: %s\n"
		  "  current_binding: %s\n"
		  "	      exists: %s\n",
		  rank,	ompi_bound, current_binding, exists);
	   ...

       Output of mpirun	-np 2 -bind-to-core a.out:
       rank 0:
	      ompi_bound: [B . . .]
	 current_binding: [B . . .]
		  exists: [. . . .]
       rank 1:
	      ompi_bound: [. B . .]
	 current_binding: [. B . .]
		  exists: [. . . .]

       Output of mpirun	-np 2 -bind-to-socket a.out:
       rank 0:
	      ompi_bound: [B B B B]
	 current_binding: [B B B B]
		  exists: [. . . .]
       rank 1:
	      ompi_bound: [B B B B]
	 current_binding: [B B B B]
		  exists: [. . . .]

See Also
       mpirun(1)

3.1.6				 Mar 18, 2020		  OMPI_Affinity_str(3)

NAME | SYNTAX | C Syntax | Fortran Syntax | C++ Syntax | INPUT PARAMETERS | OUTPUT PARAMETERS | DESCRIPTION | Examples | See Also

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=OMPI_Affinity_str&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help