33 #include "kaHIP_interface.h"
70 { kahipDecomp::configs::FAST,
"fast" },
71 { kahipDecomp::configs::ECO,
"eco" },
72 { kahipDecomp::configs::STRONG,
"strong" },
73 { kahipDecomp::configs::FASTSOCIAL,
"fast-social" },
74 { kahipDecomp::configs::ECOSOCIAL,
"eco-social" },
75 { kahipDecomp::configs::STRONGSOCIAL,
"strong-social" },
85 const List<scalar>& cWeights,
91 double imbalance = 0.01;
95 #if WM_LABEL_SIZE == 64
96 if (xadj.size()-1 > INT_MAX)
99 <<
"Cannot decompose " << (xadj.size()-1) <<
" cells," <<
nl
100 <<
"Exceeded integer limit of " << INT_MAX <<
nl
105 int numCells = xadj.size()-1;
108 List<int> cellWeights;
112 const scalar minWeights =
min(cWeights);
114 if (!cWeights.empty())
119 <<
"Illegal minimum weight " << minWeights
123 if (cWeights.size() != numCells)
126 <<
"Number of cell weights " << cWeights.size()
127 <<
" does not equal number of cells " << numCells
132 cellWeights.setSize(cWeights.size());
135 cellWeights[i] = int(cWeights[i]/minWeights);
143 Info<<
"kahipDecomp :"
145 <<
" imbalance=" << imbalance;
149 Info<<
" seed=" << seed;
153 std::map<std::string, std::vector<int>> sizingParams;
162 std::vector<int> vec;
163 vec.reserve(labels.size()+1);
168 for (
const auto val : labels)
181 <<
"Mismatch in number of processors and "
195 sizingParams[
"hierarchy"] = std::move(vec);
206 std::vector<int> vec(labels.size());
213 sizingParams[
"distance"] = std::move(vec);
227 ConstPrecisionAdaptor<int, label, List> xadj_param(xadj);
228 ConstPrecisionAdaptor<int, label, List> adjncy_param(adjncy);
231 decomp.resize(numCells);
232 PrecisionAdaptor<int, label, List> decomp_param(decomp,
false);
235 #if 0 // WIP: #ifdef KAFFPA_CPP_INTERFACE
239 (cellWeights.size() ? cellWeights.begin() :
nullptr),
240 xadj_param.constCast().data(),
242 adjncy_param.constCast().data(),
249 decomp_param.ref().data(),
256 (cellWeights.size() ? cellWeights.begin() :
nullptr),
257 xadj_param.constCast().data(),
259 adjncy_param.constCast().data(),
266 decomp_param.ref().data()
278 metisLikeDecomp(typeName, decompDict, selectionType::NULL_DICT)
284 const dictionary& decompDict,
288 metisLikeDecomp(typeName, decompDict,
regionName, selectionType::NULL_DICT)