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

📄 buildiface

📁 fortran并行计算包
💻
📖 第 1 页 / 共 5 页
字号:
#    'Scan' => '1:2', 'Scan-1' => 'in:bufptr', 'Scan-2' => 'in:bufptr',#    'Gather' => '1', 'Gather-1' => 'in:inplace',     'Gatherv' => '1', 'Gatherv-1' => 'in:inplace',    'Scatter' => '4', 'Scatter-4' => 'in:inplace',    'Scatterv' => '5', 'Scatterv-5' => 'in:inplace',    'Allgather' => '1', 'Allgather-1' => 'in:inplace',    'Allgatherv' => '1', 'Allgatherv-1' => 'in:inplace',    'Reduce' => '1', 'Reduce-1' => 'in:inplace',    'Allreduce' => '1', 'Allreduce-1' => 'in:inplace',    'Reduce_scatter' => '1', 'Reduce_scatter-1' => 'in:inplace',    'Scan' => '1', 'Scan-1' => 'in:inplace',      'Add_error_string' => '2', 'Add_error_string-2' => 'in:addnull',    'Attr_put' => '3', 'Attr_put-3' => 'in:addrint',    'Attr_get' => '3:4', 'Attr_get-4' => 'out:logical', 		 'Attr_get-3' => 'out:attrint:4',    'Comm_set_attr' => '3', 'Comm_set_attr-3' => 'in:addraint',     'Type_set_attr' => '3', 'Type_set_attr-3' => 'in:addraint',    'Win_set_attr' => '3', 'Win_set_attr-3' => 'in:addraint',    'Comm_get_attr' => '3:4', 'Comm_get_attr-4' => 'out:logical',		  'Comm_get_attr-3' => 'out:attraint:4',    'Type_get_attr' => '3:4', 'Type_get_attr-4' => 'out:logical',		  'Type_get_attr-3' => 'out:attraint:4',    'Win_get_attr' => '3:4', 'Win_get_attr-4' => 'out:logical',		   		  'Win_get_attr-3' => 'out:attraint:4',    'Buffer_detach' => '1', 'Buffer_detach-1' => 'out:bufaddr',		     'Cart_create' => '4:5', 'Cart_create-4' => 'in:logical_array:*v2',     'Cart_create-5' => 'in:logical',     'Cart_get' => '4', 'Cart_get-4' => 'out:logical_array:*v2',    'Comm_accept' => '1', 'Comm_accept-1' => 'in:addnull',    'Comm_connect' => '1', 'Comm_connect-1' => 'in:addnull',    'Comm_get_name' => '2', 'Comm_get_name-2' => 'out:blankpad',    'Comm_set_name' => '2', 'Comm_set_name-2' => 'in:addnull',    'Comm_spawn' => '1:2:8', 'Comm_spawn-1' => 'in:addnull', 		 'Comm_spawn-2' => 'in:chararray',		  'Comm_spawn-8' => 'in:errcodesignore',    'Comm_test_inter' => '2', 'Comm_test_inter-2' => 'out:logical',    'Get_processor_name' => '1', 'Get_processor_name-1' => 'out:blankpad',    'Error_string' => '2', 'Error_string-2' => 'out:blankpad',    'Intercomm_merge' => '2', 'Intercomm_merge-2' => 'in:logical',    'Info_get' => '2:4:5', 'Info_get-2' => 'in:addnull',		  'Info_get-4' => 'out:blankpadonflag:l5',		  'Info_get-5' => 'out:logical',    'Info_set' => '2:3', 'Info_set-2' => 'in:addnullandtrim', 		  'Info_set-3' => 'in:addnullandtrim',    'Info_get_nthkey' => '3', 'Info_get_nthkey-3' => 'out:blankpad',    'Info_get_valuelen' => '2:4', 'Info_get_valuelen-2' => 'in:addnull',		  'Info_get_valuelen-4' => 'out:logical',    'Info_delete' => '2', 'Info_delete-2' => 'in:addnull',    'Lookup_name' => '1:3', 'Lookup_name-1' => 'in:addnull', 		  'Lookup_name-3' => 'out:blankpad',    'Open_port' => '2', 'Open_port-2' => 'out:blankpad',    'Close_port' => '1', 'Close_port-1' => 'in:addnull',    'Pack_external' => '1:6', 'Pack_external-1' => 'in:addnull',		  'Pack_external-6' => 'in:aintToVal',    'Pack_external_size' => '1', 'Pack_external_size-1' => 'in:addnull',    'Publish_name' => '1:3', 'Publish_name-1' => 'in:addnull',		  'Publish_name-3' => 'in:addnull',# comm spawn multiple needs slightly different routines    'Comm_spawn_multiple' => '2:3:9',		 'Comm_spawn_multiple-2' => 'in:chararray:*v1',		 'Comm_spawn_multiple-3' => 'in:chararray2:*v1',		  'Comm_spawn_multiple-9' => 'in:errcodesignore',    'Initialized' => '1', 'Initialized-1' => 'out:logical',    'Iprobe' => '4:5', 'Iprobe-4' => 'out:logical',		 'Iprobe-5' => 'in:status',    'Probe' => '4', 'Probe-4' => 'in:status',    'Recv' => '7', 'Recv-7' => 'in:status',    'Sendrecv' => '12', 'Sendrecv-12' => 'in:status',    'Sendrecv_replace' => '9', 'Sendrecv_replace-9' => 'in:status',#    'Send' => '1', 'Send-1' => 'in:bufptr',#    'Ssend' => '1', 'Ssend-1' => 'in:bufptr',#    'Rsend' => '1', 'Rsend-1' => 'in:bufptr',#    'Bsend' => '1', 'Bsend-1' => 'in:bufptr',#    'Isend' => '1', 'Isend-1' => 'in:bufptr',#    'Issend' => '1', 'Issend-1' => 'in:bufptr',#    'Irsend' => '1', 'Irsend-1' => 'in:bufptr',#    'Ibsend' => '1', 'Ibsend-1' => 'in:bufptr',#    'Irecv' => '1', 'Irecv-1' => 'in:bufptr',#    'Recv' => '1', 'Recv-1' => 'in:bufptr',		  #    'Send_init' => '1', 'Send_init-1' => 'in:bufptr',#    'Bsend_init' => '1', 'Bsend_init-1' => 'in:bufptr',#    'Ssend_init' => '1', 'Ssend_init-1' => 'in:bufptr',#    'Rsend_init' => '1', 'Rsend_init-1' => 'in:bufptr',#    'Recv_init' => '1', 'Recv_init-1' => 'in:bufptr',#    'Sendrecv' => '1:6', 'Sendrecv-1' => 'in:bufptr', 'Sendrecv-6' => 'in:bufptr',#    'Sendrecv_replace' => '1', 'Sendrecv_replace-1' => 'in:bufptr',    'Test_cancelled' => '2', 'Test_cancelled-2' => 'out:logical',    'Test' => '2:3', 'Test-2' => 'out:logical',		 'Test-3' => 'in:status',    'Testall' => '3:4', 'Testall-3' => 'out:logical', 		 'Testall-4' => 'in:status_array',    'Testany' => '3:4:5', 'Testany-4' => 'out:logical',		 'Testany-3' => 'out:index',		 'Testany-5' => 'in:status',    'Testsome' => '4:5', 'Testsome-4' => 'out:index_array:*v3',		 'Testsome-5' => 'in:status_array',    'Type_create_hvector' => 3, 'Type_create_hvector-3' => 'in:aintToVal',    'Type_create_resized' => '2:3', 		  'Type_create_resized-2' => 'in:aintToVal', 		  'Type_create_resized-3' => 'in:aintToVal',    'Type_get_name' => '2', 'Type_get_name-2' => 'out:blankpad',    'Type_set_name' => '2', 'Type_set_name-2' => 'in:addnull',    'Type_extent' => '2', 'Type_extent-2' => 'out:aintToInt',	          'Type_lb' => '2', 'Type_lb-2' => 'out:aintToInt',	          'Type_ub' => '2', 'Type_ub-2' => 'out:aintToInt',	          'Type_struct' => '3', 'Type_struct-3' => 'in:intToAintArr:*v1',    'Type_hindexed' => '3', 'Type_hindexed-3' => 'in:intToAintArr:*v1',# also need    'Type_hvector' => '3', 'Type_hvector-3' => 'in:intToAint',    'Unpack_external' => '1:3', 'Unpack_external-1' => 'in:addnull',		  'Unpack_external-3' => 'in:aintToVal',    'Unpublish_name' => '1:3', 'Unpublish_name-1' => 'in:addnull',		  'Unpublish_name-3' => 'in:addnull',    'Win_create' => '2', 'Win_create-2' => 'in:aintToVal',     'Accumulate' => '5', 'Accumulate-5' => 'in:aintToVal',    'Put' => '5', 'Put-5' => 'in:aintToVal',     'Get' => '5', 'Get-5' => 'in:aintToVal',    'Alloc_mem' => '1', 'Alloc_mem-1' => 'in:aintToVal',     'Win_get_name' => '2', 'Win_get_name-2' => 'out:blankpad',    'Win_set_name' => '2', 'Win_set_name-2' => 'in:addnull',		      'Wait' => '2', 'Wait-2' => 'in:status',    'Waitall' => '3', 'Waitall-3' => 'in:status_array',		     'Waitany' => '3:4', 'Waitany-3' => 'out:index',		 'Waitany-4' => 'in:status',    'Waitsome' => '4:5', 'Waitsome-4' => 'out:index_array:*v3',		 'Waitsome-5' => 'in:status_array',# File routines are separate    'File_open' => '2:5', 'File_open-2' => 'in:addnull',		 'File_open-5' => 'out:FileToFint',    'File_close' => '1', 'File_close-1', 'inout:FileToFint',    'File_delete' => '1', 'File_delete-1' => 'in:addnull',    'File_set_view' => '5', 'File_set_view-5' => 'in:addnull',    'File_get_view' => '5', 'File_get_view-5' => 'out:blankpad',    'File_set_atomicity' => '2', 'File_set_atomicity-2' => 'in:logical',    'File_get_atomicity' => '2', 'File_get_atomicity-2' => 'out:logical',    'Register_datarep' => '1:2:3', 'Register_datarep-1' => 'in:addnull',		  'Register_datarep-2' => 'in:checkdatarep',		  'Register_datarep-3' => 'in:checkdatarep',    );# # These give special post processing after the MPI routine is called.  # The named routine is invoked with the argument number, e.g., # &"setF90keyval"( FD,  1 );#%specialPost = (		'Type_create_keyval' => 3,		'Type_create_keyval-3' => 'setF90keyval',		'Comm_create_keyval' => 3,		'Comm_create_keyval-3' => 'setF90keyval',		'Win_create_keyval' => 3,		'Win_create_keyval-3' => 'setF90keyval', 		'Grequest_start' => 5,		'Grequest_start-5' => 'setF77greq',		);## Load any definition fileif ($definition_file) {    require $definition_file;}$arg_string = join( ' ', @ARGV );if ($build_prototypes) {    open( PROTOFD, ">$prototype_header_file.new" ) || die "Cannot open $prototype_header_file.new\n";    print PROTOFD "/* -*- Mode: C; c-basic-offset:4 ; -*- */\/*  \ *  (C) 2001 by Argonne National Laboratory.\ *      See COPYRIGHT in top-level directory.\ *\ * This file is automatically generated by buildiface $arg_string\ * DO NOT EDIT\ */\/* Prototypes for Fortran Interface Functions */\n";}%skipBlocks = ();&ReadAndProcessInterface( $prototype_file, 0 );# if doing MPI2, we also need to read the MPI-2 protottypesif ( -s "../../mpi/romio/include/mpio.h.in" && $build_io) {     %skipBlocks = ( 'HAVE_MPI_DARRAY_SUBARRAY' => 1,  	 	    'HAVE_MPI_INFO' => 1,		    'MPICH2' => 1 );    &ReadAndProcessInterface( "../../mpi/romio/include/mpio.h.in", 1 );    %skipBlocks = ();}# Write a list of the routines that we've found.if ($writeRoutineList) {    open LFD, ">mpi.dat" || die "Cannot open mpi.dat\n";    foreach my $name (sort(keys(%mpi_routines))) {	print LFD "$name\n";    }    close LFD;}if ($is_MPI) {    # Build the special routines    &build_specials;}else {    for ($i=0; $i<=$#ExtraRoutines; $i++) {	$r = $ExtraRoutines[$i];	&$r;    }}if ($build_prototypes) {    close PROTOFD;    &ReplaceIfDifferent( $prototype_header_file, 			 $prototype_header_file . ".new" );}## This block can be used to create the Makefileif ("$buildMakefile") {    open ( MAKEFD, ">Makefile.sm.new" ) || die "Cannot create Makefile.sm.new";    print MAKEFD "# DO NOT EDIT\n# This file created by buildiface $arg_string\n";    # Check to see if autoconf works.  Autoconf 2.13 has a bug in the Fortran     # language support that will break this module.  Since some sites have     # corrected the bug in autoconf 2.13, CheckAutoconf test for this bug.    if (&CheckAutoconf) {	# Autoconf does not work	# This isn't quite right, because any updates will be broken	# FIXME : but not sure how to do this.	;    }    else {	# just use the regular autoconf    ;}        #print MAKEFD "smvar_debug = 1\n";    print MAKEFD "smvar_do_dependencies = ignore\n";    &print_line(  MAKEFD, "mpi_sources = ", 80, "\\\n\t", 8 );    for ($i=0; $i<=$#files; $i++) {	$name = $files[$i];	&print_line( MAKEFD, "$name ", 80, "\\\n\t", 8 );    }    &print_endline( MAKEFD );    print MAKEFD "MPIFLIBNAME = \@MPIFLIBNAME\@\n";    print MAKEFD "PMPIFLIBNAME = \@PMPIFLIBNAME\@\n";    # The definitions for the Fortran wrappers are special    &AddFwrapDefs;    print MAKEFD "\lib\${MPIFLIBNAME}_a_DIR = ROOTDIR/lib\lib\${MPIFLIBNAME}_a_SOURCES = \${mpi_sources} setbot.c setbotf.f\\HEADERS = fproto.h mpi_fortimpl.h\profilelib_\${MPIFLIBNAME} = \${PMPIFLIBNAME}\profilelib_\${MPIFLIBNAME}_SOURCES = \${mpi_sources}\INCLUDES = -I../../include -I\${master_top_srcdir}/src/include -I\${master_top_srcdir}/src/binding/f77 \maint-clean:\\trm -f \${mpi_sources} $prototype_header_file\n";    print MAKEFD "install_INCLUDE = mpif.h\n";    # Add the documentation    print MAKEFD "# Documentation sourcesdoc_sources = mpif77.txtDOCDESTDIRS = html:www/www1,man:man/man1,latex:doc/refmandoc_HTML_SOURCES  = \${doc_sources}doc_MAN_SOURCES   = \${doc_sources}doc_LATEX_SOURCES = \${doc_sources}";    # Since configure copies mpif.h to the include dir, we need to remove it    # in a distclean step.  Ditto for mpif77; add the generated files.    print MAKEFD "distclean-local:\n";    print MAKEFD "\trm -f mpif_bottom.h\n";    print MAKEFD "\trm -f ../../../src/include/mpif.h\n";    print MAKEFD "\trm -f ../../../bin/mpif77\n";    # Add the generated files to the maintainer clean target    print MAKEFD "maintainerclean-local:\n";    &print_line(  MAKEFD, "\trm -f ", 80, "\\\n\t", 8 );    for ($i=0; $i<=$#files; $i++) {	if ( (($i+1) % 20) == 0) {	    # Avoid having a line that is too long	    &print_endline( MAKEFD );	    &print_line( MAKEFD, "\trm -f ", 80, "\\n\t", 8 );	}	$name = $files[$i];	&print_line( MAKEFD, "$name ", 80, "\\\n\t", 8 );    }    &print_endline( MAKEFD );    print MAKEFD "\trm -f Makefile.sm\n";    # Add the definitions for compiling the members of the wrap file    &AddFwrapBuild;    close( MAKEFD );    &ReplaceIfDifferent( "Makefile.sm", "Makefile.sm.new" );}## ------------------------------------------------------------------------# Procedures# print_line( FD, line, count, continue, continuelen )# Print line to FD; if line size > count, output continue string and# continue.  Use print_endline to finish a linesub print_line {    my $FD = $_[0];    my $line = $_[1];    my $count = $_[2];    my $continue = $_[3];    my $continue_len = $_[4];        $linelen = length( $line );    #print "linelen = $linelen, print_line_len = $print_line_len\n";    if ($print_line_len + $linelen > $count) {	print $FD $continue;	$print_line_len = $continue_len;    }    print $FD $line;    $print_line_len += $linelen;}sub print_endline {    my $FD = $_[0];    print $FD "\n";    $print_line_len = 0;}# Print the header of the file, containing the definitions etc.sub print_header {    my $routine_name = $_[0];    my $lcname = $_[1];    my $args = $_[2];    my $extra = $_[3];     &print_copyright( );    if ($extra) {	print $OUTFD $extra;    }    &print_profiling_block( $routine_name, $lcname, $args );    &print_name_map_block( $routine_name, $lcname );    my $fn = "HelperFor" . $routine_name ;    if (defined(&$fn)) {	&$fn( $OUTFD );    }}sub print_copyright {    print $OUTFD "/* -*- Mode: C; c-basic-offset:4 ; -*- */\/*  \ *  (C) 2001 by Argonne National Laboratory.\ *      See COPYRIGHT in top-level directory.\ *\ * This file is automatically generated by buildiface $arg_string\ * DO NOT EDIT\ */\#include \"${header_file}\"\n\n";}## Print the (ugly) profiling name definition block.# This is made more complex by the need, new with gcc 3.2, to # generate an extern declaration of the routine *before* the pragma# sub print_profiling_block {    my $routine_name = $_[0];    my $lcname = $_[1];    my $args   = $_[2];    my $ucname = uc($lcname);    if ($do_weak) {	# We do the multiple pragma only for the gcc-style names for now         # This simplifies the generation of the names for the output;	# Later, we can add support for other name mappings.	print $OUTFD "\/* Begin MPI profiling block */\#if defined(USE_WEAK_SYMBOLS) && !defined(USE_ONLY_MPI_NAMES) \#if defined(HAVE_MULTIPLE_PRAGMA_WEAK) && defined(F77_NAME_LOWER_2USCORE)\n";        &print_weak_decl( $OUTFD, "MPI_$ucname", $args, $lcname ); 	&print_weak_decl( $OUTFD, "mpi_${lcname}__", $args, $lcname );

⌨️ 快捷键说明

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