Skip to content

Commit 102b972

Browse files
committed
Simplify stop criterion propagation loop.
1 parent 6506b77 commit 102b972

File tree

4 files changed

+36
-141
lines changed

4 files changed

+36
-141
lines changed
Lines changed: 19 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,21 @@
11
problem, nodes, solutions, fails, time, optimum
2-
pat1.rcp, 55, 2, 26, 0.04s, 19
3-
pat2.rcp, 17, 2, 7, 0.03s, 7
4-
pat3.rcp, 53, 3, 24, 0.05s, 20
5-
pat4.rcp, 41, 1, 20, 0.06s, 6
6-
pat5.rcp, 41, 1, 20, 0.07s, 7
7-
pat6.rcp, 45, 1, 22, 0.10s, 8
8-
pat7.rcp, 25, 3, 10, 0.04s, 8
9-
pat8.rcp, 39, 3, 17, 0.04s, 11
10-
pat9.rcp, 101, 3, 48, 0.08s, 19
2+
pat1.rcp, 55, 2, 26, 0.03s, 19
3+
pat2.rcp, 17, 2, 7, 0.02s, 7
4+
pat3.rcp, 53, 3, 24, 0.03s, 20
5+
pat4.rcp, 41, 1, 20, 0.05s, 6
6+
pat5.rcp, 41, 1, 20, 0.05s, 7
7+
pat6.rcp, 45, 1, 22, 0.06s, 8
8+
pat7.rcp, 25, 3, 10, 0.03s, 8
9+
pat8.rcp, 39, 3, 17, 0.03s, 11
10+
pat9.rcp, 101, 3, 48, 0.05s, 19
1111
pat10.rcp, 13, 1, 6, 0.02s, 14
12-
pat11.rcp, 13, 1, 6, 0.03s, 18
13-
pat12.rcp, 45798, 2, 22891, timeout, 13
14-
pat13.rcp, 50690, 2, 25339, timeout, 20
15-
pat14.rcp, 22687, 2, 11331, timeout, 43
16-
pat15.rcp, 259, 6, 124, 0.41s, 43
17-
pat16.rcp, 9497, 3, 4746, 8.24s, 32
18-
pat17.rcp, 4869, 2, 2433, 4.51s, 29
19-
pat18.rcp, 40423, 7, 20200, timeout, 41
20-
pat19.rcp, 35206, 2, 17597, timeout, 31
21-
pat20.rcp, 157, 3, 76, 0.14s, 37
22-
pat21.rcp, 37868, 2, 18927, timeout, 50
23-
pat22.rcp, 5717, 6, 2853, 5.21s, 36
24-
pat23.rcp, 32225, 5, 16102, timeout, 32
25-
pat24.rcp, 103, 3, 49, 0.10s, 40
26-
pat25.rcp, 51, 1, 25, 0.07s, 33
27-
pat26.rcp, 26183, 3, 13089, 20.19s, 43
28-
pat27.rcp, 39744, 4, 19863, timeout, 37
29-
pat28.rcp, 5745, 7, 2866, 5.41s, 43
30-
pat29.rcp, 9041, 4, 4517, 8.46s, 29
31-
pat30.rcp, 32793, 3, 16389, timeout, 32
32-
pat31.rcp, 37234, 1, 18611, timeout, 35
33-
pat32.rcp, 373, 3, 184, 0.33s, 22
34-
pat33.rcp, 34501, 5, 17243, timeout, 31
35-
pat34.rcp, 37791, 5, 18884, timeout, 32
36-
pat35.rcp, 4055, 5, 2023, 3.88s, 31
37-
pat36.rcp, 1451, 5, 721, 1.90s, 33
38-
pat37.rcp, 38329, 1, 19158, timeout, 28
39-
pat38.rcp, 4551, 3, 2273, 3.81s, 30
40-
pat39.rcp, 211, 4, 102, 0.17s, 31
41-
pat40.rcp, 14191, 4, 7092, 12.51s, 31
42-
pat41.rcp, 3485, 3, 1740, 3.05s, 36
43-
pat42.rcp, 437, 3, 216, 0.39s, 28
44-
pat43.rcp, 40291, 1, 20138, timeout, 42
45-
pat44.rcp, 177, 5, 84, 0.13s, 31
46-
pat45.rcp, 39780, 2, 19882, timeout, 44
47-
pat46.rcp, 9141, 3, 4568, 7.88s, 33
48-
pat47.rcp, 23055, 2, 11526, 20.09s, 35
49-
pat48.rcp, 8923, 3, 4459, 9.48s, 23
50-
pat49.rcp, 45, 1, 22, 0.05s, 18
51-
pat50.rcp, 21157, 4, 10575, 22.79s, 25
52-
pat51.rcp, 31022, 2, 15506, timeout, 25
53-
pat52.rcp, 31423, 3, 15706, timeout, 27
54-
pat53.rcp, 4795, 3, 2395, 4.85s, 28
55-
pat54.rcp, 42565, 1, 21276, timeout, 50
56-
pat55.rcp, 295, 3, 145, 0.29s, 29
57-
pat56.rcp, 41, 1, 20, 0.06s, 27
58-
pat57.rcp, 41, 1, 20, 0.06s, 21
59-
pat58.rcp, 23666, 3, 11825, timeout, 36
60-
pat59.rcp, 7985, 3, 3990, 10.06s, 31
61-
pat60.rcp, 4995, 3, 2495, 5.08s, 39
62-
pat61.rcp, 24916, 3, 12451, timeout, 36
63-
pat62.rcp, 24798, 4, 12390, timeout, 37
64-
pat63.rcp, 23319, 2, 11652, timeout, 40
65-
pat64.rcp, 24365, 5, 12171, timeout, 38
66-
pat65.rcp, 24867, 2, 12426, timeout, 41
67-
pat66.rcp, 555, 2, 276, 0.72s, 38
68-
pat67.rcp, 26623, 4, 13302, timeout, 27
69-
pat68.rcp, 481, 4, 237, 0.62s, 41
70-
pat69.rcp, 24137, 1, 12061, timeout, 30
71-
pat70.rcp, 163, 5, 77, 0.27s, 31
72-
pat71.rcp, 2049, 4, 1021, 2.68s, 32
73-
pat72.rcp, 30570, 2, 15276, timeout, 42
74-
pat73.rcp, 26769, 6, 13376, timeout, 36
75-
pat74.rcp, 175, 5, 83, 0.27s, 30
76-
pat75.rcp, 29078, 2, 14532, timeout, 34
77-
pat76.rcp, 30424, 5, 15200, timeout, 43
78-
pat77.rcp, 28894, 3, 14437, timeout, 65
79-
pat78.rcp, 29098, 2, 14539, timeout, 58
80-
pat79.rcp, 27710, 4, 13845, timeout, 46
81-
pat80.rcp, 1665, 2, 831, 2.06s, 38
82-
pat81.rcp, 7907, 2, 3952, 10.52s, 36
83-
pat82.rcp, 203, 4, 98, 0.27s, 34
84-
pat83.rcp, 119, 2, 58, 0.16s, 34
85-
pat84.rcp, 61, 1, 30, 0.08s, 33
86-
pat85.rcp, 83, 2, 40, 0.12s, 31
87-
pat86.rcp, 83, 2, 40, 0.11s, 31
88-
pat87.rcp, 24448, 4, 12218, timeout, 29
89-
pat88.rcp, 25766, 2, 12875, timeout, 43
90-
pat89.rcp, 395, 3, 195, 0.52s, 31
91-
pat90.rcp, 23106, 5, 11544, timeout, 39
92-
pat91.rcp, 24158, 6, 12071, timeout, 35
93-
pat92.rcp, 5241, 5, 2616, 6.22s, 28
94-
pat93.rcp, 853, 5, 422, 1.03s, 26
95-
pat94.rcp, 157, 3, 76, 0.24s, 36
96-
pat95.rcp, 6725, 4, 3359, 7.50s, 33
97-
pat96.rcp, 1665, 3, 830, 2.02s, 26
98-
pat97.rcp, 13237, 5, 6614, 16.65s, 30
99-
pat98.rcp, 23772, 4, 11877, timeout, 42
100-
pat99.rcp, 27773, 1, 13880, timeout, 38
101-
pat100.rcp, 24865, 4, 12423, timeout, 34
102-
pat101.rcp, 11110, 5, 5544, timeout, 75
103-
pat102.rcp, 141, 1, 70, 0.34s, 83
104-
pat103.rcp, 105, 1, 52, 0.25s, 56
105-
pat104.rcp, 243, 2, 120, 0.54s, 79
106-
pat105.rcp, 705, 2, 351, 1.75s, 76
107-
pat106.rcp, 10143, 5, 5061, timeout, 60
108-
pat107.rcp, 157, 1, 78, 0.39s, 78
109-
pat108.rcp, 367, 3, 181, 0.96s, 61
110-
pat109.rcp, 12091, 2, 6028, timeout, 62
111-
pat110.rcp, 247, 3, 121, 0.63s, 50
12+
pat11.rcp, 13, 1, 6, 0.02s, 18
13+
pat12.rcp, 101792, 2, 50888, timeout, 13
14+
pat13.rcp, 111164, 2, 55578, timeout, 20
15+
pat14.rcp, 49633, 2, 24806, timeout, 43
16+
pat15.rcp, 259, 6, 124, 0.26s, 43
17+
pat16.rcp, 9499, 3, 4747, 3.63s, 32
18+
pat17.rcp, 4903, 2, 2450, 2.04s, 29
19+
pat18.rcp, 88432, 7, 44206, timeout, 41
20+
pat19.rcp, 81007, 2, 40498, timeout, 31
21+
pat20.rcp, 157, 3, 76, 0.08s, 37
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
problem, nodes, solutions, fails, time, optimum
2-
pat1.rcp, failure (see file `/tmp/err578.txt`)
3-
pat2.rcp, failure (see file `/tmp/err579.txt`)
4-
pat3.rcp, failure (see file `/tmp/err580.txt`)
5-
pat4.rcp, failure (see file `/tmp/err581.txt`)
6-
pat5.rcp, failure (see file `/tmp/err582.txt`)
7-
pat6.rcp, failure (see file `/tmp/err583.txt`)
8-
pat7.rcp, failure (see file `/tmp/err584.txt`)
9-
pat8.rcp, failure (see file `/tmp/err585.txt`)
10-
pat9.rcp, failure (see file `/tmp/err586.txt`)
11-
pat10.rcp, failure (see file `/tmp/err587.txt`)
12-
pat11.rcp, failure (see file `/tmp/err588.txt`)
13-
pat12.rcp, failure (see file `/tmp/err589.txt`)
14-
pat13.rcp, failure (see file `/tmp/err590.txt`)
2+
pat1.rcp, failure (see file `/tmp/err970.txt`)
3+
pat2.rcp, failure (see file `/tmp/err971.txt`)
4+
pat3.rcp, failure (see file `/tmp/err972.txt`)
5+
pat4.rcp, failure (see file `/tmp/err973.txt`)
6+
pat5.rcp, failure (see file `/tmp/err974.txt`)
7+
pat6.rcp, failure (see file `/tmp/err975.txt`)
8+
pat7.rcp, failure (see file `/tmp/err976.txt`)
9+
pat8.rcp, failure (see file `/tmp/err977.txt`)
10+
pat9.rcp, failure (see file `/tmp/err978.txt`)
11+
pat10.rcp, failure (see file `/tmp/err979.txt`)
12+
pat11.rcp, failure (see file `/tmp/err980.txt`)
13+
pat12.rcp, failure (see file `/tmp/err981.txt`)
14+
pat13.rcp, failure (see file `/tmp/err982.txt`)

