Commit 65d58009 authored by Kenneth Moreland's avatar Kenneth Moreland

Merge branch 'Fix23ScalingStudy'

parents e618c9d8 9ecb1e07
......@@ -1352,6 +1352,25 @@ static int SimpleTimingDoScalingStudyFactor2_3()
}
}
// This loop will run in log_3 iterations selecting any factors of 2 and 3
// it finds. Let us say max_power_3 = 3^N. The iterations of the loop
// break up the processors is partitions of 1/3 and 2/3 as follows.
// (Iteration 0 was just done above.)
//
// Iteration 0: |---------------------------3^N--------------------------|
// Iteration 1: |------3^(N-1)-----|--------------2*3^(N-1)--------------|
// Iteration 2: |3^(N-2)|2*3^(N-2)-|-(removed)-|--------4*3^(N-2)--------|
// ...
//
// Note that some of the partitions are removed because they are repeates.
// In the example above, the removed partition is of size 2*3^(N-2), which
// is the same size of another partition in the tree. In general, when we
// break up a partition that is not a power of 3, we only generate the
// partition that is 2/3 because the 1/3 partition is created elsewhere.
// A partition that is exactly a power of 3 (no factors of 2) has both
// subpartitions created.
//
while (ICET_TRUE) {
IceTInt last_size;
IceTInt last_rank;
......@@ -1381,6 +1400,11 @@ static int SimpleTimingDoScalingStudyFactor2_3()
if (last_rank < this_size) {
icetCreateContext(comm_third);
comm_third->Destroy(comm_third);
if (this_size%2 == 0) {
// If this size already has a factor of two, we can drop it.
// See the description above.
break;
}
} else {
icetCreateContext(comm_two_thirds);
comm_two_thirds->Destroy(comm_two_thirds);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment