GPU acceleration makes this code less spaghetti
This commit is contained in:
parent
5880b0ff2b
commit
77712b93e7
1 changed files with 8 additions and 12 deletions
18
rank.js
18
rank.js
|
@ -65,7 +65,7 @@ function rankCalc(result, iterations = 10, main = [], domain_mode = false) {
|
||||||
if (follow == unn) continue;
|
if (follow == unn) continue;
|
||||||
let dst = fnc[fnu] || 0;
|
let dst = fnc[fnu] || 0;
|
||||||
let n = (keys.indexOf(unn) || 0) * (rl) + (keys.indexOf(follow) || 0) * 1;
|
let n = (keys.indexOf(unn) || 0) * (rl) + (keys.indexOf(follow) || 0) * 1;
|
||||||
matrixe[n] = 1 + 5 / (dst + 3);
|
matrixe[n] = 1 / (dst + 3);
|
||||||
msum_old += matrixe[n];
|
msum_old += matrixe[n];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ function rankCalc(result, iterations = 10, main = [], domain_mode = false) {
|
||||||
const multiplyMatrix = gpu.createKernel(function (a, b, c) {
|
const multiplyMatrix = gpu.createKernel(function (a, b, c) {
|
||||||
let sum = 0;
|
let sum = 0;
|
||||||
for (let i = 0; i < c; i++) {
|
for (let i = 0; i < c; i++) {
|
||||||
sum += a[this.thread.x / c][i] * b[i][this.thread.x % c];
|
sum += a[this.thread.x % c][i] * b[i][this.thread.x / c];
|
||||||
}
|
}
|
||||||
return sum;
|
return sum;
|
||||||
}).setOutput([keys.length ** 2,1]);
|
}).setOutput([keys.length ** 2,1]);
|
||||||
|
@ -86,9 +86,8 @@ function rankCalc(result, iterations = 10, main = [], domain_mode = false) {
|
||||||
|
|
||||||
pr = [];
|
pr = [];
|
||||||
|
|
||||||
let msum = 1;
|
let msum = 0;
|
||||||
let intv = Math.pow(0.01 / rl, Math.pow(0.09, i / mm));
|
console.log(`Completed ${i} iterations`)
|
||||||
console.log(`Completed ${i} iterations with ${intv} threshold`)
|
|
||||||
matrixe = multiplyMatrix(matrixe, matrixe, keys.length)[0];
|
matrixe = multiplyMatrix(matrixe, matrixe, keys.length)[0];
|
||||||
|
|
||||||
for (let h in matrixe) {
|
for (let h in matrixe) {
|
||||||
|
@ -111,18 +110,15 @@ function rankCalc(result, iterations = 10, main = [], domain_mode = false) {
|
||||||
|
|
||||||
let ov = Object.keys(pr);
|
let ov = Object.keys(pr);
|
||||||
let new_sum = ov.filter(i => !isNaN(pr[i]) && main.indexOf(i) != -1).map(n => pr[n]).reduce((a, b) => a + b, 1e-9);
|
let new_sum = ov.filter(i => !isNaN(pr[i]) && main.indexOf(i) != -1).map(n => pr[n]).reduce((a, b) => a + b, 1e-9);
|
||||||
let new_sum2 = ov.filter(i => !isNaN(pr[i]) && main.indexOf(i) == -1 && (domain_mode && new URL(i).host == new URL(main[0]).host)).map(n => pr[n]).reduce((a, b) => a + b, 1e-9);
|
let new_sum2 = ov.filter(i => !isNaN(pr[i]) && main.indexOf(i) == -1).map(n => pr[n]).reduce((a, b) => a + b, 1e-9);
|
||||||
let new_sum3 = ov.filter(i => !isNaN(pr[i]) && main.indexOf(i) == -1 && !(domain_mode && new URL(i).host == new URL(main[0]).host)).map(n => pr[n]).reduce((a, b) => a + b, 1e-9);
|
|
||||||
|
|
||||||
for (let unn of ov) {
|
for (let unn of ov) {
|
||||||
if (!result[unn]) {
|
if (!result[unn]) {
|
||||||
pr[unn] = 0;
|
pr[unn] = 0;
|
||||||
} else if ((domain_mode && new URL(unn).host == new URL(main[0]).host) && main.indexOf(unn) == -1) {
|
|
||||||
pr[unn] /= new_sum2 * 3;
|
|
||||||
} else if (main.indexOf(unn) == -1) {
|
} else if (main.indexOf(unn) == -1) {
|
||||||
pr[unn] /= new_sum3 * (domain_mode ? 3 : 2);
|
pr[unn] /= new_sum2 * 2;
|
||||||
} else {
|
} else {
|
||||||
pr[unn] /= new_sum * (domain_mode ? 3 : 2);
|
pr[unn] /= new_sum * 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue