[mpich] MPICH primary repository branch, master, updated. v3.1rc4-2-ge7cef01
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "MPICH primary repository". The branch, master has been updated via e7cef017d770711afd152c3899602c9d58a5c392 (commit) via f3f022b4243df40a038835990568125be41a9b29 (commit) from 09b425c7ffd1767db5e5f942fa4294ad5d5a1d17 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.mpich.org/mpich.git/commitdiff/e7cef017d770711afd152c3899602c9d58... commit e7cef017d770711afd152c3899602c9d58a5c392 Author: Pavan Balaji <[email protected]> Date: Wed Feb 19 00:34:08 2014 -0600 Better control virtual function ordering. Allow some virtual functions to be placed at the end, so it matches the layout of the Intel MPI header. This should make our output file nearly identical to that of Intel MPI. All virtual functions should be exactly ordered. Signed-off-by: Ken Raffenetti <[email protected]> diff --git a/src/binding/cxx/buildiface b/src/binding/cxx/buildiface index 88ee212..5fa6310 100755 --- a/src/binding/cxx/buildiface +++ b/src/binding/cxx/buildiface @@ -84,7 +84,7 @@ $indent = " "; $print_line_len = 0; $gDebug = 0; $gDebugRoutine = "NONE"; -@mpilevels = ( 'mpi1' , 'mpi2' ); +@mpilevels = ( 'mpi1' , 'mpi2', 'post' ); # feature variables (for the -feature commandline option) $do_subdecls = 1; @@ -457,12 +457,13 @@ $specialReturnType{"intra-Dup"} = "Intracomm"; 'Delete_attr' => '0', # 'Create_keyval' => 'int', 'Free_keyval' => 'static:0:1', - 'Call_errhandler' => '0', 'Set_name' => '0:2', 'Get_name' => '0:3', 'Disconnect' => '0', 'Get_parent' => 'static:0;Intercomm', ); +%class_postcomm = ( 'Call_errhandler' => '0', + ); %class_mpi2cart = (); %class_mpi2dtype = ( 'Set_name' => '0:2', 'Get_name' => '0:3', @@ -585,7 +586,8 @@ if ($build_io) { 'Sync' => '0', 'Get_errhandler' => 'MPI_Errhandler', 'Set_errhandler' => '0', - 'Call_errhandler' => '0', + ); + %class_postfile = ( 'Call_errhandler' => '0', ); # %class_mpi2file = ( # 'File_open' => 'static:MPI_File:2', @@ -649,7 +651,6 @@ if ($build_io) { 'Free' => '0', 'Fence' => '0', 'Get_group' => 'MPI_Group', - 'Call_errhandler' => 0, 'Get_attr' => '0', 'Start' => '0', 'Complete' => '0', @@ -665,6 +666,8 @@ if ($build_io) { 'Delete_attr' => '0', 'Free_keyval' => 'static:0:1', ); +%class_postwin = ( 'Call_errhandler' => 0, + ); %class_mpi2info = ( 'Create' => 'static:1', 'Set' => '0:2:3', 'Delete' => '0:2', @@ -1228,6 +1231,7 @@ print $OUTFD "extern File FILE_NULL;\n"; # Build the routines by class foreach $class (@classes) { + my $printed_extra_fnc = 0; $shortclass = $class; $Class = $fullclassname{$class}; #$mpi_type = $class_type{$class}; @@ -1253,6 +1257,14 @@ typedef int MPI_File;\ } foreach $mpilevel (@mpilevels) { + if ($mpilevel eq "post") { + $printed_extra_fnc = 1; + if (defined($class_extra_fnc{$class})) { + $extrafnc = $class_extra_fnc{$class}; + &$extrafnc( $OUTFD ); + } + } + $mpiclass = "$mpilevel$class"; $class_hash = "class_$mpiclass"; @routines = keys(%$class_hash); @@ -1286,7 +1298,7 @@ typedef int MPI_File;\ close (FD); } } - if (defined($class_extra_fnc{$class})) { + if (defined($class_extra_fnc{$class}) && !$printed_extra_fnc) { $extrafnc = $class_extra_fnc{$class}; &$extrafnc( $OUTFD ); } @@ -5016,8 +5028,14 @@ sub ReadFuncSpec { } # Handle special cases if (/<(\w*)>/) { + my $match = 0; $mpilevel = $1; - if ($mpilevel ne "mpi1" && $mpilevel ne "mpi2") { + foreach $level (@mpilevels) { + if ($mpilevel eq $level) { + $match = 1; + } + } + if (!$match) { print STDERR "Unrecognized MPI level $mpilevel\n"; } next; diff --git a/src/binding/cxx/cxx.vlist b/src/binding/cxx/cxx.vlist index 191c85d..0785455 100644 --- a/src/binding/cxx/cxx.vlist +++ b/src/binding/cxx/cxx.vlist @@ -170,6 +170,8 @@ "Scatterv", "Get_name", "Allgatherv", +); +@routinespostcomm = ( "Call_errhandler", "Reduce_scatter_block", ); @@ -257,6 +259,8 @@ "Write_ordered_end", "Write", "Get_atomicity", +); +@routinespostfile = ( "Call_errhandler", ); @routinesmpi2greq = ( @@ -315,5 +319,7 @@ "Lock", "Get_errhandler", "Get_name", +); +@routinespostwin = ( "Call_errhandler", ); diff --git a/src/binding/cxx/cxxdecl3.dat b/src/binding/cxx/cxxdecl3.dat index 845a6ce..9cbf2f9 100644 --- a/src/binding/cxx/cxxdecl3.dat +++ b/src/binding/cxx/cxxdecl3.dat @@ -2,6 +2,8 @@ # by using the perl script cxxtodecl. However, that script cannot # handle every feature of the bindings, so the final changes # were made by hand. +<post> +comm-Reduce_scatter_block void (in:const , , ,in:constref:Datatype ,in:constref:Op, ) const <mpi2> -Alloc_mem void* ( ,in:constref:Info ,return) dtype-Create_darray Datatype (, , ,in:const ,in:const ,in:const ,in:const , , ,return) const @@ -73,7 +75,6 @@ comm-Gather void (in:const , ,in:constref:Datatype , , ,in:constref:Datatype , ) comm-Gatherv void (in:const , ,in:constref:Datatype , ,in:const ,in:const ,in:constref:Datatype , ) const comm-Reduce void (in:const , , ,in:constref:Datatype ,in:constref:Op , ) const comm-Reduce_scatter void (in:const , , ,in:constref:Datatype ,in:constref:Op, ) const -comm-Reduce_scatter_block void (in:const , , ,in:constref:Datatype ,in:constref:Op, ) const comm-Scatter void (in:const , ,in:constref:Datatype , , ,in:constref:Datatype , ) const comm-Scatterv void (in:const ,in:const ,in:const ,in:constref:Datatype , , ,in:constref:Datatype , ) const # FIXME: this entry confuses buildiface, which groups it with http://git.mpich.org/mpich.git/commitdiff/f3f022b4243df40a038835990568125be4... commit f3f022b4243df40a038835990568125be41a9b29 Author: Pavan Balaji <[email protected]> Date: Tue Feb 18 14:11:27 2014 -0600 Reorder C++ virtual functions to match Intel MPI. This patch breaks ABI compatibility between this and older versions of MPICH, but is needed to get MPICH closer to the ABI compatibility initiative with Intel, IBM and Cray. This patch does not make the resultant mpicxx.h exactly the same as what Intel MPI ships, but most of the publicly exposed virtual functions should be in order. The remaining functions that are out-of-order are Reduce_scatter_block and Call_errhandler for communicators, which are placed after the internal Clone function. Signed-off-by: Ken Raffenetti <[email protected]> diff --git a/src/binding/cxx/cxx.vlist b/src/binding/cxx/cxx.vlist index 1d436d3..191c85d 100644 --- a/src/binding/cxx/cxx.vlist +++ b/src/binding/cxx/cxx.vlist @@ -147,7 +147,6 @@ "Is_thread_main", ); @routinesmpi2comm = ( - "Reduce_scatter_block", "Gatherv", "Disconnect", "Allreduce", @@ -163,7 +162,6 @@ "Alltoallv", "Reduce_scatter", "Scatter", - "Call_errhandler", "Gather", "Free_keyval", "Reduce", @@ -172,6 +170,8 @@ "Scatterv", "Get_name", "Allgatherv", + "Call_errhandler", + "Reduce_scatter_block", ); @routinesmpi2distgraph = ( "Get_dist_neighbors", @@ -226,7 +226,6 @@ "Write_shared", "Iwrite_at", "Get_view", - "Call_errhandler", "Write_all_begin", "Read_all_end", "Get_byte_offset", @@ -258,6 +257,7 @@ "Write_ordered_end", "Write", "Get_atomicity", + "Call_errhandler", ); @routinesmpi2greq = ( "Complete", @@ -308,7 +308,6 @@ "Set_name", "Accumulate", "Create", - "Call_errhandler", "Free_keyval", "Post", "Unlock", @@ -316,4 +315,5 @@ "Lock", "Get_errhandler", "Get_name", + "Call_errhandler", ); ----------------------------------------------------------------------- Summary of changes: src/binding/cxx/buildiface | 30 ++++++++++++++++++++++++------ src/binding/cxx/cxx.vlist | 14 ++++++++++---- src/binding/cxx/cxxdecl3.dat | 3 ++- 3 files changed, 36 insertions(+), 11 deletions(-) hooks/post-receive -- MPICH primary repository
participants (1)
-
noreply@mpich.org