00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef GLOBAL_COMM_H
00012 #define GLOBAL_COMM_H
00013
00014
00015
00016
00017
00018
00019
00020 class Communicate;
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifdef __MWERKS__
00035
00036 template <class InputIterator, class OutputIterator, class ReduceOp>
00037 bool reduce(Communicate&, InputIterator, InputIterator, OutputIterator,
00038 const ReduceOp&, bool *IncludeVal);
00039
00040 template <class InputIterator, class OutputIterator, class ReduceOp>
00041 bool reduce(Communicate& c, InputIterator i1, InputIterator i2,
00042 OutputIterator o, const ReduceOp &r) { return reduce(c,i1,i2,o,0); }
00043
00044
00045 template <class InputIterator, class OutputIterator, class ReduceOp>
00046 bool reduce(InputIterator, InputIterator, OutputIterator,
00047 const ReduceOp&, bool *IncludeVal0);
00048
00049 template <class InputIterator, class OutputIterator, class ReduceOp>
00050 bool reduce(InputIterator i1, InputIterator i2, OutputIterator o,
00051 const ReduceOp &r) { return reduce(i1,i2,o,r,0); }
00052 #else
00053 template <class InputIterator, class OutputIterator, class ReduceOp>
00054 bool reduce(Communicate&, InputIterator, InputIterator, OutputIterator,
00055 const ReduceOp&, bool *IncludeVal = 0);
00056
00057
00058 template <class InputIterator, class OutputIterator, class ReduceOp>
00059 bool reduce(InputIterator, InputIterator, OutputIterator,
00060 const ReduceOp&, bool *IncludeVal = 0);
00061 #endif // __MWERKS__
00062
00063
00064
00065
00066 template <class T, class ReduceOp>
00067 bool reduce(Communicate& comm, T& input, T& output, const ReduceOp& op);
00068
00069
00070 template <class T, class ReduceOp>
00071 bool reduce(T& input, T& output, const ReduceOp& op);
00072
00073
00074
00075
00076
00077
00078
00079 template <class T, class ReduceOp>
00080 bool reduce_masked(Communicate& comm, T& input, T& output, const ReduceOp& op,
00081 bool IncludeVal);
00082
00083
00084 template <class T, class ReduceOp>
00085 bool reduce_masked(T& input, T& output, const ReduceOp& op,
00086 bool IncludeVal);
00087
00088
00089
00090
00091 template <class T, class ReduceOp>
00092 bool reduce(Communicate& comm, T& input, T& output, const ReduceOp& op) {
00093 return reduce_masked(comm, input, output, op, true);
00094 }
00095
00096
00097 template <class T, class ReduceOp>
00098 bool reduce(T& input, T& output, const ReduceOp& op) {
00099 return reduce_masked(input, output, op, true);
00100 }
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112 template <class InputIterator, class RandomIterator, class ScatterOp>
00113 bool scatter(Communicate&, InputIterator, InputIterator, RandomIterator,
00114 int *, int *, const ScatterOp&);
00115
00116
00117 template <class InputIterator, class RandomIterator, class ScatterOp>
00118 bool scatter(InputIterator, InputIterator, RandomIterator,
00119 int *, int *, const ScatterOp&);
00120
00121 #include "Message/GlobalComm.cpp"
00122
00123 #endif // GLOBAL_COMM_H
00124
00125
00126
00127
00128
00129
00130