include/solver.cuh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
#include "vstore.cuh"
1919
#include "constraints.cuh"
2020

21-
#define PITER 10
22-
2321
void solve(VStore* vstore, Constraints constraints, Var minimize_x, int timeout);
2422

2523
#endif

src/solver.cu

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,7 @@ void solve(VStore* vstore, Constraints constraints, Var minimize_x, int timeout)
105105
const int PROPS_TYPE = 3;
106106

107107
CUDA_GLOBAL void status_k(SharedData* shared_data, bool* fixpoint /* out */) {
108-
Status res = shared_data->pstatus->join();
109-
*fixpoint = res != UNKNOWN && !shared_data->pstatus->has_changed();
108+
*fixpoint = !shared_data->pstatus->has_changed();
110109

111110
LOG(printf("status_k: status->join=%d\n", *fixpoint));
112111
LOG(shared_data->vstore->print());
@@ -119,11 +118,7 @@ CUDA_GLOBAL void propagate_k(SharedData* shared_data, T* props) {
119118
PropagatorsStatus& pstatus = *(shared_data->pstatus);
120119
VStore& vstore = *(shared_data->vstore);
121120
Status s;
122-
bool has_changed = false;
123-
for (int i=0; i<PITER; ++i) {
124-
has_changed |= p.propagate(vstore);
125-
}
126-
s = has_changed ? UNKNOWN : IDLE;
121+
s = p.propagate(vstore) ? UNKNOWN : IDLE;
127122
if(p.is_entailed(vstore)) {
128123
s = ENTAILED;
129124
}
@@ -183,32 +178,24 @@ void solve(VStore* vstore, Constraints constraints, Var minimize_x, int timeout)
183178
auto rei_p = cons_alloc<ReifiedLogicalAnd>(constraints.reifiedLogicalAnd);
184179
auto lin_p = cons_alloc<LinearIneq>(constraints.linearIneq);
185180

186-
bool *fixpoint;
187-
CUDIE(cudaMallocManaged(&fixpoint, sizeof(*fixpoint)));
188-
189181
while (shared_data->exploring) {
190182
auto current = std::chrono::high_resolution_clock::now();
191183
if (std::chrono::duration_cast<std::chrono::seconds>(current - t1).count() > timeout) {
192184
break;
193185
}
194-
*fixpoint = false;
195186
do {
196187
shared_data->pstatus->reset_changed();
197188
propagate_k<TemporalProp><<<constraints.temporal.size(), 1, 0, streams[0]>>>(shared_data, tem_p);
198-
propagate_k<ReifiedLogicalAnd><<<constraints.reifiedLogicalAnd.size(), 1, 0, streams[1]>>>(shared_data, rei_p);
199189
propagate_k<LinearIneq><<<constraints.linearIneq.size(), 1, 0, streams[2]>>>(shared_data, lin_p);
190+
propagate_k<ReifiedLogicalAnd><<<constraints.reifiedLogicalAnd.size(), 1, 0, streams[1]>>>(shared_data, rei_p);
200191
CUDIE(cudaDeviceSynchronize());
201-
status_k<<<1,1>>>(shared_data, fixpoint);
202-
CUDIE(cudaDeviceSynchronize());
203-
} while (!(*fixpoint));
192+
} while (shared_data->pstatus->has_changed());
204193
search<<<1, 1>>>(stack, shared_data, stats, best_sol, minimize_x, temporal_vars, best_bound);
205194
CUDIE(cudaDeviceSynchronize());
206195
}
207196

208197
auto t2 = std::chrono::high_resolution_clock::now();
209198

210-
CUDIE(cudaFree(fixpoint));
211-
212199
CUDIE(cudaFree(tem_p));
213200
CUDIE(cudaFree(rei_p));
214201
CUDIE(cudaFree(lin_p));

0 commit comments

Comments
 (0)