|
| |||||||||||||||||||||||||||||||||||||||||||
(This page was created by a MODIFICATION of the IDL library routine
mk_html_help).
List Last updated: Mon Jan 6 11:46:33 2003.
NAME:
MPI_BARRIER
PURPOSE:
BLOCKS UNTIL ALL PROCESSES HAVE REACHED THIS ROUTINE
CALLING SEQUENCE:
IDL> STS=MPI_BARRIER()
INPUTS:
NONE
KEYWORD PARAMETERS:
NONE
OUTPUTS:
STATUS OF CALLING MPI_BARRIER
COMMON BLOCKS:
NONE
EXAMPLE:
STS=MPI_BARRIER()
NOTES:
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_BCAST
PURPOSE:
BROADCASTS VALUE FROM ONE TO ALL PROCESSES
CALLING SEQUENCE:
IDL> VALUE=MPI_BCAST(SOURCE, DATA)
INPUTS:
SOURCE NUMBER OF PROCESS FROM WHICH DATA WILL BE SENT
DATA IF ON PROCESSOR SOURCE DATA IS THE DATA TO BE BROADCAST
ON ANY OTHER PROCESSOR DATA IS AN EMPTY VAR OF SAME SIZE AND SHAPE
OF DATA ON PROCESS SOURCE
KEYWORD PARAMETERS:
NONE
OUTPUTS:
VALUE OF BROADCASTED DATA
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> SOURCE=0
GAIN=MDSVALUE('\MYTREE::GAIN')
IF MYID EQ SOURCE THEN DATA=FINDGEN(100)*GAIN ELSE $
DATA=FLTARR(100)
DATA=MPI_BCAST(0,DATA)
NOTES:
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_COMM_RANK
PURPOSE:
GET RANK OF CURRENT PROCESSOR
CALLING SEQUENCE:
IDL> MYID=MPI_COMM_RANK()
INPUTS:
NONE
KEYWORD PARAMETERS:
NONE
OUTPUTS:
RANK NUMBER OF CURRENT PROCESS
IE THE NUMBER OF THE CALLING PROCESS
COMMON BLOCKS:
none
EXAMPLE:
IDL> MYID=MPI_COMM_RANK()
NOTES:
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_COMM_SIZE
PURPOSE:
GET NUMBER OF PROCESSORS IN GIVEN COMMUNICATOR
CURRENTLY THIS RETURNS THE TOTAL NUMBER OF PROCESSORS ON WHICH YOUR
PROCESS IS RUNNING
CALLING SEQUENCE:
IDL> NUMPROCS=MPI_COMM_SIZE()
INPUTS:
NONE
KEYWORD PARAMETERS:
NONE
OUTPUTS:
NUMBER OF PROCESSORS
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> NUMPROCS=MPI_COMM_SIZE()
NOTES:
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_FINALIZE
PURPOSE:
FINALIZE MPI
CALLING SEQUENCE:
IDL> STS=MPI_FINALIZE()
INPUTS:
NONE
KEYWORD PARAMETERS:
NONE
OUTPUTS:
STATUS OF MPI FINALIZING FROM MPI
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> STS=MPI_FINALIZE()
NOTES:
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_FINALIZED
PURPOSE:
CHECK IF MPI HAS BEEN FINALIZED
CALLING SEQUENCE:
IDL> STS=MPI_FINALIZED()
INPUTS:
NONE
KEYWORD PARAMETERS:
NONE
OUTPUTS:
STATUS OF MPI FINALIZING TRUE OR FALSE
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> IF NOT MPI_FINALIZED() THEN STS=MPI_FINALIZE()
NOTES:
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_GATHER
PURPOSE:
GATHERS DATA FROM ALL PROCESSES INTO AN ARRAY ON ONE PROCESS
CALLING SEQUENCE:
IDL> VALUE=MPI_GATHER(ROOT, DATA)
INPUTS:
ROOT IS THE NUMBER OF THE PROCESS WHICH WILL GATHER THE DATA
DATA IS THE DATA TO BE GATHERED
KEYWORD PARAMETERS:
NONE
OUTPUTS:
VALUE OF RECEIVED DATA
COMMON BLOCKS:
NONE
EXAMPLE:
IDL>ROOT=0
IDL>HELP, CALCULATION_RESULT
CALCULATION_RESULT FLOAT =ARRAY[10]
IDL>PRINT,MPI_COMM_SIZE()
10
RESULT=MPI_GATHER(ROOT,CALCULATION_RESULT)
NOTES:
THE RESULT WILL BE A FLTARR[10,10] ON THE ROOT PROCESSOR
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_INTIALIZE
PURPOSE:
INITIALIZE MPI
CALLING SEQUENCE:
IDL> STS=MPI_INITIALIZE()
INPUTS:
NONE
KEYWORD PARAMETERS:
NONE
OUTPUTS:
STATUS OF MPI INITIALIZATION FROM MPI
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> STS=MPI_INITIALIZE()
NOTES:
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_INTIALIZED
PURPOSE:
CHECK IF MPI HAS BEEN INITIALIZED
CALLING SEQUENCE:
IDL> STS=MPI_INITIALIZED()
INPUTS:
NONE
KEYWORD PARAMETERS:
NONE
OUTPUTS:
STATUS OF MPI INITIALIZATION TRUE OR FALSE
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> IF NOT MPI_INITIALIZED() THEN STS=MPI_INITIALIZE()
NOTES:
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_RECV
PURPOSE:
RECEIVES DATA FROM ANOTHER SPECIFIED PROCESS
CALLING SEQUENCE:
IDL> VALUE=MPI_RECV(SOURCE, DATA)
INPUTS:
SOURCE NUMBER OF PROCESS FROM WHICH DATA WILL BE SENT
DATA IS THE DATA TO BE RECEIVED
KEYWORD PARAMETERS:
NONE
OUTPUTS:
VALUE OF RECEIVED DATA
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> SOURCE=0
IDL> DEST=1
GAIN=MDSVALUE('\MYTREE::GAIN')
IF MYID EQ SOURCE THEN DATA=FINDGEN(100)*GAIN ELSE $
DATA=FLTARR(100)
IF MYID EQ SOURCE THEN DATA=MPI_SEND(1,DATA)
IF MYID EQ DEST THEN DATA=MPI_RECV(0,DATA)
NOTES:
PROCESS TO SEND DATA MUST CALL MPI_SEND
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_RUN
PURPOSE:
RUNS THE IDL PROGRAM OF YOUR CHOICE AND BROADCASTS ITS NAME TO BACKGROUND
IDL PROCESSES ON OTHER PROCESSORS TO RUN
CALLING SEQUENCE:
IDL> STS=MPI_RUN("MYIDLPROGRAM")
INPUTS:
NAME OF PROGRAM TO BE RUN
KEYWORD PARAMETERS:
NONE
OUTPUTS:
STATUS OF MPI BROADCAST OF PROGRAM NAME
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> STS=MPI_RUN("MYIDLPROGRAM")
NOTES:
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_SCATTER
PURPOSE:
SCATTERS AN ARRAY OF DATA FROM ONE PROCESS TO ALL PROCESSES
CALLING SEQUENCE:
IDL> VALUE=MPI_SCATTER(ROOT,DATA,[NSEND])
INPUTS:
ROOT IS THE NUMBER OF THE PROCESS WHICH WILL SCATTER THE DATA
DATA IS THE DATA TO BE SCATTERED ON THE ROOT PROCESS
FOR ANY OTHER PROCESS DATA IS AN EMPTY VAR TO CONTAIN WHATEVER SIZE &
SHAPE DATA WILL BE RECEIVED ON THAT PROCESS
NSEND (OPTIONAL) IS THE NUMBER OF ELEMENTS TO SEND TO EACH PROCESS
KEYWORD PARAMETERS:
NONE
OUTPUTS:
VALUE OF RECEIVED DATA
COMMON BLOCKS:
NONE
EXAMPLE:
IDL>ROOT=0
IDL> HELP, DATA ,/STRUCT
DATA STRUCT = Array[20]
NSC FLOAT Array[12, 72, 20]
RGUESS FLOAT Array[72, 20]
CG FLOAT Array[5, 20]
CC_CHI FLOAT Array[3]
DNSC FLOAT Array[12, 72, 20]
WV_ALL FLOAT Array[330, 20]
QT_LAMBDA FLOAT Array[330, 6, 20]
DQT_LAMBDA FLOAT Array[330, 6, 20]
THETA FLOAT Array[20]
RADIUS FLOAT Array[20]
FB FLOAT Array[330, 20]
DFB FLOAT Array[330, 20]
LFACTOR FLOAT Array[72]
TL FLOAT Array[72]
R1 FLOAT Array[20]
R2 FLOAT Array[20]
DR FLOAT Array[20]
TIME FLOAT Array[31]
M FLOAT Array[6, 20]
NFACTOR FLOAT Array[20, 2]
IDL> IF MYID EQ ROOT THEN MPTS_MASTER, 109032,DATA=DATA
IDL>PRINT,MPI_COMM_SIZE()
10
RESULT=MPI_SCATTER(ROOT,DATA,2)
NOTES:
THE RESULT WILL BE A STRUCTURE ARRAY[2] ON EACH PROCESSOR
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_SEND
PURPOSE:
SENDS DATA FROM ONE PROCESS TO THE SPECIFIED PROCESS
CALLING SEQUENCE:
IDL> VALUE=MPI_SEND(DESTINATION, DATA)
INPUTS:
DESTINATION NUMBER OF PROCESS TO WHICH DATA WILL BE SENT
DATA IS THE DATA TO BE SENT
KEYWORD PARAMETERS:
NONE
OUTPUTS:
VALUE OF SENT DATA
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> SOURCE=0
IDL> DEST=1
GAIN=MDSVALUE('\MYTREE::GAIN')
IF MYID EQ SOURCE THEN DATA=FINDGEN(100)*GAIN ELSE $
DATA=FLTARR(100)
IF MYID EQ SOURCE THEN DATA=MPI_SEND(1,DATA)
IF MYID EQ DEST THEN DATA=MPI_RECV(0,DATA)
NOTES:
PROCESS TO RECEIVE DATA MUST CALL MPI_RECV
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL
NAME:
MPI_TIME
PURPOSE:
GETS MPI TIME ELAPSED SINCE INITIALIZATION
CALLING SEQUENCE:
IDL> TIME=MPI_TIME()
INPUTS:
NONE
KEYWORD PARAMETERS:
NONE
OUTPUTS:
TIME IN SECONDS
COMMON BLOCKS:
NONE
EXAMPLE:
IDL> TIME=MPI_TIME()
NOTES:
MODIFICATION HISTORY:
18-DEC-02 Written by Dana Mastrovito, PPPL