⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c2f2cwin.c

📁 fortran并行计算包
💻 C
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* * *  (C) 2001 by Argonne National Laboratory. *      See COPYRIGHT in top-level directory. *//* * This file contains the C routines used in testing the c2f and f2c  * handle conversion functions for MPI_Win  * * The tests follow this pattern: * *  Fortran main program *     calls c routine with each handle type, with a prepared *     and valid handle (often requires constructing an object) * *     C routine uses xxx_f2c routine to get C handle, checks some *     properties (i.e., size and rank of communicator, contents of datatype) * *     Then the Fortran main program calls a C routine that provides *     a handle, and the Fortran program performs similar checks. * * We also assume that a C int is a Fortran integer.  If this is not the * case, these tests must be modified. *//* style: allow:fprintf:1 sig:0 */#include <stdio.h>#include "mpi.h"#include "../../include/mpitestconf.h"#include <string.h>/*    Name mapping.  All routines are created with names that are lower case   with a single trailing underscore.  This matches many compilers.   We use #define to change the name for Fortran compilers that do   not use the lowercase/underscore pattern */#ifdef F77_NAME_UPPER#define c2fwin_ C2FWIN#define f2cwin_ F2CWIN#elif defined(F77_NAME_LOWER) || defined(F77_NAME_MIXED)/* Mixed is ok because we use lowercase in all uses */#define c2fwin_ c2fwin#define f2cwin_ f2cwin#elif defined(F77_NAME_LOWER_2USCORE) || defined(F77_NAME_LOWER_USCORE) || \      defined(F77_NAME_MIXED_USCORE)/* Else leave name alone (routines have no underscore, so both   of these map to a lowercase, single underscore) */#else #error 'Unrecognized Fortran name mapping'#endif/* Prototypes to keep compilers happy */int c2fwin_( int * );void f2cwin_( int * );int c2fwin_( int *win ){    MPI_Win cWin = MPI_Win_f2c( *win );    MPI_Group group, wgroup;    int result;    MPI_Win_get_group( cWin, &group );    MPI_Comm_group( MPI_COMM_WORLD, &wgroup );    MPI_Group_compare( group, wgroup, &result );    if (result != MPI_IDENT) {	fprintf( stderr, "Win: did not get expected group\n" );	return 1;    }    MPI_Group_free( &group );    MPI_Group_free( &wgroup );    return 0;}/*  * The following routines provide handles to the calling Fortran program */void f2cwin_( int *win ){    MPI_Win cWin;    MPI_Win_create( 0, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &cWin );    *win = MPI_Win_c2f( cWin );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -