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

📄 iotest.c

📁 fortran并行计算包
💻 C
字号:
/*   (C) 2001 by Argonne National Laboratory.       See COPYRIGHT in top-level directory.*/#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include "mpi.h"#include "mpe.h"#define KBYTES       1024#define MBYTES       1048576#define PATH_STRLEN  256void set_tmpfilename( char*, int );int main( int argc, char *argv[] ){    char    processor_name[ MPI_MAX_PROCESSOR_NAME ];    char    tmpfilename[ PATH_STRLEN ];    char    data[ MBYTES ];     double  startwtime, endwtime;    int     event1a, event1b;    int     myid, numprocs;    int     fd, namelen, ii, ierr;     MPI_Init( &argc, &argv );    MPI_Comm_size( MPI_COMM_WORLD, &numprocs );    MPI_Comm_rank( MPI_COMM_WORLD, &myid );    MPI_Get_processor_name( processor_name, &namelen );    fprintf( stderr, "Process %d running on %s\n", myid, processor_name );    /*  Get event ID from MPE, user should NOT assign event ID  */    event1a = MPE_Log_get_event_number();     event1b = MPE_Log_get_event_number();     startwtime  = 0.0;    if ( myid == 0 ) {        MPE_Describe_state( event1a, event1b, "DiskIO", "purple" );        startwtime = MPI_Wtime();    }    set_tmpfilename( tmpfilename, myid );    fd = open( tmpfilename, O_RDWR|O_CREAT|O_TRUNC, 0600 );    if ( fd == -1 ) {        fprintf( stderr, "open() fails!\n" );        fflush( stderr );        MPI_Abort( MPI_COMM_WORLD, -1 );    }    MPI_Barrier( MPI_COMM_WORLD );    for ( ii = 0; ii < 128; ii++ ) {        MPE_Log_event( event1a, 0, NULL );        ierr = write( fd, data, 64*KBYTES );        MPE_Log_event( event1b, 0, NULL );    }        MPI_Barrier( MPI_COMM_WORLD );    close( fd );    if ( myid == 0 ) {        endwtime = MPI_Wtime();        printf( "wall clock time = %f\n", endwtime-startwtime );    }    MPI_Finalize();    return( 0 );}void set_tmpfilename( char *tmp_pathname, int my_rank ){    char   *env_tmpdir = NULL;    char    tmpdirname_ref[ PATH_STRLEN ] = "";    char    tmpdirname[ PATH_STRLEN ] = "";    char    tmpfilename[ PATH_STRLEN ] = "";    /* MPE_TMPDIR takes precedence over TMPDIR */    env_tmpdir = (char *) getenv( "MPE_TMPDIR" );    if ( env_tmpdir == NULL )        env_tmpdir = (char *) getenv( "TMPDIR" );    if ( env_tmpdir == NULL )        env_tmpdir = (char *) getenv( "TMP" );    if ( env_tmpdir == NULL )        env_tmpdir = (char *) getenv( "TEMP" );    /*  Set tmpdirname_ref to TMPDIR if available  */    if ( env_tmpdir != NULL )        strcat( tmpdirname_ref, env_tmpdir );    else#ifdef HAVE_WINDOWS_H        if ( GetTempPath( PATH_STRLEN, tmpdirname_ref ) == 0 )            strcat( tmpdirname_ref, "\\");#else        strcat( tmpdirname_ref, "/tmp" );#endif    if ( env_tmpdir != NULL )        strcpy( tmpdirname, env_tmpdir );    else        strcpy( tmpdirname, tmpdirname_ref );    if ( strlen( tmpdirname ) <= 0 ) {        fprintf( stderr, __FILE__":CLOG_Util_get_tmpfilename() - \n"                         "\t""strlen(tmpdirname) = %d\n",                         (int)strlen( tmpdirname ) );        fflush( stderr );        exit( 1 );    }    /*  Set the local tmp filename then tmp_pathname */    strcpy( tmp_pathname, tmpdirname );    sprintf( tmpfilename, "/tmp_taskID=%04d_XXXXXX", my_rank );    strcat( tmp_pathname, tmpfilename );}

⌨️ 快捷键说明

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