fix learning gap bug. results now correct.

This commit is contained in:
2019-12-10 13:54:19 -05:00
parent f14c028e2c
commit db07b0384d
2 changed files with 7 additions and 4 deletions

BIN
gpu-slo/main Executable file

Binary file not shown.

View File

@@ -57,12 +57,12 @@ struct Solver {
__device__ __device__
void operator()(Row &r) { void operator()(Row &r) {
if (r.r - r.l <= 1) { if (r.r - r.l <= 0) {
r.learning = false; r.learning = false;
return; return;
} }
while (r.r - r.l > 1) { while (r.r - r.l > 0) {
int gen = rels[r.rel].gens[r.l & 1]; int gen = rels[r.rel].gens[r.l & 1];
int next = cosets[r.from * ngens + gen]; int next = cosets[r.from * ngens + gen];
if (next < 0) break; if (next < 0) break;
@@ -70,7 +70,7 @@ struct Solver {
r.from = next; r.from = next;
} }
while (r.r - r.l > 1) { while (r.r - r.l > 0) {
int gen = rels[r.rel].gens[r.r & 1]; int gen = rels[r.rel].gens[r.r & 1];
int next = cosets[r.to * ngens + gen]; int next = cosets[r.to * ngens + gen];
if (next < 0) break; if (next < 0) break;
@@ -78,7 +78,7 @@ struct Solver {
r.to = next; r.to = next;
} }
if (r.r - r.l <= 1) { if (r.r - r.l <= 0) {
int gen = rels[r.rel].gens[r.l & 1]; int gen = rels[r.rel].gens[r.l & 1];
cosets[r.from * ngens + gen] = r.to; cosets[r.from * ngens + gen] = r.to;
cosets[r.to * ngens + gen] = r.from; cosets[r.to * ngens + gen] = r.from;
@@ -292,11 +292,14 @@ int main(int argc, char* argv[]) {
thrust::host_vector<int> cosets = solve(ngens, subs, rels); thrust::host_vector<int> cosets = solve(ngens, subs, rels);
std::cout << cosets.size() / ngens << " cosets" << std::endl; std::cout << cosets.size() / ngens << " cosets" << std::endl;
/*
for (int c = 0; c < cosets.size(); c += ngens) { for (int c = 0; c < cosets.size(); c += ngens) {
for (int g = c; g < c + ngens; g++ ) { for (int g = c; g < c + ngens; g++ ) {
std::cout << cosets[g] << " "; std::cout << cosets[g] << " ";
} std::cout << std::endl; } std::cout << std::endl;
} }
*/
return 0; return 0;
} }