Main Page | Namespace List | Class List | File List | Namespace Members | Class Members | File Members

cxsc_mpicomm_templ.hpp

Go to the documentation of this file.
00001 /*
00002 **  CXSC is a C++ library for eXtended Scientific Computing 
00003 **
00004 **  Copyright (C) 1990-2000 Institut fuer Angewandte Mathematik,
00005 **                          Universitaet Karlsruhe, Germany
00006 **            (C) 2000-2006 Wiss. Rechnen/Softwaretechnologie
00007 **                          Universitaet Wuppertal, Germany
00008 **
00009 **  MPI communication package for C-XSC data types
00010 **
00011 **  Copyright (C) 2004-2007 Markus Grimmer
00012 **
00013 **  markus.grimmer@math.uni-wuppertal.de
00014 **
00015 **  This library is free software; you can redistribute it and/or
00016 **  modify it under the terms of the GNU Library General Public
00017 **  License as published by the Free Software Foundation; either
00018 **  version 2 of the License, or (at your option) any later version.
00019 **
00020 **  This library is distributed in the hope that it will be useful,
00021 **  but WITHOUT ANY WARRANTY; without even the implied warranty of
00022 **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00023 **  Library General Public License for more details.
00024 **
00025 **  You should have received a copy of the GNU Library General Public
00026 **  License along with this library; if not, write to the Free
00027 **  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00028 */
00029 
00048 #ifndef _CXSC_MPICOMM_INCLUDE
00049 #define _CXSC_MPICOMM_INCLUDE
00050 
00051 #include <mpi.h>
00052 
00053 #include <real.hpp>
00054 #include <interval.hpp>
00055 #include <rvector.hpp>
00056 #include <ivector.hpp>
00057 #include <rmatrix.hpp>
00058 #include <imatrix.hpp>
00059 
00060 #include <complex.hpp>
00061 #include <cinterval.hpp>
00062 #include <cvector.hpp>
00063 #include <civector.hpp>
00064 #include <cmatrix.hpp>
00065 #include <cimatrix.hpp>
00066 
00067 #include <l_real.hpp>
00068 #include <l_interval.hpp>
00069 #include <l_rvector.hpp>
00070 #include <l_ivector.hpp>
00071 #include <l_rmatrix.hpp>
00072 #include <l_imatrix.hpp>
00073 
00074 #include <l_complex.hpp>
00075 
00076 #include <dot.hpp>
00077 #include <idot.hpp>
00078 #include <cdot.hpp>
00079 #include <cidot.hpp>
00080 
00081 using namespace cxsc;
00082 
00083 // ---------------------------------------------------------------------------
00084 
00093 const int MPI_CXSC_BUFFERLEN=900000000;
00094 
00098 void MPI_Fehler(int, char*, char*, int);
00099 
00104 extern bool MPI_CXSC_TYPES_DEFINED;
00105 extern MPI_Datatype MPI_CXSC_REAL;
00106 extern MPI_Datatype MPI_CXSC_COMPLEX;
00107 extern MPI_Datatype MPI_CXSC_INTERVAL;
00108 extern MPI_Datatype MPI_CXSC_CINTERVAL;
00110 
00114 int MPI_Define_CXSC_Types();
00115 
00116 // ---------------------------------------------------------------------------
00117 
00122 int MPI_Pack (real&, void *, int, int *,  MPI_Comm);
00123 int MPI_Unpack (void*, int, int *, real&, MPI_Comm);
00124 int MPI_Pack (interval&, void *, int, int *,  MPI_Comm);
00125 int MPI_Unpack (void*, int, int *, interval&, MPI_Comm);
00126 int MPI_Pack (complex&, void *, int, int *,  MPI_Comm);
00127 int MPI_Unpack (void*, int, int *, complex&, MPI_Comm);
00128 int MPI_Pack (cinterval&, void *, int, int *,  MPI_Comm);
00129 int MPI_Unpack (void*, int, int *, cinterval&, MPI_Comm);
00131 
00136 int MPI_Pack (l_real&, void *, int, int *,  MPI_Comm);
00137 int MPI_Unpack (void*, int, int *, l_real&, MPI_Comm);
00138 int MPI_Pack (l_interval&, void *, int, int *,  MPI_Comm);
00139 int MPI_Unpack (void*, int, int *, l_interval&, MPI_Comm);
00140 int MPI_Pack (l_complex&, void *, int, int *,  MPI_Comm);
00141 int MPI_Unpack (void*, int, int *, l_complex&, MPI_Comm);
00143 
00148 int MPI_Pack (rvector&, void *, int, int *,  MPI_Comm);
00149 int MPI_Unpack (void*, int, int *, rvector&, MPI_Comm);
00150 int MPI_Pack (ivector&, void *, int, int *,  MPI_Comm);
00151 int MPI_Unpack (void*, int, int *, ivector&, MPI_Comm);
00152 int MPI_Pack (cvector&, void *, int, int *,  MPI_Comm);
00153 int MPI_Unpack (void*, int, int *, cvector&, MPI_Comm);
00154 int MPI_Pack (civector&, void *, int, int *,  MPI_Comm);
00155 int MPI_Unpack (void*, int, int *, civector&, MPI_Comm);
00157 
00162 int MPI_Pack (l_rvector&, void *, int, int *,  MPI_Comm);
00163 int MPI_Unpack (void*, int, int *, l_rvector&, MPI_Comm);
00164 int MPI_Pack (l_ivector&, void *, int, int *,  MPI_Comm);
00165 int MPI_Unpack (void*, int, int *, l_ivector&, MPI_Comm);
00166 
00168 
00173 int MPI_Pack (rmatrix&, void *, int, int *,  MPI_Comm);
00174 int MPI_Pack (rmatrix&, int, int, int, int, void *, int, int *,  MPI_Comm);
00175 int MPI_Unpack (void*, int, int *, rmatrix&, MPI_Comm);
00176 int MPI_Unpack (void*, int, int *, rmatrix&, int, int, int, int, MPI_Comm);
00177 int MPI_Pack (imatrix&, void *, int, int *,  MPI_Comm);
00178 int MPI_Pack (imatrix&, int, int, int, int, void *, int, int *,  MPI_Comm);
00179 int MPI_Unpack (void*, int, int *, imatrix&, MPI_Comm);
00180 int MPI_Unpack (void*, int, int *, imatrix&, int, int, int, int, MPI_Comm);
00181 int MPI_Pack (cmatrix&, void *, int, int *,  MPI_Comm);
00182 int MPI_Pack (cmatrix&, int, int, int, int, void *, int, int *,  MPI_Comm);
00183 int MPI_Unpack (void*, int, int *, cmatrix&, MPI_Comm);
00184 int MPI_Unpack (void*, int, int *, cmatrix&, int, int, int, int, MPI_Comm);
00185 int MPI_Pack (cimatrix&, void *, int, int *,  MPI_Comm);
00186 int MPI_Pack (cimatrix&, int, int, int, int, void *, int, int *,  MPI_Comm);
00187 int MPI_Unpack (void*, int, int *, cimatrix&, MPI_Comm);
00188 int MPI_Unpack (void*, int, int *, cimatrix&, int, int, int, int, MPI_Comm);
00190 
00195 int MPI_Pack (l_rmatrix&, void *, int, int *,  MPI_Comm);
00196 int MPI_Unpack (void*, int, int *, l_rmatrix&, MPI_Comm);
00197 int MPI_Pack (l_imatrix&, void *, int, int *,  MPI_Comm);
00198 int MPI_Unpack (void*, int, int *, l_imatrix&, MPI_Comm);
00200 
00205 int MPI_Pack (dotprecision&, void *, int, int *,  MPI_Comm);
00206 int MPI_Unpack (void*, int, int *, dotprecision&, MPI_Comm);
00207 int MPI_Pack (idotprecision&, void *, int, int *,  MPI_Comm);
00208 int MPI_Unpack (void*, int, int *, idotprecision&, MPI_Comm);
00209 int MPI_Pack (cdotprecision&, void *, int, int *,  MPI_Comm);
00210 int MPI_Unpack (void*, int, int *, cdotprecision&, MPI_Comm);
00211 int MPI_Pack (cidotprecision&, void *, int, int *,  MPI_Comm);
00212 int MPI_Unpack (void*, int, int *, cidotprecision&, MPI_Comm);
00214 
00215 // ---------------------------------------------------------------------------
00216 
00221 template<class T>
00222 int MPI_Send(T&, int, int, MPI_Comm);
00223 template<class T>
00224 int MPI_Send(T&, int, int, int, int, int, int, MPI_Comm);
00225 template<class T>
00226 int MPI_Bsend(T&, int, int, MPI_Comm);
00227 template<class T>
00228 int MPI_Bsend(T&, int, int, int, int, int, int, MPI_Comm);
00229 template<class T>
00230 int MPI_Ssend(T&, int, int, MPI_Comm);
00231 template<class T>
00232 int MPI_Ssend(T&, int, int, int, int, int, int, MPI_Comm);
00233 template<class T>
00234 int MPI_Rsend(T&, int, int, MPI_Comm);
00235 template<class T>
00236 int MPI_Rsend(T&, int, int, int, int, int, int, MPI_Comm);
00237 
00238 template<class T>
00239 int MPI_Isend(T&, int, int, MPI_Comm, MPI_Request*);
00240 template<class T>
00241 int MPI_Isend(T&, int, int, int, int, int, int, MPI_Comm, MPI_Request*);
00242 template<class T>
00243 int MPI_Ibsend(T&, int, int, MPI_Comm, MPI_Request*);
00244 template<class T>
00245 int MPI_Ibsend(T&, int, int, int, int, int, int, MPI_Comm, MPI_Request*);
00246 template<class T>
00247 int MPI_Issend(T&, int, int, MPI_Comm, MPI_Request*);
00248 template<class T>
00249 int MPI_Issend(T&, int, int, int, int, int, int, MPI_Comm, MPI_Request*);
00250 template<class T>
00251 int MPI_Irsend(T&, int, int, MPI_Comm, MPI_Request*);
00252 template<class T>
00253 int MPI_Irsend(T&, int, int, int, int, int, int, MPI_Comm, MPI_Request*);
00254 
00255 template<class T>
00256 int MPI_Recv(T&, int, int, MPI_Comm, MPI_Status*);
00257 template<class T>
00258 int MPI_Recv(T&, int, int, int, int, int, int, MPI_Comm, MPI_Status*);
00260 
00265 template<class T>
00266 int MPI_Bcast(T&, int, MPI_Comm);
00267 template<class T>
00268 int MPI_Bcast(T&, int, int, int, int, int, MPI_Comm);
00270 
00271 
00272 #endif

Generated on Tue Feb 27 21:19:13 2007 for VFIS by  doxygen 1.4.4