forked from microsoft/Multiverso
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.lua
More file actions
79 lines (70 loc) · 1.95 KB
/
test.lua
File metadata and controls
79 lines (70 loc) · 1.95 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
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/env lua
require 'torch'
mv = require('multiverso')
local mv_test = torch.TestSuite()
local mv_tester = torch.Tester()
function Set(list)
local set = {}
for _, l in ipairs(list) do set[l] = true end
return set
end
function mv_test.testArray()
size = 100000
tbh = mv.ArrayTableHandler:new(size)
mv.barrier()
for i = 1, 1000 do
print(tbh:get()[{{1, 10}}])
tbh:add(torch.range(1, size))
tbh:add(torch.range(1, size))
mv.barrier()
end
end
function mv_test.testMatrix()
num_row = 11
num_col = 10
size = num_row * num_col
num_workers = mv.num_workers()
tbh = mv.MatrixTableHandler:new(num_row, num_col)
mv.barrier()
for i = 1, 20 do
row_ids = {0, 1, 5, 10}
row_ids_set = Set(row_ids)
tbh:add(torch.range(1, size))
data = torch.range(
row_ids[1] * num_col + 1,
row_ids[1] * num_col + num_col
)
for j = 2, #row_ids do
row_id = row_ids[j]
data = torch.cat(data, torch.range(
row_id * num_col + 1,
row_id * num_col + num_col
))
end
tbh:add(data, row_ids)
mv.barrier()
data = tbh:get()
mv.barrier()
for j = 1, data:size(1) do
for k = 1, data:size(2) do
expected = ((j - 1) * num_col + k) * i * num_workers
if row_ids_set[j - 1] then
expected = expected + ((j - 1) * num_col + k) * i * num_workers
end
mv_tester:eq(expected, data[j][k])
end
end
data = tbh:get(row_ids)
mv.barrier()
for j = 1, data:size(1) do
for k = 1, data:size(2) do
expected = (row_ids[j] * num_col + k) * i * num_workers * 2
mv_tester:eq(expected, data[j][k])
end
end
end
end
mv.init()
mv_tester:add(mv_test)
mv_tester:run()
mv.shutdown()