IBM Books

MPI Programming Guide

MP_SETINTRDELAY, mpc_setintrdelay

Purpose

Sets the delay parameter.

Library

libmpi.a

C synopsis

#include <pm_util.h>
int mpc_setintrdelay(integer val);

FORTRAN synopsis

MP_SETINTRDELAY(INTEGER VAL, INTEGER RC)

Parameters

val
is the delay parameter in microseconds. 0 is a valid value.

rc
in FORTRAN, RC will contain one of the values listed under Return Values.

Description

This parallel utility subroutine sets the delay parameter to the value specified in val. This call can be made multiple times in a program with different values being passed to it each time.

You can use the environment variable MP_INTERDELAY to set an integer value before running your program. In this way, you can tune your delay parameter without having to recompile existing applications.

The cost of servicing an interrupt is quite high. For an application with few nodes exchanging small messages, it will help latency if the interrupt delay is kept small. For an application with a large number of nodes or one which exchanges large messages, keeping the delay parameter large will help the bandwidth. This allows multiple read transmissions to occur in a single read cycle. You should experiment with different values to achieve the desired performance depending on the communication pattern.

Notes

Return values

0
indicates successful completion

-1
indicates that an error occurred. A message describing the error will be issued.

Examples

C Example

/*
 * Running this program, after compiling with mpcc,
 * without setting the MP_INTRDELAY environment variable,
 * and without using the "-intrdelay" command-line option,
 * produces the following output:
 *
 *    Current interrupt delay time is 1
 *    About to set interrupt delay time to 100...
 *    Current interrupt delay time is 100
 */
 
#include "pm_util.h"
 
main()
{
 printf("Current interrupt delay time is %d\n", mpc_queryintrdelay());
 
 printf("About to set interrupt delay time to 100...\n");
 mpc_setintrdelay(100);
 
 printf("Current interrupt delay time is %d\n", mpc_queryintrdelay());
}
 

FORTRAN Example

Running this program, after compiling with mpxlf, without setting the MP_INTRDELAY environment variable, and without using the "-intrdelay" command-line option, produces the following output:

      Current interrupt delay time is 1
      About to set interrupt delay time to 100...
      Current interrupt delay time is 100
 
 
 
      PROGRAM INTRDELAY_EXAMPLE
 
      INTEGER DELAY, RC
 
      CALL  MP_QUERYINTRDELAY(DELAY)
      WRITE(6,*)'Current interrupt delay time is', delay
 
      WRITE(6,*)'About to set interrupt delay time to 100...'
      DELAY = 100
      CALL MP_SETINTRDELAY(DELAY, RC)
 
      CALL  MP_QUERYINTRDELAY(DELAY)
      WRITE(6,*)'Current interrupt delay time is', delay
 
      STOP
      END
 

Related information

Subroutines:


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]