00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00045 #ifndef __TWOD_M_WAY_PROBE__
00046 #define __TWOD_M_WAY_PROBE__
00047
00048 #include <util/m_probe.hpp>
00049 #include <util/prefix_sum_tools.hpp>
00050 #include <twod/part_base.hpp>
00051 #include <vector>
00052 #include <util/multiarrays.hpp>
00053 #include <util/transpose2d.hpp>
00054
00055 namespace twod
00056 {
00057
00058
00059
00069
00070 template <typename T, typename Pr,
00071 T (*onedalgoY) (int procCount, const util::Aggreg2Dto1D<T, Pr, false>& prefixSumArray, int length, int *cutIndexes, T)=oned::NicolPlus<T, util::Aggreg2Dto1D<T, Pr, false> >::nicol_plus,
00072 T (*onedalgoX)(int procCount, const util::Aggreg2Dto1D<T, Pr, true>& prefixSumArray, int length, int *cutIndexes, T)=oned::NicolPlus<T, util::Aggreg2Dto1D<T, Pr, true> >::nicol_plus >
00073 class JagMHeurProbeHor : public PartBase<T,Pr>
00074 {
00075 T multiarraypart(int procCount, const util::Multiarrays<T, util::Aggreg2Dto1D<T, Pr, false> > & arrs, T ub, int* procs, int** cuts);
00076 public:
00077 virtual T part(int procCount, const Pr& prefixSumArray, util::RectList<T,Pr> &parts);
00078
00079 virtual ~JagMHeurProbeHor();
00080 private:
00081 };
00082
00092 template <typename T, typename Pr,
00093 T (*onedalgoY) (int procCount, const util::Aggreg2Dto1D<T, util::TransposePrefix2D<T, Pr>, false>& prefixSumArray, int length, int *cutIndexes, T) = oned::NicolPlus<T, util::Aggreg2Dto1D<T, util::TransposePrefix2D<T, Pr>, false> >::nicol_plus,
00094 T (*onedalgoX) (int procCount, const util::Aggreg2Dto1D<T, util::TransposePrefix2D<T, Pr>, true>& prefixSumArray, int length, int *cutIndexes, T) = oned::NicolPlus<T, util::Aggreg2Dto1D<T, util::TransposePrefix2D<T, Pr>, true> >::nicol_plus >
00095 class JagMHeurProbeVer : public PartBase<T,Pr>
00096 {
00097 public:
00098 virtual ~JagMHeurProbeVer();
00099
00100
00101 virtual T part(int procCount, const Pr& prefixSumArray, util::RectList<T,Pr> &parts);
00102 };
00113 template <typename T, typename Pr>
00114 class JagMHeurProbeBest : public PartBase<T,Pr>
00115 {
00116 public:
00117
00118 virtual ~JagMHeurProbeBest();
00119
00120 virtual T part(int procCount, const Pr& prefixSumArray, util::RectList<T,Pr> &parts);
00121 };
00122
00123 }
00124
00125 #include <twod/m_way_probe_impl.hpp>
00126 #endif