Skip to content

Commit 9c9e7d0

Browse files
committed
[PEx] Cleanup and minor corrections to recent changes to SearchTask
1 parent 20f0216 commit 9c9e7d0

File tree

7 files changed

+51
-54
lines changed

7 files changed

+51
-54
lines changed

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/scheduler/Schedule.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,6 @@ public Choice getChoice(int idx) {
4848
return choices.get(idx);
4949
}
5050

51-
/**
52-
* Clear choice at a choice depth
53-
*
54-
* @param idx Choice depth
55-
*/
56-
public void clearChoice(int idx) {
57-
choices.get(idx).clearCurrent();
58-
}
59-
6051
/**
6152
* Remove choices after a choice depth
6253
*
@@ -99,7 +90,7 @@ public void setDataChoice(int stepNum, int choiceNum, PValue<?> current) {
9990
choices.add(null);
10091
}
10192
assert (choiceNum < choices.size());
102-
choices.set(choiceNum, new DataChoice(stepNum, choiceNum, current));
93+
choices.set(choiceNum, new DataChoice(current));
10394
}
10495

10596
/**

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/scheduler/choice/Choice.java

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,8 @@ public abstract class Choice<T> implements Serializable {
1313
@Setter
1414
protected T current;
1515

16-
/**
17-
* Step number
18-
*/
19-
@Getter
20-
protected int stepNumber = 0;
21-
/**
22-
* Choice number
23-
*/
24-
@Getter
25-
protected int choiceNumber = 0;
26-
27-
protected Choice(T c, int stepNum, int choiceNum) {
16+
protected Choice(T c) {
2817
this.current = c;
29-
this.stepNumber = stepNum;
30-
this.choiceNumber = choiceNum;
3118
}
3219

3320
/**

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/scheduler/choice/DataChoice.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ public class DataChoice extends Choice<PValue<?>> {
1010
/**
1111
* Constructor
1212
*/
13-
public DataChoice(int stepNum, int choiceNum, PValue<?> c) {
14-
super(c, stepNum, choiceNum);
13+
public DataChoice(PValue<?> c) {
14+
super(c);
1515
}
1616

1717
public Choice copyCurrent() {
18-
return new DataChoice(this.stepNumber, this.choiceNumber, this.current);
18+
return new DataChoice(this.current);
1919
}
2020

2121
@Override

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/scheduler/choice/ScheduleChoice.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,30 @@
55
import pexplicit.runtime.machine.PMachineId;
66
import pexplicit.runtime.scheduler.explicit.StepState;
77

8-
import java.util.ArrayList;
9-
import java.util.List;
10-
118
@Getter
129
@Setter
1310
public class ScheduleChoice extends Choice<PMachineId> {
11+
/**
12+
* Step number
13+
*/
14+
private int stepNumber = 0;
15+
/**
16+
* Choice number
17+
*/
18+
private int choiceNumber = 0;
19+
20+
/**
21+
* Protocol state at the schedule step
22+
*/
1423
private StepState choiceState = null;
1524

1625
/**
1726
* Constructor
1827
*/
1928
public ScheduleChoice(int stepNum, int choiceNum, PMachineId c, StepState s) {
20-
super(c, stepNum, choiceNum);
29+
super(c);
30+
this.stepNumber = stepNum;
31+
this.choiceNumber = choiceNum;
2132
this.choiceState = s;
2233
}
2334

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/scheduler/explicit/ExplicitSearchScheduler.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -343,8 +343,11 @@ public PMachine getNextScheduleChoice() {
343343
schedule.setScheduleChoice(stepNumber, choiceNumber, result.getPid());
344344

345345
// update search unit in search task
346-
if (!choices.isEmpty())
346+
if (choices.isEmpty()) {
347+
searchStrategy.getCurrTask().clearSearchUnit(choiceNumber);
348+
} else {
347349
searchStrategy.getCurrTask().setScheduleSearchUnit(choiceNumber, choices);
350+
}
348351

349352
// increment choice number
350353
choiceNumber++;
@@ -403,8 +406,11 @@ public PValue<?> getNextDataChoice(List<PValue<?>> input_choices) {
403406
schedule.setDataChoice(stepNumber, choiceNumber, result);
404407

405408
// update search unit in search task
406-
if (!choices.isEmpty())
409+
if (choices.isEmpty()) {
410+
searchStrategy.getCurrTask().clearSearchUnit(choiceNumber);
411+
} else {
407412
searchStrategy.getCurrTask().setDataSearchUnit(choiceNumber, choices);
413+
}
408414

409415
// increment choice number
410416
choiceNumber++;

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/scheduler/explicit/strategy/SearchStrategy.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,11 @@ public SearchTask setNextTask() {
8888
*/
8989
public int getNumPendingChoices() {
9090
int numUnexplored = 0;
91+
SearchTask task = getCurrTask();
92+
numUnexplored += task.getNumUnexploredChoices();
9193
for (Integer tid : pendingTasks) {
92-
SearchTask task = getTask(tid);
93-
numUnexplored += task.getNumUnexploredScheduleChoices() + task.getNumUnexploredDataChoices();
94+
task = getTask(tid);
95+
numUnexplored += task.getNumUnexploredChoices();
9496
}
9597
return numUnexplored;
9698
}
@@ -102,8 +104,10 @@ public int getNumPendingChoices() {
102104
*/
103105
public int getNumPendingDataChoices() {
104106
int numUnexplored = 0;
107+
SearchTask task = getCurrTask();
108+
numUnexplored += task.getNumUnexploredDataChoices();
105109
for (Integer tid : pendingTasks) {
106-
SearchTask task = getTask(tid);
110+
task = getTask(tid);
107111
numUnexplored += task.getNumUnexploredDataChoices();
108112
}
109113
return numUnexplored;

Src/PRuntimes/PExplicitRuntime/src/main/java/pexplicit/runtime/scheduler/explicit/strategy/SearchTask.java

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package pexplicit.runtime.scheduler.explicit.strategy;
22

33
import lombok.Getter;
4-
import pexplicit.runtime.PExplicitGlobal;
54
import pexplicit.runtime.machine.PMachineId;
65
import pexplicit.runtime.scheduler.choice.*;
76
import pexplicit.values.PValue;
@@ -22,10 +21,6 @@ public class SearchTask implements Serializable {
2221
private final List<Choice> prefixChoices = new ArrayList<>();
2322
@Getter
2423
private final Map<Integer, SearchUnit> searchUnits = new HashMap<>();
25-
@Getter
26-
private int numUnexploredScheduleChoices = 0;
27-
@Getter
28-
private int numUnexploredDataChoices = 0;
2924

3025
public SearchTask(int id, int choiceNum, SearchTask parentTask) {
3126
this.id = id;
@@ -51,11 +46,6 @@ public void addPrefixChoice(Choice choice) {
5146
}
5247

5348
public void addSuffixSearchUnit(int choiceNum, SearchUnit unit) {
54-
if (unit instanceof ScheduleSearchUnit scheduleSearchUnit) {
55-
numUnexploredScheduleChoices += scheduleSearchUnit.getUnexplored().size();
56-
} else {
57-
numUnexploredDataChoices += ((DataSearchUnit) unit).getUnexplored().size();
58-
}
5949
searchUnits.put(choiceNum, unit.transferUnit());
6050
}
6151

@@ -82,11 +72,19 @@ public String toStringDetailed() {
8272
if (isInitialTask()) {
8373
return String.format("%s @0::0 (parent: null)", this);
8474
}
85-
return String.format("%s @%d::%d (parent: %s)",
86-
this,
87-
prefixChoices.get(currChoiceNumber).getStepNumber(),
88-
currChoiceNumber,
89-
parentTask);
75+
Choice c = prefixChoices.get(currChoiceNumber);
76+
if (c instanceof ScheduleChoice scheduleChoice) {
77+
return String.format("%s @%d::%d (parent: %s)",
78+
this,
79+
scheduleChoice.getStepNumber(),
80+
currChoiceNumber,
81+
parentTask);
82+
} else {
83+
return String.format("%s -::%d (parent: %s)",
84+
this,
85+
currChoiceNumber,
86+
parentTask);
87+
}
9088
}
9189

9290
public List<Integer> getSearchUnitKeys(boolean reversed) {
@@ -202,10 +200,10 @@ public int getNumUnexploredDataChoices() {
202200
/**
203201
* Clear search unit at a choice depth
204202
*
205-
* @param idx Choice depth
203+
* @param choiceNum Choice depth
206204
*/
207-
public void clearSearchUnit(int idx) {
208-
searchUnits.remove(idx);
205+
public void clearSearchUnit(int choiceNum) {
206+
searchUnits.remove(choiceNum);
209207
}
210208

211209
}

0 commit comments

Comments
 (0)