Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions src/mpl/src/SACoreSoftMacro.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -748,8 +748,16 @@ void SACoreSoftMacro::calNotchPenalty()

void SACoreSoftMacro::resizeOneCluster()
{
const int idx = static_cast<int>(
std::floor(distribution_(generator_) * pos_seq_.size()));
if (pos_seq_.empty()) {
logger_->error(
utl::MPL,
51,
"position sequence array is empty, please report this internal error");
}

std::uniform_int_distribution<> index_distribution(0, pos_seq_.size() - 1);
const int idx = index_distribution(generator_);

macro_id_ = idx;
SoftMacro& src_macro = macros_[idx];
if (src_macro.isMacroCluster()) {
Expand Down
8 changes: 5 additions & 3 deletions src/mpl/src/SimulatedAnnealingCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -642,11 +642,13 @@ void SimulatedAnnealingCore<T>::exchangeMacros()
template <class T>
void SimulatedAnnealingCore<T>::generateRandomIndices(int& index1, int& index2)
{
index1 = (int) (std::floor(distribution_(generator_) * pos_seq_.size()));
index2 = (int) (std::floor(distribution_(generator_) * pos_seq_.size()));
std::uniform_int_distribution<> index_distribution(0, pos_seq_.size() - 1);

index1 = index_distribution(generator_);
index2 = index_distribution(generator_);

while (index1 == index2) {
index2 = (int) (std::floor(distribution_(generator_) * pos_seq_.size()));
index2 = index_distribution(generator_);
}
}

Expand Down
6 changes: 4 additions & 2 deletions src/mpl/src/object.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1298,8 +1298,10 @@ void SoftMacro::resizeRandomly(
if (width_list_.empty()) {
return;
}
const int idx = static_cast<int>(
std::floor(distribution(generator) * width_list_.size()));

std::uniform_int_distribution<> index_distribution(0, width_list_.size() - 1);
const int idx = index_distribution(generator);

const float min_width = width_list_[idx].first;
const float max_width = width_list_[idx].second;
width_ = min_width + distribution(generator) * (max_width - min_width);
Expand Down
6 changes: 3 additions & 3 deletions src/par/src/Multilevel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ void MultilevelPartitioner::InitialPartition(
"Running Initial Partitioning...");
std::mt19937 gen;
gen.seed(seed_);
std::uniform_real_distribution<> dist(0.0, 1.0);
std::uniform_int_distribution<> dist(0, std::numeric_limits<int>::max());
std::vector<float> initial_solutions_cost;
std::vector<bool>
initial_solutions_flag; // if the solutions statisfy balance constraint
Expand All @@ -319,7 +319,7 @@ void MultilevelPartitioner::InitialPartition(
k_way_fm_refiner_->SetMaxMove(hgraph->GetNumVertices());
// generate random seed
for (int i = 0; i < num_initial_random_solutions_; ++i) {
const int seed = std::numeric_limits<int>::max() * dist(gen);
const int seed = dist(gen);
auto& solution = initial_solutions[i];
// call random partitioning
partitioner_->SetRandomSeed(seed);
Expand Down Expand Up @@ -347,7 +347,7 @@ void MultilevelPartitioner::InitialPartition(
}
// generate random vile solution
for (int i = 0; i < num_initial_random_solutions_; ++i) {
const int seed = std::numeric_limits<int>::max() * dist(gen);
const int seed = dist(gen);
auto& solution = initial_solutions[i + num_initial_random_solutions_];
// call random partitioning
partitioner_->SetRandomSeed(seed);
Expand Down