c********************************************************************** c Message Passing Parallel Interface c c 1998 1/18 c composed by H.Kuroda c c*********************************************************************** c All Rights Reserved, Copyright (C) 1998, H.Kuroda c/*- c * Copyright (c) 1998 Information Promotion Agency of Japan and H.Kuroda c * All rights reserved. c * c * Redistribution and non-commercial use in source and binary forms, c * with or without modification, are permitted provided that the following c * conditions are met: c * c * 1. Redistributions of source code must retain the above copyright c * notice, this list of conditions and the following disclaimer. c * c * 2. Redistributions in binary form must reproduce the above copyright c * notice, this list of conditions and the following disclaimer in the c * documentation and/or other materials provided with the distribution. c * c * 3. All advertising materials mentioning features or use of this c * software must display the following acknowledgement: c * c * This product includes software developed by Information Promotion c * Agency of Japan and H.Kuroda c * c * 4. The name "Information Promotion Agency" or "H.Kuroda" should not be c * used to endorse or promote products derived from this software c * without specific prior written permission. c * c * 5. Any use of the source code or the binary in a commercial product, c * whether may it be the origial representation or in some modified form, c * is not permitted without specific prior written permission. c * c * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND c * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE c * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE c * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE c * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL c * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS c * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) c * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT c * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY c * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF c * SUCH DAMAGE. c */ c [説明] c timeの現行値を浮動小数値として返す c [入力変数] c なし c [出力変数] c なし c [戻り値] c timeの現行値 DOUBLE PRECISION FUNCTION MPP_WTIME() DOUBLE PRECISION MPI_WTIME EXTERNAL MPI_WTIME MPP_WTIME=MPI_WTIME() RETURN END c [説明] c MPPの初期化 c [入力変数] c なし c [出力変数] c X1:完了コード SUBROUTINE MPP_INIT(X1) INTEGER X1 CALL MPI_INIT(X1) RETURN END c [説明] c MPPの初期化の確認 c [入力変数] c なし c [出力変数] c X1:初期化されているかどうかのフラグ c X2:完了コード SUBROUTINE MPP_INITIALIZED(X1,X2) INTEGER X1,X2 CALL MPI_INITIALIZED(X1,X2) RETURN END c [説明] c 自プロセッサ番号の取得 c [入力変数] c X1:コミュニケータ c [出力変数] c X2:自プロセッサ番号 c X3:完了コード SUBROUTINE MPP_COMM_RANK(X1,X2,X3) INTEGER X1,X2,X3 CALL MPI_COMM_RANK(X1,X2,X3) RETURN END c [説明] c 全体のプロセッサ数の取得 c [入力変数] c X1:コミュニケータ c [出力変数] c X2:全体のプロセッサ数 c X3:完了コード SUBROUTINE MPP_COMM_SIZE(X1,X2,X3) INTEGER X1,X2,X3 CALL MPI_COMM_SIZE(X1,X2,X3) RETURN END c [説明] c MPPの終了 c [入力変数] c なし c [出力変数] c X1:完了コード SUBROUTINE MPP_FINALIZE(X1) INTEGER X1 CALL MPI_FINALIZE(X1) RETURN END c [説明] c 非ブロッキング操作が完了するまで待機します c [入力変数] c X1:待機要求(出力にも使われる) c [出力変数] c X1:待機要求(入力にも使われる) c X2:状況オブジェクト c X3:完了コード SUBROUTINE MPP_WAIT(X1,X2,X3) INTEGER X1,X2,X3 CALL MPI_WAIT(X1,X2,X3) RETURN END c [説明] c すべてのプロセッサが呼出しを完了するまで待機します c [入力変数] c X1:コミュニケータ c [出力変数] c X2:完了コード SUBROUTINE MPP_BARRIER(X1,X2) INTEGER X1,X2 CALL MPI_BARRIER(X1,X2) RETURN END c [説明] c ブロッキング送信 c [入力変数] c X1:送信バッファ c X2:要素数 c X3:データの型 c X4:宛先番号 c X5:メッセージ番号 c X6:コミュニケータ c [出力変数] c X7:完了コード SUBROUTINE MPP_SEND(X1,X2,X3,X4,X5,X6,X7) INTEGER X2,X3,X4,X5,X6,X7 DIMENSION X1(*) CALL MPI_SEND(X1,X2,X3,X4,X5,X6,X7) RETURN END c [説明] c 非ブロッキング送信 c [入力変数] c X1:送信バッファ c X2:要素数 c X3:データの型 c X4:宛先番号 c X5:メッセージ番号 c X6:コミュニケータ c [出力変数] c X7:通信要求ハンドル c X8:完了コード SUBROUTINE MPP_ISEND(X1,X2,X3,X4,X5,X6,X7,X8) INTEGER X2,X3,X4,X5,X6,X7,X8 DIMENSION X1(*) CALL MPI_ISEND(X1,X2,X3,X4,X5,X6,X7,X8) RETURN END c [説明] c ブロッキング受信 c [入力変数] c X2:要素数 c X3:データの型 c X4:送信元番号 c X5:メッセージ番号 c X6:コミュニケータ c [出力変数] c X1:受信バッファ c X7:状況オブジェクト c X8:完了コード SUBROUTINE MPP_RECV(X1,X2,X3,X4,X5,X6,X7,X8) INTEGER X2,X3,X4,X5,X6,X8 DIMENSION X1(*),X7(*) CALL MPI_RECV(X1,X2,X3,X4,X5,X6,X7,X8) RETURN END c [説明] c 非ブロッキング受信 c [入力変数] c X2:要素数 c X3:データの型 c X4:送信元番号 c X5:メッセージ番号 c X6:コミュニケータ c [出力変数] c X1:受信バッファ c X7:通信要求ハンドル c X8:完了コード SUBROUTINE MPP_IRECV(X1,X2,X3,X4,X5,X6,X7,X8) INTEGER X2,X3,X4,X5,X6,X7,X8 DIMENSION X1(*) CALL MPI_IRECV(X1,X2,X3,X4,X5,X6,X7,X8) RETURN END c [説明] c ブロードキャスト送信 c [入力変数] c X1:送信バッファ c X2:要素数 c X3:データの型 c X4:送信元番号 c X5:コミュニケータ c [出力変数] c X6:完了コード SUBROUTINE MPP_BCAST(X1,X2,X3,X4,X5,X6) INTEGER X2,X3,X4,X5,X6 DIMENSION X1(*) CALL MPI_BCAST(X1,X2,X3,X4,X5,X6) RETURN END c [説明] c 縮約演算 c [入力変数] c X1:送信バッファ c X3:要素数 c X4:データの型 c X5:演算の種類 c X6:コミュニケータ c [出力変数] c X2:受信バッファ c X7:完了コード SUBROUTINE MPP_ALLREDUCE(X1,X2,X3,X4,X5,X6,X7) INTEGER X3,X4,X5,X6,X7 DIMENSION X1(*),X2(*) CALL MPI_ALLREDUCE(X1,X2,X3,X4,X5,X6,X7) RETURN END c [説明] c 縮約演算を行い、結果を1個のプロセッサが持つ c [入力変数] c X1:送信バッファ c X3:要素数 c X4:データの型 c X5:演算の種類 c X6:結果を受けるプロセッサ番号 c X7:コミュニケータ c [出力変数] c X2:受信バッファ c X8:完了コード SUBROUTINE MPP_REDUCE(X1,X2,X3,X4,X5,X6,X7,X8) INTEGER X3,X4,X5,X6,X7,X8 DIMENSION X1(*),X2(*) CALL MPI_REDUCE(X1,X2,X3,X4,X5,X6,X7,X8) RETURN END c [説明] c 各プロセッサからすべてのプロセッサに個別メッセージを送信 c [入力変数] c X1:送信バッファ c X2:要素数 c X3:データの型 c X5:要素数 c X6:データの型 c X7:コミュニケータ c [出力変数] c X4:受信バッファ c X8:完了コード SUBROUTINE MPP_ALLTOALL(X1,X2,X3,X4,X5,X6,X7,X8) INTEGER X2,X3,X5,X6,X7,X8 DIMENSION X1(*),X4(*) CALL MPI_ALLTOALL(X1,X2,X3,X4,X5,X6,X7,X8) RETURN END c [説明] c コミュニケータを複数のコミュニケータに分割する c [入力変数] c X1:コミュニケータ c X2:サブセット割当ての制御 c X3:ランク割当ての制御 c [出力変数] c X4:新規のコミュニケータ c X5:完了コード SUBROUTINE MPP_COMM_SPLIT(X1,X2,X3,X4,X5) INTEGER X1,X2,X3,X4,X5 CALL MPI_COMM_SPLIT(X1,X2,X3,X4,X5) RETURN END