📄 winerr.c
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* * * (C) 2003 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */#include "mpi.h"#include <stdio.h>#include "mpitest.h"static char MTEST_Descrip[] = "Test the routines to control error handlers on windows";static int calls = 0;static int errs = 0;static MPI_Win mywin;static int expected_err_class = MPI_ERR_OTHER;void weh( MPI_Win *win, int *err, ... ){ int errclass; MPI_Error_class( *err, &errclass ); if (errclass != expected_err_class) { errs++; printf( "Unexpected error code (class = %d)\n", errclass ); } if (*win != mywin) { errs++; printf( "Unexpected window (got %x expected %x)\n", (int)*win, (int)mywin ); } calls++; return;}int main( int argc, char *argv[] ){ int err; int buf[2]; MPI_Win win; MPI_Comm comm; MPI_Errhandler newerr, olderr; MTest_Init( &argc, &argv ); comm = MPI_COMM_WORLD; MPI_Win_create_errhandler( weh, &newerr ); MPI_Win_create( buf, 2*sizeof(int), sizeof(int), MPI_INFO_NULL, comm, &win ); mywin = win; MPI_Win_get_errhandler( win, &olderr ); if (olderr != MPI_ERRORS_ARE_FATAL) { errs++; printf( "Expected errors are fatal\n" ); } MPI_Win_set_errhandler( win, newerr ); expected_err_class = MPI_ERR_RANK; err = MPI_Put( buf, 1, MPI_INT, -5, 0, 1, MPI_INT, win ); if (calls != 1) { errs ++; printf( "newerr not called\n" ); calls = 1; } expected_err_class = MPI_ERR_OTHER; MPI_Win_call_errhandler( win, MPI_ERR_OTHER ); if (calls != 2) { errs ++; printf( "newerr not called (2)\n" ); } MPI_Win_free( &win ); MPI_Errhandler_free( &newerr ); MTest_Finalize( errs ); MPI_Finalize(); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -