Purpose
Library
libmpi.a
C synopsis
#include <pm_util.h> int mpc_setintrdelay(integer val);
FORTRAN synopsis
MP_SETINTRDELAY(INTEGER VAL, INTEGER RC)
Parameters
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
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: