-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVectorHelpers.js
More file actions
69 lines (59 loc) · 1.94 KB
/
VectorHelpers.js
File metadata and controls
69 lines (59 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import { MathHelpers } from './MathHelpers.js'
export const VectorHelpers = {
printVector: (name, vector, size) => {
console.log(`********Vector ${name} (size: ${size})********`);
console.log(vector);
console.log(`****************************************`);
},
cpuSAXPY: (saxpyObject) => {
const size = saxpyObject.size;
const aScalar = saxpyObject.aScalar;
const xVector = saxpyObject.xVector;
const yVector = saxpyObject.yVector;
const zVector = saxpyObject.zVector;
const startTime = performance.now();
for (let i = 0; i < size; i++) {
zVector[i] = aScalar * xVector[i] + yVector[i];
}
const endTime = performance.now();
const cpu = saxpyObject.cpu;
cpu.elapsedTime = (endTime - startTime) / MathHelpers.TEN_POWER_THREE; // seconds
},
// identity vector
createIdentityVector: (size) => {
const v = new Float32Array(size);
v.fill(0);
return v;
},
// random vector
createRandomVector: (size) => {
const v = new Float32Array(size);
for (var i = 0; i < size; ++i) {
v[i] = Math.random();
}
return v;
},
initSAXPY: (saxpyObject) => {
const size = saxpyObject.size;
// Create X and Y Vector on CPU
saxpyObject.aScalar = Math.random();
saxpyObject.xVector = VectorHelpers.createRandomVector(size);
saxpyObject.yVector = VectorHelpers.createRandomVector(size);
saxpyObject.zVector = VectorHelpers.createIdentityVector(size);
},
getEmptySaxpyObject: () => {
return {
size: 0,
aScalar: undefined,
xVector: undefined,
yVector: undefined,
zVector: undefined,
cpu: {
elapsedTime: undefined,
},
gpu: {
elapsedTime: undefined,
}
};
}
};