|
RTOpPack: Extra C/C++ Code for Vector Reduction/Transformation Operators Version of the Day
|
00001 /* 00002 // @HEADER 00003 // *********************************************************************** 00004 // 00005 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization 00006 // Copyright (2003) Sandia Corporation 00007 // 00008 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00009 // license for use of this work by or on behalf of the U.S. Government. 00010 // 00011 // This library is free software; you can redistribute it and/or modify 00012 // it under the terms of the GNU Lesser General Public License as 00013 // published by the Free Software Foundation; either version 2.1 of the 00014 // License, or (at your option) any later version. 00015 // 00016 // This library is distributed in the hope that it will be useful, but 00017 // WITHOUT ANY WARRANTY; without even the implied warranty of 00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00019 // Lesser General Public License for more details. 00020 // 00021 // You should have received a copy of the GNU Lesser General Public 00022 // License along with this library; if not, write to the Free Software 00023 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00024 // USA 00025 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov) 00026 // 00027 // *********************************************************************** 00028 // @HEADER 00029 */ 00030 00031 /* Define this macro if you want to print profiling results with clock() */ 00032 #define RTOP_TO_MPI_SHOW_TIMES 1 00033 00034 #ifndef RTOP_TO_MPI_H 00035 #define RTOP_TO_MPI_H 00036 00037 #include "RTOp.h" 00038 00039 #ifdef __cplusplus 00040 extern "C" { 00041 #endif 00042 00046 00048 /* */ 00063 void RTOp_MPI_type_signature( 00064 const int num_values 00065 ,const int num_indexes 00066 ,const int num_chars 00067 ,int* num_entries 00068 ,int block_lengths[] 00069 ,MPI_Aint displacements[] 00070 ,MPI_Datatype datatypes[] 00071 ); 00072 00073 /* */ 00089 int RTOp_extract_reduct_obj_ext_state( 00090 const struct RTOp_RTOp* op 00091 ,RTOp_ReductTarget reduct_obj 00092 ,int num_values 00093 ,int num_indexes 00094 ,int num_chars 00095 ,void* reduct_obj_ext 00096 ); 00097 00098 /* */ 00112 int RTOp_load_reduct_obj_ext_state( 00113 const struct RTOp_RTOp* op 00114 ,const void* reduct_obj_ext 00115 ,RTOp_ReductTarget reduct_obj 00116 ); 00117 00118 /* */ 00196 int RTOp_MPI_apply_op( 00197 MPI_Comm comm, const struct RTOp_RTOp* op, int root_rank 00198 ,const int num_cols 00199 ,const int num_vecs, const struct RTOp_SubVector sub_vecs[] 00200 ,const int num_targ_vecs, const struct RTOp_MutableSubVector sub_targ_vecs[] 00201 ,RTOp_ReductTarget reduct_objs[] 00202 ); 00203 00206 #ifdef RTOP_TO_MPI_SHOW_TIMES 00207 /* For use in profiling only */ 00208 extern int RTOp_MPI_apply_op_print_timings; 00209 #endif 00210 00211 00212 #ifdef __cplusplus 00213 } 00214 #endif 00215 00216 #endif /* RTOP_TO_MPI_H */
1.7.4