Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
dgl
Commits
5b409bf7
Unverified
Commit
5b409bf7
authored
Mar 24, 2023
by
Hongzhi (Steve), Chen
Committed by
GitHub
Mar 24, 2023
Browse files
Rename_test (#5487)
Co-authored-by:
Ubuntu
<
ubuntu@ip-172-31-28-63.ap-northeast-1.compute.internal
>
parent
0dd4f767
Changes
36
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
317 additions
and
347 deletions
+317
-347
tests/cugraph/test_basics.py
tests/cugraph/test_basics.py
+5
-5
tests/dist/python/run_dist_objects.py
tests/dist/python/run_dist_objects.py
+14
-18
tests/dist/test_dist_objects.py
tests/dist/test_dist_objects.py
+6
-6
tests/distributed/test_dist_graph_store.py
tests/distributed/test_dist_graph_store.py
+63
-73
tests/distributed/test_dist_tensor.py
tests/distributed/test_dist_tensor.py
+2
-6
tests/distributed/test_distributed_sampling.py
tests/distributed/test_distributed_sampling.py
+14
-14
tests/distributed/test_mp_dataloader.py
tests/distributed/test_mp_dataloader.py
+2
-6
tests/distributed/test_partition.py
tests/distributed/test_partition.py
+13
-17
tests/python/common/data/test_serialize.py
tests/python/common/data/test_serialize.py
+3
-3
tests/python/common/function/test_basics.py
tests/python/common/function/test_basics.py
+39
-39
tests/python/common/ops/test_edge_softmax.py
tests/python/common/ops/test_edge_softmax.py
+1
-1
tests/python/common/ops/test_ops.py
tests/python/common/ops/test_ops.py
+7
-7
tests/python/common/sampling/test_sampling.py
tests/python/common/sampling/test_sampling.py
+58
-58
tests/python/common/test_batch-graph.py
tests/python/common/test_batch-graph.py
+8
-8
tests/python/common/test_batch-heterograph.py
tests/python/common/test_batch-heterograph.py
+29
-33
tests/python/common/test_generators.py
tests/python/common/test_generators.py
+2
-2
tests/python/common/test_heterograph-kernel.py
tests/python/common/test_heterograph-kernel.py
+3
-3
tests/python/common/test_heterograph-misc.py
tests/python/common/test_heterograph-misc.py
+4
-4
tests/python/common/test_heterograph-pickle.py
tests/python/common/test_heterograph-pickle.py
+2
-2
tests/python/common/test_heterograph-remove.py
tests/python/common/test_heterograph-remove.py
+42
-42
No files found.
tests/cugraph/test_basics.py
View file @
5b409bf7
...
...
@@ -15,8 +15,8 @@ def test_to_cugraph_conversion():
g
=
dgl
.
graph
((
F
.
tensor
([
0
,
1
,
2
,
3
]),
F
.
tensor
([
1
,
0
,
3
,
2
]))).
to
(
"cuda"
)
cugraph_g
=
g
.
to_cugraph
()
assert
cugraph_g
.
number_of_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
cugraph_g
.
number_of_edges
()
==
g
.
num
ber_of
_edges
()
assert
cugraph_g
.
number_of_nodes
()
==
g
.
num_nodes
()
assert
cugraph_g
.
number_of_edges
()
==
g
.
num_edges
()
assert
cugraph_g
.
has_edge
(
0
,
1
)
assert
cugraph_g
.
has_edge
(
1
,
0
)
...
...
@@ -36,8 +36,8 @@ def test_from_cugraph_conversion():
g
=
dgl
.
from_cugraph
(
cugraph_g
)
assert
g
.
device
.
type
==
"cuda"
assert
g
.
num
ber_of
_nodes
()
==
cugraph_g
.
number_of_nodes
()
assert
g
.
num
ber_of
_edges
()
==
cugraph_g
.
number_of_edges
()
assert
g
.
num_nodes
()
==
cugraph_g
.
number_of_nodes
()
assert
g
.
num_edges
()
==
cugraph_g
.
number_of_edges
()
# assert reverse edges are not present
assert
g
.
has_edges_between
(
0
,
1
)
...
...
@@ -55,7 +55,7 @@ def test_from_cugraph_conversion():
g
=
dgl
.
from_cugraph
(
cugraph_g
)
assert
g
.
device
.
type
==
"cuda"
assert
g
.
num
ber_of
_nodes
()
==
cugraph_g
.
number_of_nodes
()
assert
g
.
num_nodes
()
==
cugraph_g
.
number_of_nodes
()
# assert reverse edges are present
assert
g
.
has_edges_between
(
0
,
1
)
assert
g
.
has_edges_between
(
1
,
0
)
...
...
tests/dist/python/run_dist_objects.py
View file @
5b409bf7
...
...
@@ -72,7 +72,7 @@ def node_split_test(g, force_even, ntype="_N"):
gpb
=
g
.
get_partition_book
()
selected_nodes_dist_tensor
=
dgl
.
distributed
.
DistTensor
(
[
g
.
num
ber_of
_nodes
(
ntype
)],
F
.
uint8
,
init_func
=
rand_init
[
g
.
num_nodes
(
ntype
)],
F
.
uint8
,
init_func
=
rand_init
)
nodes
=
node_split
(
...
...
@@ -86,9 +86,7 @@ def node_split_test(g, force_even, ntype="_N"):
g
.
barrier
()
if
g
.
rank
()
==
0
:
batched_assert_zero
(
selected_nodes_dist_tensor
,
g
.
number_of_nodes
(
ntype
)
)
batched_assert_zero
(
selected_nodes_dist_tensor
,
g
.
num_nodes
(
ntype
))
g
.
barrier
()
...
...
@@ -97,7 +95,7 @@ def edge_split_test(g, force_even, etype="_E"):
gpb
=
g
.
get_partition_book
()
selected_edges_dist_tensor
=
dgl
.
distributed
.
DistTensor
(
[
g
.
num
ber_of
_edges
(
etype
)],
F
.
uint8
,
init_func
=
rand_init
[
g
.
num_edges
(
etype
)],
F
.
uint8
,
init_func
=
rand_init
)
edges
=
edge_split
(
...
...
@@ -111,9 +109,7 @@ def edge_split_test(g, force_even, etype="_E"):
g
.
barrier
()
if
g
.
rank
()
==
0
:
batched_assert_zero
(
selected_edges_dist_tensor
,
g
.
number_of_edges
(
etype
)
)
batched_assert_zero
(
selected_edges_dist_tensor
,
g
.
num_edges
(
etype
))
g
.
barrier
()
...
...
@@ -127,19 +123,19 @@ def test_dist_graph(g):
num_nodes
=
part_metadata
[
"num_nodes"
]
num_edges
=
part_metadata
[
"num_edges"
]
assert
g
.
num
ber_of
_nodes
()
==
num_nodes
assert
g
.
num
ber_of
_edges
()
==
num_edges
assert
g
.
num_nodes
()
==
num_nodes
assert
g
.
num_edges
()
==
num_edges
num_nodes
=
{
ntype
:
g
.
num_nodes
(
ntype
)
for
ntype
in
g
.
ntypes
}
num_edges
=
{
etype
:
g
.
num_edges
(
etype
)
for
etype
in
g
.
etypes
}
for
key
,
n_nodes
in
num_nodes
.
items
():
assert
g
.
num
ber_of
_nodes
(
key
)
==
n_nodes
assert
g
.
num_nodes
(
key
)
==
n_nodes
node_split_test
(
g
,
force_even
=
False
,
ntype
=
key
)
node_split_test
(
g
,
force_even
=
True
,
ntype
=
key
)
for
key
,
n_edges
in
num_edges
.
items
():
assert
g
.
num
ber_of
_edges
(
key
)
==
n_edges
assert
g
.
num_edges
(
key
)
==
n_edges
edge_split_test
(
g
,
force_even
=
False
,
etype
=
key
)
edge_split_test
(
g
,
force_even
=
True
,
etype
=
key
)
...
...
@@ -156,7 +152,7 @@ def find_edges_test(g, orig_nid_map):
for
u_type
,
etype
,
v_type
in
etypes
:
orig_u
=
g
.
edges
[
etype
].
data
[
"edge_u"
]
orig_v
=
g
.
edges
[
etype
].
data
[
"edge_v"
]
eids
=
F
.
tensor
(
np
.
random
.
randint
(
g
.
num
ber_of
_edges
(
etype
),
size
=
100
))
eids
=
F
.
tensor
(
np
.
random
.
randint
(
g
.
num_edges
(
etype
),
size
=
100
))
u
,
v
=
g
.
find_edges
(
eids
,
etype
=
etype
)
assert
F
.
allclose
(
orig_nid_map
[
u_type
][
u
],
orig_u
[
eids
])
assert
F
.
allclose
(
orig_nid_map
[
v_type
][
v
],
orig_v
[
eids
])
...
...
@@ -172,7 +168,7 @@ def edge_subgraph_test(g, etype_eids_uv_map):
sg
=
g
.
edge_subgraph
(
all_eids
)
for
t
in
etypes
:
assert
sg
.
num
ber_of
_edges
(
t
[
1
])
==
len
(
all_eids
[
t
])
assert
sg
.
num_edges
(
t
[
1
])
==
len
(
all_eids
[
t
])
assert
F
.
allclose
(
sg
.
edges
[
t
].
data
[
dgl
.
EID
],
all_eids
[
t
])
for
u_type
,
etype
,
v_type
in
etypes
:
...
...
@@ -197,7 +193,7 @@ def sample_neighbors_with_args(g, size, fanout):
)
for
ntype
,
n
in
num_nodes
.
items
():
assert
sampled_graph
.
num
ber_of
_nodes
(
ntype
)
==
n
assert
sampled_graph
.
num_nodes
(
ntype
)
==
n
for
t
in
etypes
:
src
,
dst
=
sampled_graph
.
edges
(
etype
=
t
)
eids
=
sampled_graph
.
edges
[
t
].
data
[
dgl
.
EID
]
...
...
@@ -305,7 +301,7 @@ def dist_tensor_test_persistent(data_shape):
def
test_dist_tensor
(
g
):
first_type
=
g
.
ntypes
[
0
]
data_shape
=
(
g
.
num
ber_of
_nodes
(
first_type
),
2
)
data_shape
=
(
g
.
num_nodes
(
first_type
),
2
)
dist_tensor_test_sanity
(
data_shape
)
dist_tensor_test_sanity
(
data_shape
,
name
=
"DistTensorSanity"
)
dist_tensor_test_destroy_recreate
(
data_shape
,
name
=
"DistTensorRecreate"
)
...
...
@@ -365,7 +361,7 @@ def dist_embedding_check_existing(num_nodes):
def
test_dist_embedding
(
g
):
num_nodes
=
g
.
num
ber_of
_nodes
(
g
.
ntypes
[
0
])
num_nodes
=
g
.
num_nodes
(
g
.
ntypes
[
0
])
dist_embedding_check_sanity
(
num_nodes
,
dgl
.
distributed
.
optim
.
SparseAdagrad
)
dist_embedding_check_sanity
(
num_nodes
,
dgl
.
distributed
.
optim
.
SparseAdagrad
,
name
=
"SomeEmbedding"
...
...
@@ -383,7 +379,7 @@ def test_dist_embedding(g):
def
dist_optimizer_check_store
(
g
):
num_nodes
=
g
.
num
ber_of
_nodes
(
g
.
ntypes
[
0
])
num_nodes
=
g
.
num_nodes
(
g
.
ntypes
[
0
])
rank
=
g
.
rank
()
try
:
emb
=
dgl
.
distributed
.
DistEmbedding
(
...
...
tests/dist/test_dist_objects.py
View file @
5b409bf7
...
...
@@ -23,14 +23,14 @@ shared_workspace = os.environ.get(
def
create_graph
(
num_part
,
dist_graph_path
,
hetero
):
if
not
hetero
:
g
=
dgl
.
rand_graph
(
10000
,
42000
)
g
.
ndata
[
"feat"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_nodes
()),
1
)
g
.
edata
[
"feat"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_edges
()),
1
)
g
.
ndata
[
"feat"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_nodes
()),
1
)
g
.
edata
[
"feat"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_edges
()),
1
)
g
.
ndata
[
"in_degrees"
]
=
g
.
in_degrees
()
g
.
ndata
[
"out_degrees"
]
=
g
.
out_degrees
()
etype
=
g
.
etypes
[
0
]
ntype
=
g
.
ntypes
[
0
]
edge_u
,
edge_v
=
g
.
find_edges
(
F
.
arange
(
0
,
g
.
num
ber_of
_edges
(
etype
)))
edge_u
,
edge_v
=
g
.
find_edges
(
F
.
arange
(
0
,
g
.
num_edges
(
etype
)))
g
.
edges
[
etype
].
data
[
"edge_u"
]
=
edge_u
g
.
edges
[
etype
].
data
[
"edge_v"
]
=
edge_v
...
...
@@ -66,15 +66,15 @@ def create_graph(num_part, dist_graph_path, hetero):
g
=
dgl
.
heterograph
(
edges
,
num_nodes
)
g
.
nodes
[
"n1"
].
data
[
"feat"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_nodes
(
"n1"
)),
1
F
.
arange
(
0
,
g
.
num_nodes
(
"n1"
)),
1
)
g
.
edges
[
"r1"
].
data
[
"feat"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_edges
(
"r1"
)),
1
F
.
arange
(
0
,
g
.
num_edges
(
"r1"
)),
1
)
for
_
,
etype
,
_
in
etypes
:
edge_u
,
edge_v
=
g
.
find_edges
(
F
.
arange
(
0
,
g
.
num
ber_of
_edges
(
etype
)),
etype
=
etype
F
.
arange
(
0
,
g
.
num_edges
(
etype
)),
etype
=
etype
)
g
.
edges
[
etype
].
data
[
"edge_u"
]
=
edge_u
g
.
edges
[
etype
].
data
[
"edge_v"
]
=
edge_v
...
...
tests/distributed/test_dist_graph_store.py
View file @
5b409bf7
...
...
@@ -81,13 +81,13 @@ def rand_init(shape, dtype):
def
check_dist_graph_empty
(
g
,
num_clients
,
num_nodes
,
num_edges
):
# Test API
assert
g
.
num
ber_of
_nodes
()
==
num_nodes
assert
g
.
num
ber_of
_edges
()
==
num_edges
assert
g
.
num_nodes
()
==
num_nodes
assert
g
.
num_edges
()
==
num_edges
# Test init node data
new_shape
=
(
g
.
num
ber_of
_nodes
(),
2
)
new_shape
=
(
g
.
num_nodes
(),
2
)
g
.
ndata
[
"test1"
]
=
dgl
.
distributed
.
DistTensor
(
new_shape
,
F
.
int32
)
nids
=
F
.
arange
(
0
,
int
(
g
.
num
ber_of
_nodes
()
/
2
))
nids
=
F
.
arange
(
0
,
int
(
g
.
num_nodes
()
/
2
))
feats
=
g
.
ndata
[
"test1"
][
nids
]
assert
np
.
all
(
F
.
asnumpy
(
feats
)
==
0
)
...
...
@@ -96,9 +96,7 @@ def check_dist_graph_empty(g, num_clients, num_nodes, num_edges):
new_shape
,
F
.
float32
,
"test3"
,
init_func
=
rand_init
)
del
test3
test3
=
dgl
.
distributed
.
DistTensor
(
(
g
.
number_of_nodes
(),
3
),
F
.
float32
,
"test3"
)
test3
=
dgl
.
distributed
.
DistTensor
((
g
.
num_nodes
(),
3
),
F
.
float32
,
"test3"
)
del
test3
# Test write data
...
...
@@ -156,8 +154,8 @@ def check_server_client_empty(shared_mem, num_servers, num_clients):
0
,
num_servers
,
num_clients
,
g
.
num
ber_of
_nodes
(),
g
.
num
ber_of
_edges
(),
g
.
num_nodes
(),
g
.
num_edges
(),
),
)
p
.
start
()
...
...
@@ -301,8 +299,8 @@ def run_client_hierarchy(
def
check_dist_emb
(
g
,
num_clients
,
num_nodes
,
num_edges
):
# Test sparse emb
try
:
emb
=
DistEmbedding
(
g
.
num
ber_of
_nodes
(),
1
,
"emb1"
,
emb_init
)
nids
=
F
.
arange
(
0
,
int
(
g
.
num
ber_of
_nodes
()))
emb
=
DistEmbedding
(
g
.
num_nodes
(),
1
,
"emb1"
,
emb_init
)
nids
=
F
.
arange
(
0
,
int
(
g
.
num_nodes
()))
lr
=
0.001
optimizer
=
SparseAdagrad
([
emb
],
lr
=
lr
)
with
F
.
record_grad
():
...
...
@@ -314,13 +312,13 @@ def check_dist_emb(g, num_clients, num_nodes, num_edges):
feats
=
emb
(
nids
)
if
num_clients
==
1
:
assert_almost_equal
(
F
.
asnumpy
(
feats
),
np
.
ones
((
len
(
nids
),
1
))
*
-
lr
)
rest
=
np
.
setdiff1d
(
np
.
arange
(
g
.
num
ber_of
_nodes
()),
F
.
asnumpy
(
nids
))
rest
=
np
.
setdiff1d
(
np
.
arange
(
g
.
num_nodes
()),
F
.
asnumpy
(
nids
))
feats1
=
emb
(
rest
)
assert
np
.
all
(
F
.
asnumpy
(
feats1
)
==
np
.
zeros
((
len
(
rest
),
1
)))
policy
=
dgl
.
distributed
.
PartitionPolicy
(
"node"
,
g
.
get_partition_book
())
grad_sum
=
dgl
.
distributed
.
DistTensor
(
(
g
.
num
ber_of
_nodes
(),
1
),
F
.
float32
,
"emb1_sum"
,
policy
(
g
.
num_nodes
(),
1
),
F
.
float32
,
"emb1_sum"
,
policy
)
if
num_clients
==
1
:
assert
np
.
all
(
...
...
@@ -329,7 +327,7 @@ def check_dist_emb(g, num_clients, num_nodes, num_edges):
)
assert
np
.
all
(
F
.
asnumpy
(
grad_sum
[
rest
])
==
np
.
zeros
((
len
(
rest
),
1
)))
emb
=
DistEmbedding
(
g
.
num
ber_of
_nodes
(),
1
,
"emb2"
,
emb_init
)
emb
=
DistEmbedding
(
g
.
num_nodes
(),
1
,
"emb2"
,
emb_init
)
with
F
.
no_grad
():
feats1
=
emb
(
nids
)
assert
np
.
all
(
F
.
asnumpy
(
feats1
)
==
0
)
...
...
@@ -349,7 +347,7 @@ def check_dist_emb(g, num_clients, num_nodes, num_edges):
assert_almost_equal
(
F
.
asnumpy
(
feats
),
np
.
ones
((
len
(
nids
),
1
))
*
1
*
-
lr
)
rest
=
np
.
setdiff1d
(
np
.
arange
(
g
.
num
ber_of
_nodes
()),
F
.
asnumpy
(
nids
))
rest
=
np
.
setdiff1d
(
np
.
arange
(
g
.
num_nodes
()),
F
.
asnumpy
(
nids
))
feats1
=
emb
(
rest
)
assert
np
.
all
(
F
.
asnumpy
(
feats1
)
==
np
.
zeros
((
len
(
rest
),
1
)))
except
NotImplementedError
as
e
:
...
...
@@ -361,17 +359,17 @@ def check_dist_emb(g, num_clients, num_nodes, num_edges):
def
check_dist_graph
(
g
,
num_clients
,
num_nodes
,
num_edges
):
# Test API
assert
g
.
num
ber_of
_nodes
()
==
num_nodes
assert
g
.
num
ber_of
_edges
()
==
num_edges
assert
g
.
num_nodes
()
==
num_nodes
assert
g
.
num_edges
()
==
num_edges
# Test reading node data
nids
=
F
.
arange
(
0
,
int
(
g
.
num
ber_of
_nodes
()
/
2
))
nids
=
F
.
arange
(
0
,
int
(
g
.
num_nodes
()
/
2
))
feats1
=
g
.
ndata
[
"features"
][
nids
]
feats
=
F
.
squeeze
(
feats1
,
1
)
assert
np
.
all
(
F
.
asnumpy
(
feats
==
nids
))
# Test reading edge data
eids
=
F
.
arange
(
0
,
int
(
g
.
num
ber_of
_edges
()
/
2
))
eids
=
F
.
arange
(
0
,
int
(
g
.
num_edges
()
/
2
))
feats1
=
g
.
edata
[
"features"
][
eids
]
feats
=
F
.
squeeze
(
feats1
,
1
)
assert
np
.
all
(
F
.
asnumpy
(
feats
==
eids
))
...
...
@@ -382,7 +380,7 @@ def check_dist_graph(g, num_clients, num_nodes, num_edges):
assert
F
.
array_equal
(
sg
.
edata
[
dgl
.
EID
],
eids
)
# Test init node data
new_shape
=
(
g
.
num
ber_of
_nodes
(),
2
)
new_shape
=
(
g
.
num_nodes
(),
2
)
test1
=
dgl
.
distributed
.
DistTensor
(
new_shape
,
F
.
int32
)
g
.
ndata
[
"test1"
]
=
test1
feats
=
g
.
ndata
[
"test1"
][
nids
]
...
...
@@ -406,9 +404,7 @@ def check_dist_graph(g, num_clients, num_nodes, num_edges):
del
test3
assert
test3_name
not
in
g
.
_client
.
data_name_list
()
assert
test3_name
not
in
g
.
_client
.
gdata_name_list
()
test3
=
dgl
.
distributed
.
DistTensor
(
(
g
.
number_of_nodes
(),
3
),
F
.
float32
,
"test3"
)
test3
=
dgl
.
distributed
.
DistTensor
((
g
.
num_nodes
(),
3
),
F
.
float32
,
"test3"
)
del
test3
# add tests for anonymous distributed tensor.
...
...
@@ -432,7 +428,7 @@ def check_dist_graph(g, num_clients, num_nodes, num_edges):
del
test4
try
:
test4
=
dgl
.
distributed
.
DistTensor
(
(
g
.
num
ber_of
_nodes
(),
3
),
F
.
float32
,
"test4"
(
g
.
num_nodes
(),
3
),
F
.
float32
,
"test4"
)
raise
Exception
(
""
)
except
:
...
...
@@ -445,19 +441,19 @@ def check_dist_graph(g, num_clients, num_nodes, num_edges):
assert
np
.
all
(
F
.
asnumpy
(
feats
)
==
1
)
# Test metadata operations.
assert
len
(
g
.
ndata
[
"features"
])
==
g
.
num
ber_of
_nodes
()
assert
g
.
ndata
[
"features"
].
shape
==
(
g
.
num
ber_of
_nodes
(),
1
)
assert
len
(
g
.
ndata
[
"features"
])
==
g
.
num_nodes
()
assert
g
.
ndata
[
"features"
].
shape
==
(
g
.
num_nodes
(),
1
)
assert
g
.
ndata
[
"features"
].
dtype
==
F
.
int64
assert
g
.
node_attr_schemes
()[
"features"
].
dtype
==
F
.
int64
assert
g
.
node_attr_schemes
()[
"test1"
].
dtype
==
F
.
int32
assert
g
.
node_attr_schemes
()[
"features"
].
shape
==
(
1
,)
selected_nodes
=
np
.
random
.
randint
(
0
,
100
,
size
=
g
.
num
ber_of
_nodes
())
>
30
selected_nodes
=
np
.
random
.
randint
(
0
,
100
,
size
=
g
.
num_nodes
())
>
30
# Test node split
nodes
=
node_split
(
selected_nodes
,
g
.
get_partition_book
())
nodes
=
F
.
asnumpy
(
nodes
)
# We only have one partition, so the local nodes are basically all nodes in the graph.
local_nids
=
np
.
arange
(
g
.
num
ber_of
_nodes
())
local_nids
=
np
.
arange
(
g
.
num_nodes
())
for
n
in
nodes
:
assert
n
in
local_nids
...
...
@@ -475,8 +471,8 @@ def check_dist_emb_server_client(
graph_name
=
(
f
"check_dist_emb_
{
shared_mem
}
_
{
num_servers
}
_
{
num_clients
}
_
{
num_groups
}
"
)
g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_nodes
()),
1
)
g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_edges
()),
1
)
g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_nodes
()),
1
)
g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_edges
()),
1
)
partition_graph
(
g
,
graph_name
,
num_parts
,
"/tmp/dist_graph"
)
# let's just test on one partition for now.
...
...
@@ -510,8 +506,8 @@ def check_dist_emb_server_client(
0
,
num_servers
,
num_clients
,
g
.
num
ber_of
_nodes
(),
g
.
num
ber_of
_edges
(),
g
.
num_nodes
(),
g
.
num_edges
(),
group_id
,
),
)
...
...
@@ -542,8 +538,8 @@ def check_server_client(shared_mem, num_servers, num_clients, num_groups=1):
# Partition the graph
num_parts
=
1
graph_name
=
f
"check_server_client_
{
shared_mem
}
_
{
num_servers
}
_
{
num_clients
}
_
{
num_groups
}
"
g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_nodes
()),
1
)
g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_edges
()),
1
)
g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_nodes
()),
1
)
g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_edges
()),
1
)
partition_graph
(
g
,
graph_name
,
num_parts
,
"/tmp/dist_graph"
)
# let's just test on one partition for now.
...
...
@@ -578,8 +574,8 @@ def check_server_client(shared_mem, num_servers, num_clients, num_groups=1):
0
,
num_servers
,
num_clients
,
g
.
num
ber_of
_nodes
(),
g
.
num
ber_of
_edges
(),
g
.
num_nodes
(),
g
.
num_edges
(),
group_id
,
),
)
...
...
@@ -609,8 +605,8 @@ def check_server_client_hierarchy(shared_mem, num_servers, num_clients):
# Partition the graph
num_parts
=
1
graph_name
=
"dist_graph_test_2"
g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_nodes
()),
1
)
g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_edges
()),
1
)
g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_nodes
()),
1
)
g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_edges
()),
1
)
partition_graph
(
g
,
graph_name
,
...
...
@@ -634,14 +630,10 @@ def check_server_client_hierarchy(shared_mem, num_servers, num_clients):
cli_ps
=
[]
manager
=
mp
.
Manager
()
return_dict
=
manager
.
dict
()
node_mask
=
np
.
zeros
((
g
.
number_of_nodes
(),),
np
.
int32
)
edge_mask
=
np
.
zeros
((
g
.
number_of_edges
(),),
np
.
int32
)
nodes
=
np
.
random
.
choice
(
g
.
number_of_nodes
(),
g
.
number_of_nodes
()
//
10
,
replace
=
False
)
edges
=
np
.
random
.
choice
(
g
.
number_of_edges
(),
g
.
number_of_edges
()
//
10
,
replace
=
False
)
node_mask
=
np
.
zeros
((
g
.
num_nodes
(),),
np
.
int32
)
edge_mask
=
np
.
zeros
((
g
.
num_edges
(),),
np
.
int32
)
nodes
=
np
.
random
.
choice
(
g
.
num_nodes
(),
g
.
num_nodes
()
//
10
,
replace
=
False
)
edges
=
np
.
random
.
choice
(
g
.
num_edges
(),
g
.
num_edges
()
//
10
,
replace
=
False
)
node_mask
[
nodes
]
=
1
edge_mask
[
edges
]
=
1
nodes
=
np
.
sort
(
nodes
)
...
...
@@ -729,17 +721,17 @@ def check_dist_graph_hetero(g, num_clients, num_nodes, num_edges):
# Test API
for
ntype
in
num_nodes
:
assert
ntype
in
g
.
ntypes
assert
num_nodes
[
ntype
]
==
g
.
num
ber_of
_nodes
(
ntype
)
assert
num_nodes
[
ntype
]
==
g
.
num_nodes
(
ntype
)
for
etype
in
num_edges
:
assert
etype
in
g
.
etypes
assert
num_edges
[
etype
]
==
g
.
num
ber_of
_edges
(
etype
)
assert
num_edges
[
etype
]
==
g
.
num_edges
(
etype
)
etypes
=
[(
"n1"
,
"r1"
,
"n2"
),
(
"n1"
,
"r2"
,
"n3"
),
(
"n2"
,
"r3"
,
"n3"
)]
for
i
,
etype
in
enumerate
(
g
.
canonical_etypes
):
assert
etype
[
0
]
==
etypes
[
i
][
0
]
assert
etype
[
1
]
==
etypes
[
i
][
1
]
assert
etype
[
2
]
==
etypes
[
i
][
2
]
assert
g
.
num
ber_of
_nodes
()
==
sum
([
num_nodes
[
ntype
]
for
ntype
in
num_nodes
])
assert
g
.
num
ber_of
_edges
()
==
sum
([
num_edges
[
etype
]
for
etype
in
num_edges
])
assert
g
.
num_nodes
()
==
sum
([
num_nodes
[
ntype
]
for
ntype
in
num_nodes
])
assert
g
.
num_edges
()
==
sum
([
num_edges
[
etype
]
for
etype
in
num_edges
])
# Test reading node data
ntype
=
"n1"
...
...
@@ -786,7 +778,7 @@ def check_dist_graph_hetero(g, num_clients, num_nodes, num_edges):
assert
F
.
array_equal
(
sg
.
edata
[
dgl
.
EID
],
eids
)
# Test init node data
new_shape
=
(
g
.
num
ber_of
_nodes
(
"n1"
),
2
)
new_shape
=
(
g
.
num_nodes
(
"n1"
),
2
)
g
.
nodes
[
"n1"
].
data
[
"test1"
]
=
dgl
.
distributed
.
DistTensor
(
new_shape
,
F
.
int32
)
feats
=
g
.
nodes
[
"n1"
].
data
[
"test1"
][
nids
]
assert
np
.
all
(
F
.
asnumpy
(
feats
)
==
0
)
...
...
@@ -797,7 +789,7 @@ def check_dist_graph_hetero(g, num_clients, num_nodes, num_edges):
)
del
test3
test3
=
dgl
.
distributed
.
DistTensor
(
(
g
.
num
ber_of
_nodes
(
"n1"
),
3
),
F
.
float32
,
"test3"
(
g
.
num_nodes
(
"n1"
),
3
),
F
.
float32
,
"test3"
)
del
test3
...
...
@@ -822,7 +814,7 @@ def check_dist_graph_hetero(g, num_clients, num_nodes, num_edges):
del
test4
try
:
test4
=
dgl
.
distributed
.
DistTensor
(
(
g
.
num
ber_of
_nodes
(
"n1"
),
3
),
F
.
float32
,
"test4"
(
g
.
num_nodes
(
"n1"
),
3
),
F
.
float32
,
"test4"
)
raise
Exception
(
""
)
except
:
...
...
@@ -835,18 +827,16 @@ def check_dist_graph_hetero(g, num_clients, num_nodes, num_edges):
assert
np
.
all
(
F
.
asnumpy
(
feats
)
==
1
)
# Test metadata operations.
assert
len
(
g
.
nodes
[
"n1"
].
data
[
"feat"
])
==
g
.
num
ber_of
_nodes
(
"n1"
)
assert
g
.
nodes
[
"n1"
].
data
[
"feat"
].
shape
==
(
g
.
num
ber_of
_nodes
(
"n1"
),
1
)
assert
len
(
g
.
nodes
[
"n1"
].
data
[
"feat"
])
==
g
.
num_nodes
(
"n1"
)
assert
g
.
nodes
[
"n1"
].
data
[
"feat"
].
shape
==
(
g
.
num_nodes
(
"n1"
),
1
)
assert
g
.
nodes
[
"n1"
].
data
[
"feat"
].
dtype
==
F
.
int64
selected_nodes
=
(
np
.
random
.
randint
(
0
,
100
,
size
=
g
.
number_of_nodes
(
"n1"
))
>
30
)
selected_nodes
=
np
.
random
.
randint
(
0
,
100
,
size
=
g
.
num_nodes
(
"n1"
))
>
30
# Test node split
nodes
=
node_split
(
selected_nodes
,
g
.
get_partition_book
(),
ntype
=
"n1"
)
nodes
=
F
.
asnumpy
(
nodes
)
# We only have one partition, so the local nodes are basically all nodes in the graph.
local_nids
=
np
.
arange
(
g
.
num
ber_of
_nodes
(
"n1"
))
local_nids
=
np
.
arange
(
g
.
num_nodes
(
"n1"
))
for
n
in
nodes
:
assert
n
in
local_nids
...
...
@@ -875,8 +865,8 @@ def check_server_client_hetero(shared_mem, num_servers, num_clients):
p
.
start
()
cli_ps
=
[]
num_nodes
=
{
ntype
:
g
.
num
ber_of
_nodes
(
ntype
)
for
ntype
in
g
.
ntypes
}
num_edges
=
{
etype
:
g
.
num
ber_of
_edges
(
etype
)
for
etype
in
g
.
etypes
}
num_nodes
=
{
ntype
:
g
.
num_nodes
(
ntype
)
for
ntype
in
g
.
ntypes
}
num_edges
=
{
etype
:
g
.
num_edges
(
etype
)
for
etype
in
g
.
etypes
}
for
cli_id
in
range
(
num_clients
):
print
(
"start client"
,
cli_id
)
p
=
ctx
.
Process
(
...
...
@@ -981,8 +971,8 @@ def check_dist_optim_server_client(
# Partition the graph
num_parts
=
1
g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_nodes
()),
1
)
g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_edges
()),
1
)
g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_nodes
()),
1
)
g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_edges
()),
1
)
partition_graph
(
g
,
graph_name
,
num_parts
,
"/tmp/dist_graph"
)
# let's just test on one partition for now.
...
...
@@ -1048,15 +1038,15 @@ def test_standalone():
# Partition the graph
num_parts
=
1
graph_name
=
"dist_graph_test_3"
g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_nodes
()),
1
)
g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_edges
()),
1
)
g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_nodes
()),
1
)
g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_edges
()),
1
)
partition_graph
(
g
,
graph_name
,
num_parts
,
"/tmp/dist_graph"
)
dgl
.
distributed
.
initialize
(
"kv_ip_config.txt"
)
dist_g
=
DistGraph
(
graph_name
,
part_config
=
"/tmp/dist_graph/{}.json"
.
format
(
graph_name
)
)
check_dist_graph
(
dist_g
,
1
,
g
.
num
ber_of
_nodes
(),
g
.
num
ber_of
_edges
())
check_dist_graph
(
dist_g
,
1
,
g
.
num_nodes
(),
g
.
num_edges
())
dgl
.
distributed
.
exit_client
()
# this is needed since there's two test here in one process
...
...
@@ -1076,15 +1066,15 @@ def test_standalone_node_emb():
# Partition the graph
num_parts
=
1
graph_name
=
"dist_graph_test_3"
g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_nodes
()),
1
)
g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num
ber_of
_edges
()),
1
)
g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_nodes
()),
1
)
g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_edges
()),
1
)
partition_graph
(
g
,
graph_name
,
num_parts
,
"/tmp/dist_graph"
)
dgl
.
distributed
.
initialize
(
"kv_ip_config.txt"
)
dist_g
=
DistGraph
(
graph_name
,
part_config
=
"/tmp/dist_graph/{}.json"
.
format
(
graph_name
)
)
check_dist_emb
(
dist_g
,
1
,
g
.
num
ber_of
_nodes
(),
g
.
num
ber_of
_edges
())
check_dist_emb
(
dist_g
,
1
,
g
.
num_nodes
(),
g
.
num_edges
())
dgl
.
distributed
.
exit_client
()
# this is needed since there's two test here in one process
...
...
@@ -1110,8 +1100,8 @@ def test_split(hetero):
part_method
=
"metis"
,
)
node_mask
=
np
.
random
.
randint
(
0
,
100
,
size
=
g
.
num
ber_of
_nodes
(
ntype
))
>
30
edge_mask
=
np
.
random
.
randint
(
0
,
100
,
size
=
g
.
num
ber_of
_edges
(
etype
))
>
30
node_mask
=
np
.
random
.
randint
(
0
,
100
,
size
=
g
.
num_nodes
(
ntype
))
>
30
edge_mask
=
np
.
random
.
randint
(
0
,
100
,
size
=
g
.
num_edges
(
etype
))
>
30
selected_nodes
=
np
.
nonzero
(
node_mask
)[
0
]
selected_edges
=
np
.
nonzero
(
edge_mask
)[
0
]
...
...
@@ -1196,8 +1186,8 @@ def test_split_even():
part_method
=
"metis"
,
)
node_mask
=
np
.
random
.
randint
(
0
,
100
,
size
=
g
.
num
ber_of
_nodes
())
>
30
edge_mask
=
np
.
random
.
randint
(
0
,
100
,
size
=
g
.
num
ber_of
_edges
())
>
30
node_mask
=
np
.
random
.
randint
(
0
,
100
,
size
=
g
.
num_nodes
())
>
30
edge_mask
=
np
.
random
.
randint
(
0
,
100
,
size
=
g
.
num_edges
())
>
30
selected_nodes
=
np
.
nonzero
(
node_mask
)[
0
]
selected_edges
=
np
.
nonzero
(
edge_mask
)[
0
]
all_nodes1
=
[]
...
...
tests/distributed/test_dist_tensor.py
View file @
5b409bf7
...
...
@@ -32,12 +32,8 @@ def setup_module():
# Partition the graph.
num_parts
=
1
graph_name
=
"dist_graph_test_3"
dist_g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
dist_g
.
number_of_nodes
()),
1
)
dist_g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
dist_g
.
number_of_edges
()),
1
)
dist_g
.
ndata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
dist_g
.
num_nodes
()),
1
)
dist_g
.
edata
[
"features"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
dist_g
.
num_edges
()),
1
)
dgl
.
distributed
.
partition_graph
(
dist_g
,
graph_name
,
num_parts
,
"/tmp/dist_graph"
)
...
...
tests/distributed/test_distributed_sampling.py
View file @
5b409bf7
...
...
@@ -88,7 +88,7 @@ def start_sample_client_shuffle(
src
,
dst
=
sampled_graph
.
edges
()
src
=
orig_nid
[
src
]
dst
=
orig_nid
[
dst
]
assert
sampled_graph
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
sampled_graph
.
num_nodes
()
==
g
.
num_nodes
()
assert
np
.
all
(
F
.
asnumpy
(
g
.
has_edges_between
(
src
,
dst
)))
eids
=
g
.
edge_ids
(
src
,
dst
)
eids1
=
orig_eid
[
sampled_graph
.
edata
[
dgl
.
EID
]]
...
...
@@ -167,7 +167,7 @@ def check_rpc_sampling(tmpdir, num_server):
assert
p
.
exitcode
==
0
src
,
dst
=
sampled_graph
.
edges
()
assert
sampled_graph
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
sampled_graph
.
num_nodes
()
==
g
.
num_nodes
()
assert
np
.
all
(
F
.
asnumpy
(
g
.
has_edges_between
(
src
,
dst
)))
eids
=
g
.
edge_ids
(
src
,
dst
)
assert
np
.
array_equal
(
...
...
@@ -202,7 +202,7 @@ def check_rpc_find_edges_shuffle(tmpdir, num_server):
time
.
sleep
(
1
)
pserver_list
.
append
(
p
)
eids
=
F
.
tensor
(
np
.
random
.
randint
(
g
.
num
ber_of
_edges
(),
size
=
100
))
eids
=
F
.
tensor
(
np
.
random
.
randint
(
g
.
num_edges
(),
size
=
100
))
u
,
v
=
g
.
find_edges
(
orig_eid
[
eids
])
du
,
dv
=
start_find_edges_client
(
0
,
tmpdir
,
num_server
>
1
,
eids
)
du
=
orig_nid
[
du
]
...
...
@@ -232,7 +232,7 @@ def create_random_hetero(dense=False, empty=False):
edges
[
etype
]
=
(
arr
.
row
,
arr
.
col
)
g
=
dgl
.
heterograph
(
edges
,
num_nodes
)
g
.
nodes
[
"n1"
].
data
[
"feat"
]
=
F
.
ones
(
(
g
.
num
ber_of
_nodes
(
"n1"
),
10
),
F
.
float32
,
F
.
cpu
()
(
g
.
num_nodes
(
"n1"
),
10
),
F
.
float32
,
F
.
cpu
()
)
return
g
...
...
@@ -332,7 +332,7 @@ def check_rpc_get_degree_shuffle(tmpdir, num_server):
time
.
sleep
(
1
)
pserver_list
.
append
(
p
)
nids
=
F
.
tensor
(
np
.
random
.
randint
(
g
.
num
ber_of
_nodes
(),
size
=
100
))
nids
=
F
.
tensor
(
np
.
random
.
randint
(
g
.
num_nodes
(),
size
=
100
))
in_degs
,
out_degs
,
all_in_degs
,
all_out_degs
=
start_get_degrees_client
(
0
,
tmpdir
,
num_server
>
1
,
nids
)
...
...
@@ -619,7 +619,7 @@ def check_rpc_hetero_sampling_empty_shuffle(tmpdir, num_server):
p
.
join
()
assert
p
.
exitcode
==
0
assert
block
.
num
ber_of
_edges
()
==
0
assert
block
.
num_edges
()
==
0
assert
len
(
block
.
etypes
)
==
len
(
g
.
etypes
)
...
...
@@ -733,7 +733,7 @@ def check_rpc_hetero_etype_sampling_empty_shuffle(tmpdir, num_server):
p
.
join
()
assert
p
.
exitcode
==
0
assert
block
.
num
ber_of
_edges
()
==
0
assert
block
.
num_edges
()
==
0
assert
len
(
block
.
etypes
)
==
len
(
g
.
etypes
)
...
...
@@ -841,7 +841,7 @@ def check_rpc_bipartite_sampling_empty(tmpdir, num_server):
p
.
join
()
assert
p
.
exitcode
==
0
assert
block
.
num
ber_of
_edges
()
==
0
assert
block
.
num_edges
()
==
0
assert
len
(
block
.
etypes
)
==
len
(
g
.
etypes
)
...
...
@@ -943,7 +943,7 @@ def check_rpc_bipartite_etype_sampling_empty(tmpdir, num_server):
assert
p
.
exitcode
==
0
assert
block
is
not
None
assert
block
.
num
ber_of
_edges
()
==
0
assert
block
.
num_edges
()
==
0
assert
len
(
block
.
etypes
)
==
len
(
g
.
etypes
)
...
...
@@ -1071,7 +1071,7 @@ def check_standalone_sampling(tmpdir):
sampled_graph
=
sample_neighbors
(
dist_graph
,
[
0
,
10
,
99
,
66
,
1024
,
2008
],
3
)
src
,
dst
=
sampled_graph
.
edges
()
assert
sampled_graph
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
sampled_graph
.
num_nodes
()
==
g
.
num_nodes
()
assert
np
.
all
(
F
.
asnumpy
(
g
.
has_edges_between
(
src
,
dst
)))
eids
=
g
.
edge_ids
(
src
,
dst
)
assert
np
.
array_equal
(
...
...
@@ -1117,7 +1117,7 @@ def check_standalone_etype_sampling(tmpdir):
sampled_graph
=
sample_etype_neighbors
(
dist_graph
,
[
0
,
10
,
99
,
66
,
1023
],
3
)
src
,
dst
=
sampled_graph
.
edges
()
assert
sampled_graph
.
num
ber_of
_nodes
()
==
hg
.
num
ber_of
_nodes
()
assert
sampled_graph
.
num_nodes
()
==
hg
.
num_nodes
()
assert
np
.
all
(
F
.
asnumpy
(
hg
.
has_edges_between
(
src
,
dst
)))
eids
=
hg
.
edge_ids
(
src
,
dst
)
assert
np
.
array_equal
(
...
...
@@ -1148,7 +1148,7 @@ def check_standalone_etype_sampling_heterograph(tmpdir):
(
"paper"
,
"cite"
,
"paper"
):
(
src
,
dst
),
(
"paper"
,
"cite-by"
,
"paper"
):
(
dst
,
src
),
},
{
"paper"
:
hg
.
num
ber_of
_nodes
()},
{
"paper"
:
hg
.
num_nodes
()},
)
partition_graph
(
new_hg
,
...
...
@@ -1170,7 +1170,7 @@ def check_standalone_etype_sampling_heterograph(tmpdir):
assert
len
(
src
)
==
10
src
,
dst
=
sampled_graph
.
edges
(
etype
=
(
"paper"
,
"cite-by"
,
"paper"
))
assert
len
(
src
)
==
10
assert
sampled_graph
.
num
ber_of
_nodes
()
==
new_hg
.
num
ber_of
_nodes
()
assert
sampled_graph
.
num_nodes
()
==
new_hg
.
num_nodes
()
dgl
.
distributed
.
exit_client
()
...
...
@@ -1241,7 +1241,7 @@ def check_rpc_in_subgraph_shuffle(tmpdir, num_server):
src
,
dst
=
sampled_graph
.
edges
()
src
=
orig_nid
[
src
]
dst
=
orig_nid
[
dst
]
assert
sampled_graph
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
sampled_graph
.
num_nodes
()
==
g
.
num_nodes
()
assert
np
.
all
(
F
.
asnumpy
(
g
.
has_edges_between
(
src
,
dst
)))
subg1
=
dgl
.
in_subgraph
(
g
,
orig_nid
[
nodes
])
...
...
tests/distributed/test_mp_dataloader.py
View file @
5b409bf7
...
...
@@ -637,12 +637,8 @@ def create_random_hetero():
)
edges
[
etype
]
=
(
arr
.
row
,
arr
.
col
)
g
=
dgl
.
heterograph
(
edges
,
num_nodes
)
g
.
nodes
[
"n1"
].
data
[
"feat"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
number_of_nodes
(
"n1"
)),
1
)
g
.
edges
[
"r1"
].
data
[
"feat"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
number_of_edges
(
"r1"
)),
1
)
g
.
nodes
[
"n1"
].
data
[
"feat"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_nodes
(
"n1"
)),
1
)
g
.
edges
[
"r1"
].
data
[
"feat"
]
=
F
.
unsqueeze
(
F
.
arange
(
0
,
g
.
num_edges
(
"r1"
)),
1
)
return
g
...
...
tests/distributed/test_partition.py
View file @
5b409bf7
...
...
@@ -98,18 +98,18 @@ def verify_hetero_graph(g, parts):
for
ntype
in
g
.
ntypes
:
print
(
"node {}: {}, {}"
.
format
(
ntype
,
g
.
num
ber_of
_nodes
(
ntype
),
num_nodes
[
ntype
]
ntype
,
g
.
num_nodes
(
ntype
),
num_nodes
[
ntype
]
)
)
assert
g
.
num
ber_of
_nodes
(
ntype
)
==
num_nodes
[
ntype
]
assert
g
.
num_nodes
(
ntype
)
==
num_nodes
[
ntype
]
# Verify the number of edges are correct.
for
etype
in
g
.
canonical_etypes
:
print
(
"edge {}: {}, {}"
.
format
(
etype
,
g
.
num
ber_of
_edges
(
etype
),
num_edges
[
etype
]
etype
,
g
.
num_edges
(
etype
),
num_edges
[
etype
]
)
)
assert
g
.
num
ber_of
_edges
(
etype
)
==
num_edges
[
etype
]
assert
g
.
num_edges
(
etype
)
==
num_edges
[
etype
]
nids
=
{
ntype
:
[]
for
ntype
in
g
.
ntypes
}
eids
=
{
etype
:
[]
for
etype
in
g
.
canonical_etypes
}
...
...
@@ -149,11 +149,11 @@ def verify_hetero_graph(g, parts):
nids_type
=
F
.
cat
(
nids
[
ntype
],
0
)
uniq_ids
=
F
.
unique
(
nids_type
)
# We should get all nodes.
assert
len
(
uniq_ids
)
==
g
.
num
ber_of
_nodes
(
ntype
)
assert
len
(
uniq_ids
)
==
g
.
num_nodes
(
ntype
)
for
etype
in
eids
:
eids_type
=
F
.
cat
(
eids
[
etype
],
0
)
uniq_ids
=
F
.
unique
(
eids_type
)
assert
len
(
uniq_ids
)
==
g
.
num
ber_of
_edges
(
etype
)
assert
len
(
uniq_ids
)
==
g
.
num_edges
(
etype
)
# TODO(zhengda) this doesn't check 'part_id'
...
...
@@ -235,9 +235,9 @@ def check_hetero_partition(
assert
len
(
orig_nids
)
==
len
(
hg
.
ntypes
)
assert
len
(
orig_eids
)
==
len
(
hg
.
canonical_etypes
)
for
ntype
in
hg
.
ntypes
:
assert
len
(
orig_nids
[
ntype
])
==
hg
.
num
ber_of
_nodes
(
ntype
)
assert
len
(
orig_nids
[
ntype
])
==
hg
.
num_nodes
(
ntype
)
for
etype
in
hg
.
canonical_etypes
:
assert
len
(
orig_eids
[
etype
])
==
hg
.
num
ber_of
_edges
(
etype
)
assert
len
(
orig_eids
[
etype
])
==
hg
.
num_edges
(
etype
)
parts
=
[]
shuffled_labels
=
[]
shuffled_elabels
=
[]
...
...
@@ -334,13 +334,9 @@ def check_partition(
load_feats
=
True
,
graph_formats
=
None
,
):
g
.
ndata
[
"labels"
]
=
F
.
arange
(
0
,
g
.
number_of_nodes
())
g
.
ndata
[
"feats"
]
=
F
.
tensor
(
np
.
random
.
randn
(
g
.
number_of_nodes
(),
10
),
F
.
float32
)
g
.
edata
[
"feats"
]
=
F
.
tensor
(
np
.
random
.
randn
(
g
.
number_of_edges
(),
10
),
F
.
float32
)
g
.
ndata
[
"labels"
]
=
F
.
arange
(
0
,
g
.
num_nodes
())
g
.
ndata
[
"feats"
]
=
F
.
tensor
(
np
.
random
.
randn
(
g
.
num_nodes
(),
10
),
F
.
float32
)
g
.
edata
[
"feats"
]
=
F
.
tensor
(
np
.
random
.
randn
(
g
.
num_edges
(),
10
),
F
.
float32
)
g
.
update_all
(
fn
.
copy_u
(
"feats"
,
"msg"
),
fn
.
sum
(
"msg"
,
"h"
))
g
.
update_all
(
fn
.
copy_e
(
"feats"
,
"msg"
),
fn
.
sum
(
"msg"
,
"eh"
))
num_hops
=
2
...
...
@@ -389,8 +385,8 @@ def check_partition(
assert
np
.
all
(
F
.
asnumpy
(
part_ids
)
==
i
)
# Check the metadata
assert
gpb
.
_num_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
gpb
.
_num_edges
()
==
g
.
num
ber_of
_edges
()
assert
gpb
.
_num_nodes
()
==
g
.
num_nodes
()
assert
gpb
.
_num_edges
()
==
g
.
num_edges
()
assert
gpb
.
num_partitions
()
==
num_parts
gpb_meta
=
gpb
.
metadata
()
...
...
tests/python/common/data/test_serialize.py
View file @
5b409bf7
...
...
@@ -30,9 +30,9 @@ def construct_graph(n, is_hetero):
g_list
=
[]
for
i
in
range
(
n
):
g
=
generate_rand_graph
(
30
,
is_hetero
)
g
.
edata
[
"e1"
]
=
F
.
randn
((
g
.
num
ber_of
_edges
(),
32
))
g
.
edata
[
"e2"
]
=
F
.
ones
((
g
.
num
ber_of
_edges
(),
32
))
g
.
ndata
[
"n1"
]
=
F
.
randn
((
g
.
num
ber_of
_nodes
(),
64
))
g
.
edata
[
"e1"
]
=
F
.
randn
((
g
.
num_edges
(),
32
))
g
.
edata
[
"e2"
]
=
F
.
ones
((
g
.
num_edges
(),
32
))
g
.
ndata
[
"n1"
]
=
F
.
randn
((
g
.
num_nodes
(),
64
))
g_list
.
append
(
g
)
return
g_list
...
...
tests/python/common/function/test_basics.py
View file @
5b409bf7
...
...
@@ -250,8 +250,8 @@ def _test_nx_conversion():
# use id feature to test non-tensor copy
g
=
dgl
.
from_networkx
(
nxg
,
node_attrs
=
[
"n1"
],
edge_attrs
=
[
"e1"
,
"id"
])
# check graph size
assert
g
.
num
ber_of
_nodes
()
==
5
assert
g
.
num
ber_of
_edges
()
==
4
assert
g
.
num_nodes
()
==
5
assert
g
.
num_edges
()
==
4
# check number of features
# test with existing dglgraph (so existing features should be cleared)
assert
len
(
g
.
ndata
)
==
1
...
...
@@ -286,8 +286,8 @@ def _test_nx_conversion():
# test with a new graph
g
=
dgl
.
from_networkx
(
nxg
,
node_attrs
=
[
"n1"
],
edge_attrs
=
[
"e1"
])
# check graph size
assert
g
.
num
ber_of
_nodes
()
==
7
assert
g
.
num
ber_of
_edges
()
==
7
assert
g
.
num_nodes
()
==
7
assert
g
.
num_edges
()
==
7
# check number of features
assert
len
(
g
.
ndata
)
==
1
assert
len
(
g
.
edata
)
==
1
...
...
@@ -310,8 +310,8 @@ def _test_nx_conversion():
d
[
"h"
]
=
F
.
tensor
([
u
,
v
])
g
=
dgl
.
from_networkx
(
nxg
,
node_attrs
=
[
"h"
],
edge_attrs
=
[
"h"
])
assert
g
.
num
ber_of
_nodes
()
==
3
assert
g
.
num
ber_of
_edges
()
==
4
assert
g
.
num_nodes
()
==
3
assert
g
.
num_edges
()
==
4
assert
g
.
has_edge_between
(
0
,
1
)
assert
g
.
has_edge_between
(
1
,
2
)
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
tensor
([[
1.0
],
[
2.0
],
[
3.0
]]))
...
...
@@ -511,18 +511,18 @@ def test_repr(idtype):
@
parametrize_idtype
def
test_local_var
(
idtype
):
g
=
dgl
.
graph
(([
0
,
1
,
2
,
3
],
[
1
,
2
,
3
,
4
]),
idtype
=
idtype
,
device
=
F
.
ctx
())
g
.
ndata
[
"h"
]
=
F
.
zeros
((
g
.
num
ber_of
_nodes
(),
3
))
g
.
edata
[
"w"
]
=
F
.
zeros
((
g
.
num
ber_of
_edges
(),
4
))
g
.
ndata
[
"h"
]
=
F
.
zeros
((
g
.
num_nodes
(),
3
))
g
.
edata
[
"w"
]
=
F
.
zeros
((
g
.
num_edges
(),
4
))
# test override
def
foo
(
g
):
g
=
g
.
local_var
()
g
.
ndata
[
"h"
]
=
F
.
ones
((
g
.
num
ber_of
_nodes
(),
3
))
g
.
edata
[
"w"
]
=
F
.
ones
((
g
.
num
ber_of
_edges
(),
4
))
g
.
ndata
[
"h"
]
=
F
.
ones
((
g
.
num_nodes
(),
3
))
g
.
edata
[
"w"
]
=
F
.
ones
((
g
.
num_edges
(),
4
))
foo
(
g
)
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
zeros
((
g
.
num
ber_of
_nodes
(),
3
)))
assert
F
.
allclose
(
g
.
edata
[
"w"
],
F
.
zeros
((
g
.
num
ber_of
_edges
(),
4
)))
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
zeros
((
g
.
num_nodes
(),
3
)))
assert
F
.
allclose
(
g
.
edata
[
"w"
],
F
.
zeros
((
g
.
num_edges
(),
4
)))
# test out-place update
def
foo
(
g
):
...
...
@@ -531,8 +531,8 @@ def test_local_var(idtype):
g
.
edges
[[
2
,
3
]].
data
[
"w"
]
=
F
.
ones
((
2
,
4
))
foo
(
g
)
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
zeros
((
g
.
num
ber_of
_nodes
(),
3
)))
assert
F
.
allclose
(
g
.
edata
[
"w"
],
F
.
zeros
((
g
.
num
ber_of
_edges
(),
4
)))
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
zeros
((
g
.
num_nodes
(),
3
)))
assert
F
.
allclose
(
g
.
edata
[
"w"
],
F
.
zeros
((
g
.
num_edges
(),
4
)))
# test out-place update 2
def
foo
(
g
):
...
...
@@ -541,14 +541,14 @@ def test_local_var(idtype):
g
.
apply_edges
(
lambda
edges
:
{
"w"
:
edges
.
data
[
"w"
]
+
10
},
[
2
,
3
])
foo
(
g
)
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
zeros
((
g
.
num
ber_of
_nodes
(),
3
)))
assert
F
.
allclose
(
g
.
edata
[
"w"
],
F
.
zeros
((
g
.
num
ber_of
_edges
(),
4
)))
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
zeros
((
g
.
num_nodes
(),
3
)))
assert
F
.
allclose
(
g
.
edata
[
"w"
],
F
.
zeros
((
g
.
num_edges
(),
4
)))
# test auto-pop
def
foo
(
g
):
g
=
g
.
local_var
()
g
.
ndata
[
"hh"
]
=
F
.
ones
((
g
.
num
ber_of
_nodes
(),
3
))
g
.
edata
[
"ww"
]
=
F
.
ones
((
g
.
num
ber_of
_edges
(),
4
))
g
.
ndata
[
"hh"
]
=
F
.
ones
((
g
.
num_nodes
(),
3
))
g
.
edata
[
"ww"
]
=
F
.
ones
((
g
.
num_edges
(),
4
))
foo
(
g
)
assert
"hh"
not
in
g
.
ndata
...
...
@@ -584,18 +584,18 @@ def test_local_var(idtype):
@
parametrize_idtype
def
test_local_scope
(
idtype
):
g
=
dgl
.
graph
(([
0
,
1
,
2
,
3
],
[
1
,
2
,
3
,
4
]),
idtype
=
idtype
,
device
=
F
.
ctx
())
g
.
ndata
[
"h"
]
=
F
.
zeros
((
g
.
num
ber_of
_nodes
(),
3
))
g
.
edata
[
"w"
]
=
F
.
zeros
((
g
.
num
ber_of
_edges
(),
4
))
g
.
ndata
[
"h"
]
=
F
.
zeros
((
g
.
num_nodes
(),
3
))
g
.
edata
[
"w"
]
=
F
.
zeros
((
g
.
num_edges
(),
4
))
# test override
def
foo
(
g
):
with
g
.
local_scope
():
g
.
ndata
[
"h"
]
=
F
.
ones
((
g
.
num
ber_of
_nodes
(),
3
))
g
.
edata
[
"w"
]
=
F
.
ones
((
g
.
num
ber_of
_edges
(),
4
))
g
.
ndata
[
"h"
]
=
F
.
ones
((
g
.
num_nodes
(),
3
))
g
.
edata
[
"w"
]
=
F
.
ones
((
g
.
num_edges
(),
4
))
foo
(
g
)
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
zeros
((
g
.
num
ber_of
_nodes
(),
3
)))
assert
F
.
allclose
(
g
.
edata
[
"w"
],
F
.
zeros
((
g
.
num
ber_of
_edges
(),
4
)))
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
zeros
((
g
.
num_nodes
(),
3
)))
assert
F
.
allclose
(
g
.
edata
[
"w"
],
F
.
zeros
((
g
.
num_edges
(),
4
)))
# test out-place update
def
foo
(
g
):
...
...
@@ -604,8 +604,8 @@ def test_local_scope(idtype):
g
.
edges
[[
2
,
3
]].
data
[
"w"
]
=
F
.
ones
((
2
,
4
))
foo
(
g
)
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
zeros
((
g
.
num
ber_of
_nodes
(),
3
)))
assert
F
.
allclose
(
g
.
edata
[
"w"
],
F
.
zeros
((
g
.
num
ber_of
_edges
(),
4
)))
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
zeros
((
g
.
num_nodes
(),
3
)))
assert
F
.
allclose
(
g
.
edata
[
"w"
],
F
.
zeros
((
g
.
num_edges
(),
4
)))
# test out-place update 2
def
foo
(
g
):
...
...
@@ -614,14 +614,14 @@ def test_local_scope(idtype):
g
.
apply_edges
(
lambda
edges
:
{
"w"
:
edges
.
data
[
"w"
]
+
10
},
[
2
,
3
])
foo
(
g
)
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
zeros
((
g
.
num
ber_of
_nodes
(),
3
)))
assert
F
.
allclose
(
g
.
edata
[
"w"
],
F
.
zeros
((
g
.
num
ber_of
_edges
(),
4
)))
assert
F
.
allclose
(
g
.
ndata
[
"h"
],
F
.
zeros
((
g
.
num_nodes
(),
3
)))
assert
F
.
allclose
(
g
.
edata
[
"w"
],
F
.
zeros
((
g
.
num_edges
(),
4
)))
# test auto-pop
def
foo
(
g
):
with
g
.
local_scope
():
g
.
ndata
[
"hh"
]
=
F
.
ones
((
g
.
num
ber_of
_nodes
(),
3
))
g
.
edata
[
"ww"
]
=
F
.
ones
((
g
.
num
ber_of
_edges
(),
4
))
g
.
ndata
[
"hh"
]
=
F
.
ones
((
g
.
num_nodes
(),
3
))
g
.
edata
[
"ww"
]
=
F
.
ones
((
g
.
num_edges
(),
4
))
foo
(
g
)
assert
"hh"
not
in
g
.
ndata
...
...
@@ -630,11 +630,11 @@ def test_local_scope(idtype):
# test nested scope
def
foo
(
g
):
with
g
.
local_scope
():
g
.
ndata
[
"hh"
]
=
F
.
ones
((
g
.
num
ber_of
_nodes
(),
3
))
g
.
edata
[
"ww"
]
=
F
.
ones
((
g
.
num
ber_of
_edges
(),
4
))
g
.
ndata
[
"hh"
]
=
F
.
ones
((
g
.
num_nodes
(),
3
))
g
.
edata
[
"ww"
]
=
F
.
ones
((
g
.
num_edges
(),
4
))
with
g
.
local_scope
():
g
.
ndata
[
"hhh"
]
=
F
.
ones
((
g
.
num
ber_of
_nodes
(),
3
))
g
.
edata
[
"www"
]
=
F
.
ones
((
g
.
num
ber_of
_edges
(),
4
))
g
.
ndata
[
"hhh"
]
=
F
.
ones
((
g
.
num_nodes
(),
3
))
g
.
edata
[
"www"
]
=
F
.
ones
((
g
.
num_edges
(),
4
))
assert
"hhh"
not
in
g
.
ndata
assert
"www"
not
in
g
.
edata
...
...
@@ -672,7 +672,7 @@ def test_local_scope(idtype):
@
parametrize_idtype
def
test_isolated_nodes
(
idtype
):
g
=
dgl
.
graph
(([
0
,
1
],
[
1
,
2
]),
num_nodes
=
5
,
idtype
=
idtype
,
device
=
F
.
ctx
())
assert
g
.
num
ber_of
_nodes
()
==
5
assert
g
.
num_nodes
()
==
5
g
=
dgl
.
heterograph
(
{(
"user"
,
"plays"
,
"game"
):
([
0
,
0
,
1
],
[
2
,
3
,
2
])},
...
...
@@ -681,8 +681,8 @@ def test_isolated_nodes(idtype):
device
=
F
.
ctx
(),
)
assert
g
.
idtype
==
idtype
assert
g
.
num
ber_of
_nodes
(
"user"
)
==
5
assert
g
.
num
ber_of
_nodes
(
"game"
)
==
7
assert
g
.
num_nodes
(
"user"
)
==
5
assert
g
.
num_nodes
(
"game"
)
==
7
# Test backward compatibility
g
=
dgl
.
heterograph
(
...
...
@@ -692,8 +692,8 @@ def test_isolated_nodes(idtype):
device
=
F
.
ctx
(),
)
assert
g
.
idtype
==
idtype
assert
g
.
num
ber_of
_nodes
(
"user"
)
==
5
assert
g
.
num
ber_of
_nodes
(
"game"
)
==
7
assert
g
.
num_nodes
(
"user"
)
==
5
assert
g
.
num_nodes
(
"game"
)
==
7
@
parametrize_idtype
...
...
tests/python/common/ops/test_edge_softmax.py
View file @
5b409bf7
...
...
@@ -28,7 +28,7 @@ feat_size = 2
@
parametrize_idtype
def
test_edge_softmax
(
g
,
norm_by
,
shp
,
idtype
):
g
=
g
.
astype
(
idtype
).
to
(
F
.
ctx
())
edata
=
F
.
tensor
(
np
.
random
.
rand
(
g
.
num
ber_of
_edges
(),
*
shp
))
edata
=
F
.
tensor
(
np
.
random
.
rand
(
g
.
num_edges
(),
*
shp
))
e1
=
F
.
attach_grad
(
F
.
clone
(
edata
))
with
F
.
record_grad
():
...
...
tests/python/common/ops/test_ops.py
View file @
5b409bf7
...
...
@@ -117,7 +117,7 @@ def test_spmm(idtype, g, shp, msg, reducer):
print
(
g
.
idtype
)
hu
=
F
.
tensor
(
np
.
random
.
rand
(
*
((
g
.
number_of_src_nodes
(),)
+
shp
[
0
]))
+
1
)
he
=
F
.
tensor
(
np
.
random
.
rand
(
*
((
g
.
num
ber_of
_edges
(),)
+
shp
[
1
]))
+
1
)
he
=
F
.
tensor
(
np
.
random
.
rand
(
*
((
g
.
num_edges
(),)
+
shp
[
1
]))
+
1
)
print
(
"u shape: {}, e shape: {}"
.
format
(
F
.
shape
(
hu
),
F
.
shape
(
he
)))
g
.
srcdata
[
"x"
]
=
F
.
attach_grad
(
F
.
clone
(
hu
))
...
...
@@ -130,7 +130,7 @@ def test_spmm(idtype, g, shp, msg, reducer):
v
=
gspmm
(
g
,
msg
,
reducer
,
u
,
e
)
if
reducer
in
[
"max"
,
"min"
]:
v
=
F
.
replace_inf_with_zero
(
v
)
if
g
.
num
ber_of
_edges
()
>
0
:
if
g
.
num_edges
()
>
0
:
F
.
backward
(
F
.
reduce_sum
(
v
))
if
msg
!=
"copy_rhs"
:
grad_u
=
F
.
grad
(
u
)
...
...
@@ -139,7 +139,7 @@ def test_spmm(idtype, g, shp, msg, reducer):
with
F
.
record_grad
():
g
.
update_all
(
udf_msg
[
msg
],
udf_reduce
[
reducer
])
if
g
.
num
ber_of
_edges
()
>
0
:
if
g
.
num_edges
()
>
0
:
v1
=
g
.
dstdata
[
"v"
]
assert
F
.
allclose
(
v
,
v1
)
print
(
"forward passed"
)
...
...
@@ -224,7 +224,7 @@ def test_sddmm(g, shp, lhs_target, rhs_target, msg, idtype):
if
lhs_target
==
rhs_target
:
return
g
=
g
.
astype
(
idtype
).
to
(
F
.
ctx
())
if
dgl
.
backend
.
backend_name
==
"mxnet"
and
g
.
num
ber_of
_edges
()
==
0
:
if
dgl
.
backend
.
backend_name
==
"mxnet"
and
g
.
num_edges
()
==
0
:
pytest
.
skip
()
# mxnet do not support zero shape tensor
print
(
g
)
print
(
g
.
idtype
)
...
...
@@ -232,14 +232,14 @@ def test_sddmm(g, shp, lhs_target, rhs_target, msg, idtype):
len_lhs
=
select
(
lhs_target
,
g
.
number_of_src_nodes
(),
g
.
num
ber_of
_edges
(),
g
.
num_edges
(),
g
.
number_of_dst_nodes
(),
)
lhs_shp
=
(
len_lhs
,)
+
shp
[
0
]
len_rhs
=
select
(
rhs_target
,
g
.
number_of_src_nodes
(),
g
.
num
ber_of
_edges
(),
g
.
num_edges
(),
g
.
number_of_dst_nodes
(),
)
rhs_shp
=
(
len_rhs
,)
+
shp
[
1
]
...
...
@@ -270,7 +270,7 @@ def test_sddmm(g, shp, lhs_target, rhs_target, msg, idtype):
with
F
.
record_grad
():
g
.
apply_edges
(
udf_apply_edges
[
msg_func
])
if
g
.
num
ber_of
_edges
()
>
0
:
if
g
.
num_edges
()
>
0
:
e1
=
g
.
edata
[
"m"
]
assert
F
.
allclose
(
e
,
e1
)
print
(
"forward passed"
)
...
...
tests/python/common/sampling/test_sampling.py
View file @
5b409bf7
...
...
@@ -562,7 +562,7 @@ def _test_sample_neighbors(hypersparse, prob):
subg
=
dgl
.
sampling
.
sample_neighbors
(
g
,
[
0
,
1
],
-
1
,
prob
=
p
,
replace
=
replace
)
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
u
,
v
=
subg
.
edges
()
u_ans
,
v_ans
,
e_ans
=
g
.
in_edges
([
0
,
1
],
form
=
"all"
)
if
p
is
not
None
:
...
...
@@ -579,8 +579,8 @@ def _test_sample_neighbors(hypersparse, prob):
subg
=
dgl
.
sampling
.
sample_neighbors
(
g
,
[
0
,
1
],
2
,
prob
=
p
,
replace
=
replace
)
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num
ber_of
_edges
()
==
4
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
assert
subg
.
num_edges
()
==
4
u
,
v
=
subg
.
edges
()
assert
set
(
F
.
asnumpy
(
F
.
unique
(
v
)))
==
{
0
,
1
}
assert
F
.
array_equal
(
...
...
@@ -603,7 +603,7 @@ def _test_sample_neighbors(hypersparse, prob):
subg
=
dgl
.
sampling
.
sample_neighbors
(
g
,
[
0
,
2
],
-
1
,
prob
=
p
,
replace
=
replace
)
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
u
,
v
=
subg
.
edges
()
u_ans
,
v_ans
,
e_ans
=
g
.
in_edges
([
0
,
2
],
form
=
"all"
)
if
p
is
not
None
:
...
...
@@ -620,9 +620,9 @@ def _test_sample_neighbors(hypersparse, prob):
subg
=
dgl
.
sampling
.
sample_neighbors
(
g
,
[
0
,
2
],
2
,
prob
=
p
,
replace
=
replace
)
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
num_edges
=
4
if
replace
else
3
assert
subg
.
num
ber_of
_edges
()
==
num_edges
assert
subg
.
num_edges
()
==
num_edges
u
,
v
=
subg
.
edges
()
assert
set
(
F
.
asnumpy
(
F
.
unique
(
v
)))
==
{
0
,
2
}
assert
F
.
array_equal
(
...
...
@@ -646,10 +646,10 @@ def _test_sample_neighbors(hypersparse, prob):
)
assert
len
(
subg
.
ntypes
)
==
3
assert
len
(
subg
.
etypes
)
==
4
assert
subg
[
"follow"
].
num
ber_of
_edges
()
==
6
if
p
is
None
else
4
assert
subg
[
"play"
].
num
ber_of
_edges
()
==
1
assert
subg
[
"liked-by"
].
num
ber_of
_edges
()
==
4
assert
subg
[
"flips"
].
num
ber_of
_edges
()
==
0
assert
subg
[
"follow"
].
num_edges
()
==
6
if
p
is
None
else
4
assert
subg
[
"play"
].
num_edges
()
==
1
assert
subg
[
"liked-by"
].
num_edges
()
==
4
assert
subg
[
"flips"
].
num_edges
()
==
0
for
i
in
range
(
10
):
subg
=
dgl
.
sampling
.
sample_neighbors
(
...
...
@@ -657,10 +657,10 @@ def _test_sample_neighbors(hypersparse, prob):
)
assert
len
(
subg
.
ntypes
)
==
3
assert
len
(
subg
.
etypes
)
==
4
assert
subg
[
"follow"
].
num
ber_of
_edges
()
==
4
assert
subg
[
"play"
].
num
ber_of
_edges
()
==
2
if
replace
else
1
assert
subg
[
"liked-by"
].
num
ber_of
_edges
()
==
4
if
replace
else
3
assert
subg
[
"flips"
].
num
ber_of
_edges
()
==
0
assert
subg
[
"follow"
].
num_edges
()
==
4
assert
subg
[
"play"
].
num_edges
()
==
2
if
replace
else
1
assert
subg
[
"liked-by"
].
num_edges
()
==
4
if
replace
else
3
assert
subg
[
"flips"
].
num_edges
()
==
0
_test3
(
prob
,
True
)
# w/ replacement, uniform
_test3
(
prob
,
False
)
# w/o replacement, uniform
...
...
@@ -675,10 +675,10 @@ def _test_sample_neighbors(hypersparse, prob):
)
assert
len
(
subg
.
ntypes
)
==
3
assert
len
(
subg
.
etypes
)
==
4
assert
subg
[
"follow"
].
num
ber_of
_edges
()
==
2
assert
subg
[
"play"
].
num
ber_of
_edges
()
==
2
assert
subg
[
"liked-by"
].
num
ber_of
_edges
()
==
0
assert
subg
[
"flips"
].
num
ber_of
_edges
()
==
4
assert
subg
[
"follow"
].
num_edges
()
==
2
assert
subg
[
"play"
].
num_edges
()
==
2
assert
subg
[
"liked-by"
].
num_edges
()
==
0
assert
subg
[
"flips"
].
num_edges
()
==
4
def
_test_sample_neighbors_outedge
(
hypersparse
):
...
...
@@ -688,7 +688,7 @@ def _test_sample_neighbors_outedge(hypersparse):
subg
=
dgl
.
sampling
.
sample_neighbors
(
g
,
[
0
,
1
],
-
1
,
prob
=
p
,
replace
=
replace
,
edge_dir
=
"out"
)
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
u
,
v
=
subg
.
edges
()
u_ans
,
v_ans
,
e_ans
=
g
.
out_edges
([
0
,
1
],
form
=
"all"
)
if
p
is
not
None
:
...
...
@@ -705,8 +705,8 @@ def _test_sample_neighbors_outedge(hypersparse):
subg
=
dgl
.
sampling
.
sample_neighbors
(
g
,
[
0
,
1
],
2
,
prob
=
p
,
replace
=
replace
,
edge_dir
=
"out"
)
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num
ber_of
_edges
()
==
4
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
assert
subg
.
num_edges
()
==
4
u
,
v
=
subg
.
edges
()
assert
set
(
F
.
asnumpy
(
F
.
unique
(
u
)))
==
{
0
,
1
}
assert
F
.
array_equal
(
...
...
@@ -731,7 +731,7 @@ def _test_sample_neighbors_outedge(hypersparse):
subg
=
dgl
.
sampling
.
sample_neighbors
(
g
,
[
0
,
2
],
-
1
,
prob
=
p
,
replace
=
replace
,
edge_dir
=
"out"
)
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
u
,
v
=
subg
.
edges
()
u_ans
,
v_ans
,
e_ans
=
g
.
out_edges
([
0
,
2
],
form
=
"all"
)
if
p
is
not
None
:
...
...
@@ -748,9 +748,9 @@ def _test_sample_neighbors_outedge(hypersparse):
subg
=
dgl
.
sampling
.
sample_neighbors
(
g
,
[
0
,
2
],
2
,
prob
=
p
,
replace
=
replace
,
edge_dir
=
"out"
)
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
num_edges
=
4
if
replace
else
3
assert
subg
.
num
ber_of
_edges
()
==
num_edges
assert
subg
.
num_edges
()
==
num_edges
u
,
v
=
subg
.
edges
()
assert
set
(
F
.
asnumpy
(
F
.
unique
(
u
)))
==
{
0
,
2
}
assert
F
.
array_equal
(
...
...
@@ -781,10 +781,10 @@ def _test_sample_neighbors_outedge(hypersparse):
)
assert
len
(
subg
.
ntypes
)
==
3
assert
len
(
subg
.
etypes
)
==
4
assert
subg
[
"follow"
].
num
ber_of
_edges
()
==
6
if
p
is
None
else
4
assert
subg
[
"play"
].
num
ber_of
_edges
()
==
1
assert
subg
[
"liked-by"
].
num
ber_of
_edges
()
==
4
assert
subg
[
"flips"
].
num
ber_of
_edges
()
==
0
assert
subg
[
"follow"
].
num_edges
()
==
6
if
p
is
None
else
4
assert
subg
[
"play"
].
num_edges
()
==
1
assert
subg
[
"liked-by"
].
num_edges
()
==
4
assert
subg
[
"flips"
].
num_edges
()
==
0
for
i
in
range
(
10
):
subg
=
dgl
.
sampling
.
sample_neighbors
(
...
...
@@ -797,10 +797,10 @@ def _test_sample_neighbors_outedge(hypersparse):
)
assert
len
(
subg
.
ntypes
)
==
3
assert
len
(
subg
.
etypes
)
==
4
assert
subg
[
"follow"
].
num
ber_of
_edges
()
==
4
assert
subg
[
"play"
].
num
ber_of
_edges
()
==
2
if
replace
else
1
assert
subg
[
"liked-by"
].
num
ber_of
_edges
()
==
4
if
replace
else
3
assert
subg
[
"flips"
].
num
ber_of
_edges
()
==
0
assert
subg
[
"follow"
].
num_edges
()
==
4
assert
subg
[
"play"
].
num_edges
()
==
2
if
replace
else
1
assert
subg
[
"liked-by"
].
num_edges
()
==
4
if
replace
else
3
assert
subg
[
"flips"
].
num_edges
()
==
0
_test3
(
None
,
True
)
# w/ replacement, uniform
_test3
(
None
,
False
)
# w/o replacement, uniform
...
...
@@ -813,7 +813,7 @@ def _test_sample_neighbors_topk(hypersparse):
def
_test1
():
subg
=
dgl
.
sampling
.
select_topk
(
g
,
-
1
,
"weight"
,
[
0
,
1
])
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
u
,
v
=
subg
.
edges
()
u_ans
,
v_ans
=
subg
.
in_edges
([
0
,
1
])
uv
=
set
(
zip
(
F
.
asnumpy
(
u
),
F
.
asnumpy
(
v
)))
...
...
@@ -821,8 +821,8 @@ def _test_sample_neighbors_topk(hypersparse):
assert
uv
==
uv_ans
subg
=
dgl
.
sampling
.
select_topk
(
g
,
2
,
"weight"
,
[
0
,
1
])
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num
ber_of
_edges
()
==
4
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
assert
subg
.
num_edges
()
==
4
u
,
v
=
subg
.
edges
()
edge_set
=
set
(
zip
(
list
(
F
.
asnumpy
(
u
)),
list
(
F
.
asnumpy
(
v
))))
assert
F
.
array_equal
(
g
.
edge_ids
(
u
,
v
),
subg
.
edata
[
dgl
.
EID
])
...
...
@@ -832,7 +832,7 @@ def _test_sample_neighbors_topk(hypersparse):
def
_test2
():
# k > #neighbors
subg
=
dgl
.
sampling
.
select_topk
(
g
,
-
1
,
"weight"
,
[
0
,
2
])
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
u
,
v
=
subg
.
edges
()
u_ans
,
v_ans
=
subg
.
in_edges
([
0
,
2
])
uv
=
set
(
zip
(
F
.
asnumpy
(
u
),
F
.
asnumpy
(
v
)))
...
...
@@ -840,8 +840,8 @@ def _test_sample_neighbors_topk(hypersparse):
assert
uv
==
uv_ans
subg
=
dgl
.
sampling
.
select_topk
(
g
,
2
,
"weight"
,
[
0
,
2
])
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num
ber_of
_edges
()
==
3
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
assert
subg
.
num_edges
()
==
3
u
,
v
=
subg
.
edges
()
assert
F
.
array_equal
(
g
.
edge_ids
(
u
,
v
),
subg
.
edata
[
dgl
.
EID
])
edge_set
=
set
(
zip
(
list
(
F
.
asnumpy
(
u
)),
list
(
F
.
asnumpy
(
v
))))
...
...
@@ -873,7 +873,7 @@ def _test_sample_neighbors_topk(hypersparse):
hg
[
"liked-by"
].
edge_ids
(
u
,
v
),
subg
[
"liked-by"
].
edata
[
dgl
.
EID
]
)
assert
edge_set
==
{(
2
,
0
),
(
2
,
1
),
(
1
,
0
)}
assert
subg
[
"flips"
].
num
ber_of
_edges
()
==
0
assert
subg
[
"flips"
].
num_edges
()
==
0
_test3
()
...
...
@@ -886,10 +886,10 @@ def _test_sample_neighbors_topk(hypersparse):
)
assert
len
(
subg
.
ntypes
)
==
3
assert
len
(
subg
.
etypes
)
==
4
assert
subg
[
"follow"
].
num
ber_of
_edges
()
==
2
assert
subg
[
"play"
].
num
ber_of
_edges
()
==
1
assert
subg
[
"liked-by"
].
num
ber_of
_edges
()
==
0
assert
subg
[
"flips"
].
num
ber_of
_edges
()
==
4
assert
subg
[
"follow"
].
num_edges
()
==
2
assert
subg
[
"play"
].
num_edges
()
==
1
assert
subg
[
"liked-by"
].
num_edges
()
==
0
assert
subg
[
"flips"
].
num_edges
()
==
4
def
_test_sample_neighbors_topk_outedge
(
hypersparse
):
...
...
@@ -897,7 +897,7 @@ def _test_sample_neighbors_topk_outedge(hypersparse):
def
_test1
():
subg
=
dgl
.
sampling
.
select_topk
(
g
,
-
1
,
"weight"
,
[
0
,
1
],
edge_dir
=
"out"
)
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
u
,
v
=
subg
.
edges
()
u_ans
,
v_ans
=
subg
.
out_edges
([
0
,
1
])
uv
=
set
(
zip
(
F
.
asnumpy
(
u
),
F
.
asnumpy
(
v
)))
...
...
@@ -905,8 +905,8 @@ def _test_sample_neighbors_topk_outedge(hypersparse):
assert
uv
==
uv_ans
subg
=
dgl
.
sampling
.
select_topk
(
g
,
2
,
"weight"
,
[
0
,
1
],
edge_dir
=
"out"
)
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num
ber_of
_edges
()
==
4
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
assert
subg
.
num_edges
()
==
4
u
,
v
=
subg
.
edges
()
edge_set
=
set
(
zip
(
list
(
F
.
asnumpy
(
u
)),
list
(
F
.
asnumpy
(
v
))))
assert
F
.
array_equal
(
g
.
edge_ids
(
u
,
v
),
subg
.
edata
[
dgl
.
EID
])
...
...
@@ -916,7 +916,7 @@ def _test_sample_neighbors_topk_outedge(hypersparse):
def
_test2
():
# k > #neighbors
subg
=
dgl
.
sampling
.
select_topk
(
g
,
-
1
,
"weight"
,
[
0
,
2
],
edge_dir
=
"out"
)
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
u
,
v
=
subg
.
edges
()
u_ans
,
v_ans
=
subg
.
out_edges
([
0
,
2
])
uv
=
set
(
zip
(
F
.
asnumpy
(
u
),
F
.
asnumpy
(
v
)))
...
...
@@ -924,8 +924,8 @@ def _test_sample_neighbors_topk_outedge(hypersparse):
assert
uv
==
uv_ans
subg
=
dgl
.
sampling
.
select_topk
(
g
,
2
,
"weight"
,
[
0
,
2
],
edge_dir
=
"out"
)
assert
subg
.
num
ber_of
_nodes
()
==
g
.
num
ber_of
_nodes
()
assert
subg
.
num
ber_of
_edges
()
==
3
assert
subg
.
num_nodes
()
==
g
.
num_nodes
()
assert
subg
.
num_edges
()
==
3
u
,
v
=
subg
.
edges
()
edge_set
=
set
(
zip
(
list
(
F
.
asnumpy
(
u
)),
list
(
F
.
asnumpy
(
v
))))
assert
F
.
array_equal
(
g
.
edge_ids
(
u
,
v
),
subg
.
edata
[
dgl
.
EID
])
...
...
@@ -957,7 +957,7 @@ def _test_sample_neighbors_topk_outedge(hypersparse):
hg
[
"liked-by"
].
edge_ids
(
u
,
v
),
subg
[
"liked-by"
].
edata
[
dgl
.
EID
]
)
assert
edge_set
==
{(
0
,
2
),
(
1
,
2
),
(
0
,
1
)}
assert
subg
[
"flips"
].
num
ber_of
_edges
()
==
0
assert
subg
[
"flips"
].
num_edges
()
==
0
_test3
()
...
...
@@ -1011,19 +1011,19 @@ def test_sample_neighbors_with_0deg():
sg
=
dgl
.
sampling
.
sample_neighbors
(
g
,
F
.
tensor
([
1
,
2
],
dtype
=
F
.
int64
),
2
,
edge_dir
=
"in"
,
replace
=
False
)
assert
sg
.
num
ber_of
_edges
()
==
0
assert
sg
.
num_edges
()
==
0
sg
=
dgl
.
sampling
.
sample_neighbors
(
g
,
F
.
tensor
([
1
,
2
],
dtype
=
F
.
int64
),
2
,
edge_dir
=
"in"
,
replace
=
True
)
assert
sg
.
num
ber_of
_edges
()
==
0
assert
sg
.
num_edges
()
==
0
sg
=
dgl
.
sampling
.
sample_neighbors
(
g
,
F
.
tensor
([
1
,
2
],
dtype
=
F
.
int64
),
2
,
edge_dir
=
"out"
,
replace
=
False
)
assert
sg
.
num
ber_of
_edges
()
==
0
assert
sg
.
num_edges
()
==
0
sg
=
dgl
.
sampling
.
sample_neighbors
(
g
,
F
.
tensor
([
1
,
2
],
dtype
=
F
.
int64
),
2
,
edge_dir
=
"out"
,
replace
=
True
)
assert
sg
.
num
ber_of
_edges
()
==
0
assert
sg
.
num_edges
()
==
0
def
create_test_graph
(
num_nodes
,
num_edges_per_node
,
bipartite
=
False
):
...
...
@@ -1118,7 +1118,7 @@ def test_sample_neighbors_biased_homogeneous():
check_num
(
subg
.
edges
()[
0
],
tag
)
u
,
v
=
subg
.
edges
()
edge_set
=
set
(
zip
(
list
(
F
.
asnumpy
(
u
)),
list
(
F
.
asnumpy
(
v
))))
assert
len
(
edge_set
)
==
subg
.
num
ber_of
_edges
()
assert
len
(
edge_set
)
==
subg
.
num_edges
()
# inedge / with replacement
for
_
in
range
(
5
):
...
...
@@ -1136,7 +1136,7 @@ def test_sample_neighbors_biased_homogeneous():
check_num
(
subg
.
edges
()[
1
],
tag
)
u
,
v
=
subg
.
edges
()
edge_set
=
set
(
zip
(
list
(
F
.
asnumpy
(
u
)),
list
(
F
.
asnumpy
(
v
))))
assert
len
(
edge_set
)
==
subg
.
num
ber_of
_edges
()
assert
len
(
edge_set
)
==
subg
.
num_edges
()
# outedge / with replacement
for
_
in
range
(
5
):
...
...
@@ -1175,7 +1175,7 @@ def test_sample_neighbors_biased_bipartite():
check_num
(
subg
.
edges
()[
0
],
tag
)
u
,
v
=
subg
.
edges
()
edge_set
=
set
(
zip
(
list
(
F
.
asnumpy
(
u
)),
list
(
F
.
asnumpy
(
v
))))
assert
len
(
edge_set
)
==
subg
.
num
ber_of
_edges
()
assert
len
(
edge_set
)
==
subg
.
num_edges
()
# inedge / with replacement
for
_
in
range
(
5
):
...
...
@@ -1194,7 +1194,7 @@ def test_sample_neighbors_biased_bipartite():
check_num
(
subg
.
edges
()[
1
],
tag
)
u
,
v
=
subg
.
edges
()
edge_set
=
set
(
zip
(
list
(
F
.
asnumpy
(
u
)),
list
(
F
.
asnumpy
(
v
))))
assert
len
(
edge_set
)
==
subg
.
num
ber_of
_edges
()
assert
len
(
edge_set
)
==
subg
.
num_edges
()
# outedge / with replacement
for
_
in
range
(
5
):
...
...
tests/python/common/test_batch-graph.py
View file @
5b409bf7
...
...
@@ -53,8 +53,8 @@ def test_batch_unbatch(idtype):
t2
=
tree2
(
idtype
)
bg
=
dgl
.
batch
([
t1
,
t2
])
assert
bg
.
num
ber_of
_nodes
()
==
10
assert
bg
.
num
ber_of
_edges
()
==
8
assert
bg
.
num_nodes
()
==
10
assert
bg
.
num_edges
()
==
8
assert
bg
.
batch_size
==
2
assert
F
.
allclose
(
bg
.
batch_num_nodes
(),
F
.
tensor
([
5
,
5
]))
assert
F
.
allclose
(
bg
.
batch_num_edges
(),
F
.
tensor
([
4
,
4
]))
...
...
@@ -72,8 +72,8 @@ def test_batch_unbatch1(idtype):
t2
=
tree2
(
idtype
)
b1
=
dgl
.
batch
([
t1
,
t2
])
b2
=
dgl
.
batch
([
t2
,
b1
])
assert
b2
.
num
ber_of
_nodes
()
==
15
assert
b2
.
num
ber_of
_edges
()
==
12
assert
b2
.
num_nodes
()
==
15
assert
b2
.
num_edges
()
==
12
assert
b2
.
batch_size
==
3
assert
F
.
allclose
(
b2
.
batch_num_nodes
(),
F
.
tensor
([
5
,
5
,
5
]))
assert
F
.
allclose
(
b2
.
batch_num_edges
(),
F
.
tensor
([
4
,
4
,
4
]))
...
...
@@ -98,10 +98,10 @@ def test_batch_unbatch_frame(idtype):
"""
t1
=
tree1
(
idtype
)
t2
=
tree2
(
idtype
)
N1
=
t1
.
num
ber_of
_nodes
()
E1
=
t1
.
num
ber_of
_edges
()
N2
=
t2
.
num
ber_of
_nodes
()
E2
=
t2
.
num
ber_of
_edges
()
N1
=
t1
.
num_nodes
()
E1
=
t1
.
num_edges
()
N2
=
t2
.
num_nodes
()
E2
=
t2
.
num_edges
()
D
=
10
t1
.
ndata
[
"h"
]
=
F
.
randn
((
N1
,
D
))
t1
.
edata
[
"h"
]
=
F
.
randn
((
E1
,
D
))
...
...
tests/python/common/test_batch-heterograph.py
View file @
5b409bf7
...
...
@@ -16,14 +16,14 @@ def check_equivalence_between_heterographs(
assert
g1
.
canonical_etypes
==
g2
.
canonical_etypes
for
nty
in
g1
.
ntypes
:
assert
g1
.
num
ber_of
_nodes
(
nty
)
==
g2
.
num
ber_of
_nodes
(
nty
)
assert
g1
.
num_nodes
(
nty
)
==
g2
.
num_nodes
(
nty
)
for
ety
in
g1
.
etypes
:
if
len
(
g1
.
_etype2canonical
[
ety
])
>
0
:
assert
g1
.
num
ber_of
_edges
(
ety
)
==
g2
.
num
ber_of
_edges
(
ety
)
assert
g1
.
num_edges
(
ety
)
==
g2
.
num_edges
(
ety
)
for
ety
in
g1
.
canonical_etypes
:
assert
g1
.
num
ber_of
_edges
(
ety
)
==
g2
.
num
ber_of
_edges
(
ety
)
assert
g1
.
num_edges
(
ety
)
==
g2
.
num_edges
(
ety
)
src1
,
dst1
,
eid1
=
g1
.
edges
(
etype
=
ety
,
form
=
"all"
)
src2
,
dst2
,
eid2
=
g2
.
edges
(
etype
=
ety
,
form
=
"all"
)
assert
F
.
allclose
(
src1
,
src2
)
...
...
@@ -32,7 +32,7 @@ def check_equivalence_between_heterographs(
if
node_attrs
is
not
None
:
for
nty
in
node_attrs
.
keys
():
if
g1
.
num
ber_of
_nodes
(
nty
)
==
0
:
if
g1
.
num_nodes
(
nty
)
==
0
:
continue
for
feat_name
in
node_attrs
[
nty
]:
assert
F
.
allclose
(
...
...
@@ -41,7 +41,7 @@ def check_equivalence_between_heterographs(
if
edge_attrs
is
not
None
:
for
ety
in
edge_attrs
.
keys
():
if
g1
.
num
ber_of
_edges
(
ety
)
==
0
:
if
g1
.
num_edges
(
ety
)
==
0
:
continue
for
feat_name
in
edge_attrs
[
ety
]:
assert
F
.
allclose
(
...
...
@@ -69,27 +69,27 @@ def test_topology(gs, idtype):
for
ntype
in
bg
.
ntypes
:
print
(
ntype
)
assert
F
.
asnumpy
(
bg
.
batch_num_nodes
(
ntype
)).
tolist
()
==
[
g1
.
num
ber_of
_nodes
(
ntype
),
g2
.
num
ber_of
_nodes
(
ntype
),
g1
.
num_nodes
(
ntype
),
g2
.
num_nodes
(
ntype
),
]
assert
bg
.
num
ber_of
_nodes
(
ntype
)
==
(
g1
.
num
ber_of
_nodes
(
ntype
)
+
g2
.
num
ber_of
_nodes
(
ntype
)
assert
bg
.
num_nodes
(
ntype
)
==
(
g1
.
num_nodes
(
ntype
)
+
g2
.
num_nodes
(
ntype
)
)
# Test number of edges
for
etype
in
bg
.
canonical_etypes
:
assert
F
.
asnumpy
(
bg
.
batch_num_edges
(
etype
)).
tolist
()
==
[
g1
.
num
ber_of
_edges
(
etype
),
g2
.
num
ber_of
_edges
(
etype
),
g1
.
num_edges
(
etype
),
g2
.
num_edges
(
etype
),
]
assert
bg
.
num
ber_of
_edges
(
etype
)
==
(
g1
.
num
ber_of
_edges
(
etype
)
+
g2
.
num
ber_of
_edges
(
etype
)
assert
bg
.
num_edges
(
etype
)
==
(
g1
.
num_edges
(
etype
)
+
g2
.
num_edges
(
etype
)
)
# Test relabeled nodes
for
ntype
in
bg
.
ntypes
:
assert
list
(
F
.
asnumpy
(
bg
.
nodes
(
ntype
)))
==
list
(
range
(
bg
.
num
ber_of
_nodes
(
ntype
))
range
(
bg
.
num_nodes
(
ntype
))
)
# Test relabeled edges
...
...
@@ -160,33 +160,29 @@ def test_batching_batched(idtype):
# Test number of nodes
for
ntype
in
bg2
.
ntypes
:
assert
F
.
asnumpy
(
bg2
.
batch_num_nodes
(
ntype
)).
tolist
()
==
[
g1
.
num
ber_of
_nodes
(
ntype
),
g2
.
num
ber_of
_nodes
(
ntype
),
g3
.
num
ber_of
_nodes
(
ntype
),
g1
.
num_nodes
(
ntype
),
g2
.
num_nodes
(
ntype
),
g3
.
num_nodes
(
ntype
),
]
assert
bg2
.
number_of_nodes
(
ntype
)
==
(
g1
.
number_of_nodes
(
ntype
)
+
g2
.
number_of_nodes
(
ntype
)
+
g3
.
number_of_nodes
(
ntype
)
assert
bg2
.
num_nodes
(
ntype
)
==
(
g1
.
num_nodes
(
ntype
)
+
g2
.
num_nodes
(
ntype
)
+
g3
.
num_nodes
(
ntype
)
)
# Test number of edges
for
etype
in
bg2
.
canonical_etypes
:
assert
F
.
asnumpy
(
bg2
.
batch_num_edges
(
etype
)).
tolist
()
==
[
g1
.
num
ber_of
_edges
(
etype
),
g2
.
num
ber_of
_edges
(
etype
),
g3
.
num
ber_of
_edges
(
etype
),
g1
.
num_edges
(
etype
),
g2
.
num_edges
(
etype
),
g3
.
num_edges
(
etype
),
]
assert
bg2
.
number_of_edges
(
etype
)
==
(
g1
.
number_of_edges
(
etype
)
+
g2
.
number_of_edges
(
etype
)
+
g3
.
number_of_edges
(
etype
)
assert
bg2
.
num_edges
(
etype
)
==
(
g1
.
num_edges
(
etype
)
+
g2
.
num_edges
(
etype
)
+
g3
.
num_edges
(
etype
)
)
# Test relabeled nodes
for
ntype
in
bg2
.
ntypes
:
assert
list
(
F
.
asnumpy
(
bg2
.
nodes
(
ntype
)))
==
list
(
range
(
bg2
.
num
ber_of
_nodes
(
ntype
))
range
(
bg2
.
num_nodes
(
ntype
))
)
# Test relabeled edges
...
...
@@ -374,15 +370,15 @@ def test_empty_relation(idtype):
# Test number of nodes
for
ntype
in
bg
.
ntypes
:
assert
F
.
asnumpy
(
bg
.
batch_num_nodes
(
ntype
)).
tolist
()
==
[
g1
.
num
ber_of
_nodes
(
ntype
),
g2
.
num
ber_of
_nodes
(
ntype
),
g1
.
num_nodes
(
ntype
),
g2
.
num_nodes
(
ntype
),
]
# Test number of edges
for
etype
in
bg
.
canonical_etypes
:
assert
F
.
asnumpy
(
bg
.
batch_num_edges
(
etype
)).
tolist
()
==
[
g1
.
num
ber_of
_edges
(
etype
),
g2
.
num
ber_of
_edges
(
etype
),
g1
.
num_edges
(
etype
),
g2
.
num_edges
(
etype
),
]
# Test features
...
...
tests/python/common/test_generators.py
View file @
5b409bf7
...
...
@@ -11,8 +11,8 @@ import numpy as np
)
def
test_rand_graph
():
g
=
dgl
.
rand_graph
(
10000
,
100000
)
assert
g
.
num
ber_of
_nodes
()
==
10000
assert
g
.
num
ber_of
_edges
()
==
100000
assert
g
.
num_nodes
()
==
10000
assert
g
.
num_edges
()
==
100000
# test random seed
dgl
.
random
.
seed
(
42
)
g1
=
dgl
.
rand_graph
(
100
,
30
)
...
...
tests/python/common/test_heterograph-kernel.py
View file @
5b409bf7
...
...
@@ -44,8 +44,8 @@ def generate_feature(g, broadcast="none", binary_op="none"):
'e', 'v', 'none'
"""
np
.
random
.
seed
(
31
)
nv
=
g
.
num
ber_of
_nodes
()
ne
=
g
.
num
ber_of
_edges
()
nv
=
g
.
num_nodes
()
ne
=
g
.
num_edges
()
if
binary_op
==
"dot"
:
if
broadcast
==
"e"
:
u
=
F
.
tensor
(
np
.
random
.
uniform
(
-
1
,
1
,
(
nv
,
D1
,
D2
,
D3
,
D4
)))
...
...
@@ -401,7 +401,7 @@ def test_all_binary_builtins():
@
pytest
.
mark
.
parametrize
(
"g"
,
get_cases
([
"homo-zero-degree"
]))
def
test_mean_zero_degree
(
g
,
idtype
):
g
=
g
.
astype
(
idtype
).
to
(
F
.
ctx
())
g
.
ndata
[
"h"
]
=
F
.
ones
((
g
.
num
ber_of
_nodes
(),
3
))
g
.
ndata
[
"h"
]
=
F
.
ones
((
g
.
num_nodes
(),
3
))
g
.
update_all
(
fn
.
copy_u
(
"h"
,
"m"
),
fn
.
mean
(
"m"
,
"x"
))
deg
=
F
.
asnumpy
(
g
.
in_degrees
())
v
=
F
.
tensor
(
np
.
where
(
deg
==
0
)[
0
])
...
...
tests/python/common/test_heterograph-misc.py
View file @
5b409bf7
...
...
@@ -67,8 +67,8 @@ def gen_from_data(data, readonly, sort):
def
test_query
():
def
_test_one
(
g
):
assert
g
.
num
ber_of
_nodes
()
==
10
assert
g
.
num
ber_of
_edges
()
==
20
assert
g
.
num_nodes
()
==
10
assert
g
.
num_edges
()
==
20
for
i
in
range
(
10
):
assert
g
.
has_nodes
(
i
)
...
...
@@ -158,8 +158,8 @@ def test_query():
_test_one
(
g
)
def
_test_csr_one
(
g
):
assert
g
.
num
ber_of
_nodes
()
==
10
assert
g
.
num
ber_of
_edges
()
==
20
assert
g
.
num_nodes
()
==
10
assert
g
.
num_edges
()
==
20
for
i
in
range
(
10
):
assert
g
.
has_nodes
(
i
)
...
...
tests/python/common/test_heterograph-pickle.py
View file @
5b409bf7
...
...
@@ -21,7 +21,7 @@ from utils import (
def
_assert_is_identical_nodeflow
(
nf1
,
nf2
):
assert
nf1
.
num
ber_of
_nodes
()
==
nf2
.
num
ber_of
_nodes
()
assert
nf1
.
num_nodes
()
==
nf2
.
num_nodes
()
src
,
dst
=
nf1
.
all_edges
()
src2
,
dst2
=
nf2
.
all_edges
()
assert
F
.
array_equal
(
src
,
src2
)
...
...
@@ -96,7 +96,7 @@ def test_pickling_graph_index():
gi2
=
_reconstruct_pickle
(
gi
)
assert
gi2
.
num
ber_of
_nodes
()
==
gi
.
num
ber_of
_nodes
()
assert
gi2
.
num_nodes
()
==
gi
.
num_nodes
()
src_idx2
,
dst_idx2
,
_
=
gi2
.
edges
()
assert
F
.
array_equal
(
src_idx
.
tousertensor
(),
src_idx2
.
tousertensor
())
assert
F
.
array_equal
(
dst_idx
.
tousertensor
(),
dst_idx2
.
tousertensor
())
...
...
tests/python/common/test_heterograph-remove.py
View file @
5b409bf7
...
...
@@ -11,26 +11,26 @@ def test_node_removal(idtype):
g
=
g
.
astype
(
idtype
).
to
(
F
.
ctx
())
g
.
add_nodes
(
10
)
g
.
add_edges
(
0
,
0
)
assert
g
.
num
ber_of
_nodes
()
==
10
assert
g
.
num_nodes
()
==
10
g
.
ndata
[
"id"
]
=
F
.
arange
(
0
,
10
)
# remove nodes
g
.
remove_nodes
(
range
(
4
,
7
))
assert
g
.
num
ber_of
_nodes
()
==
7
assert
g
.
num_nodes
()
==
7
assert
F
.
array_equal
(
g
.
ndata
[
"id"
],
F
.
tensor
([
0
,
1
,
2
,
3
,
7
,
8
,
9
]))
assert
dgl
.
NID
not
in
g
.
ndata
assert
dgl
.
EID
not
in
g
.
edata
# add nodes
g
.
add_nodes
(
3
)
assert
g
.
num
ber_of
_nodes
()
==
10
assert
g
.
num_nodes
()
==
10
assert
F
.
array_equal
(
g
.
ndata
[
"id"
],
F
.
tensor
([
0
,
1
,
2
,
3
,
7
,
8
,
9
,
0
,
0
,
0
])
)
# remove nodes
g
.
remove_nodes
(
range
(
1
,
4
),
store_ids
=
True
)
assert
g
.
num
ber_of
_nodes
()
==
7
assert
g
.
num_nodes
()
==
7
assert
F
.
array_equal
(
g
.
ndata
[
"id"
],
F
.
tensor
([
0
,
7
,
8
,
9
,
0
,
0
,
0
]))
assert
dgl
.
NID
in
g
.
ndata
assert
dgl
.
EID
in
g
.
edata
...
...
@@ -44,25 +44,25 @@ def test_multigraph_node_removal(idtype):
for
i
in
range
(
5
):
g
.
add_edges
(
i
,
i
)
g
.
add_edges
(
i
,
i
)
assert
g
.
num
ber_of
_nodes
()
==
5
assert
g
.
num
ber_of
_edges
()
==
10
assert
g
.
num_nodes
()
==
5
assert
g
.
num_edges
()
==
10
# remove nodes
g
.
remove_nodes
([
2
,
3
])
assert
g
.
num
ber_of
_nodes
()
==
3
assert
g
.
num
ber_of
_edges
()
==
6
assert
g
.
num_nodes
()
==
3
assert
g
.
num_edges
()
==
6
# add nodes
g
.
add_nodes
(
1
)
g
.
add_edges
(
1
,
1
)
g
.
add_edges
(
1
,
1
)
assert
g
.
num
ber_of
_nodes
()
==
4
assert
g
.
num
ber_of
_edges
()
==
8
assert
g
.
num_nodes
()
==
4
assert
g
.
num_edges
()
==
8
# remove nodes
g
.
remove_nodes
([
0
])
assert
g
.
num
ber_of
_nodes
()
==
3
assert
g
.
num
ber_of
_edges
()
==
6
assert
g
.
num_nodes
()
==
3
assert
g
.
num_edges
()
==
6
@
parametrize_idtype
...
...
@@ -73,24 +73,24 @@ def test_multigraph_edge_removal(idtype):
for
i
in
range
(
5
):
g
.
add_edges
(
i
,
i
)
g
.
add_edges
(
i
,
i
)
assert
g
.
num
ber_of
_nodes
()
==
5
assert
g
.
num
ber_of
_edges
()
==
10
assert
g
.
num_nodes
()
==
5
assert
g
.
num_edges
()
==
10
# remove edges
g
.
remove_edges
([
2
,
3
])
assert
g
.
num
ber_of
_nodes
()
==
5
assert
g
.
num
ber_of
_edges
()
==
8
assert
g
.
num_nodes
()
==
5
assert
g
.
num_edges
()
==
8
# add edges
g
.
add_edges
(
1
,
1
)
g
.
add_edges
(
1
,
1
)
assert
g
.
num
ber_of
_nodes
()
==
5
assert
g
.
num
ber_of
_edges
()
==
10
assert
g
.
num_nodes
()
==
5
assert
g
.
num_edges
()
==
10
# remove edges
g
.
remove_edges
([
0
,
1
])
assert
g
.
num
ber_of
_nodes
()
==
5
assert
g
.
num
ber_of
_edges
()
==
8
assert
g
.
num_nodes
()
==
5
assert
g
.
num_edges
()
==
8
@
parametrize_idtype
...
...
@@ -105,8 +105,8 @@ def test_edge_removal(idtype):
# remove edges
g
.
remove_edges
(
range
(
13
,
20
))
assert
g
.
num
ber_of
_nodes
()
==
5
assert
g
.
num
ber_of
_edges
()
==
18
assert
g
.
num_nodes
()
==
5
assert
g
.
num_edges
()
==
18
assert
F
.
array_equal
(
g
.
edata
[
"id"
],
F
.
tensor
(
list
(
range
(
13
))
+
list
(
range
(
20
,
25
)))
)
...
...
@@ -115,16 +115,16 @@ def test_edge_removal(idtype):
# add edges
g
.
add_edges
(
3
,
3
)
assert
g
.
num
ber_of
_nodes
()
==
5
assert
g
.
num
ber_of
_edges
()
==
19
assert
g
.
num_nodes
()
==
5
assert
g
.
num_edges
()
==
19
assert
F
.
array_equal
(
g
.
edata
[
"id"
],
F
.
tensor
(
list
(
range
(
13
))
+
list
(
range
(
20
,
25
))
+
[
0
])
)
# remove edges
g
.
remove_edges
(
range
(
2
,
10
),
store_ids
=
True
)
assert
g
.
num
ber_of
_nodes
()
==
5
assert
g
.
num
ber_of
_edges
()
==
11
assert
g
.
num_nodes
()
==
5
assert
g
.
num_edges
()
==
11
assert
F
.
array_equal
(
g
.
edata
[
"id"
],
F
.
tensor
([
0
,
1
,
10
,
11
,
12
,
20
,
21
,
22
,
23
,
24
,
0
])
)
...
...
@@ -140,35 +140,35 @@ def test_node_and_edge_removal(idtype):
for
j
in
range
(
10
):
g
.
add_edges
(
i
,
j
)
g
.
edata
[
"id"
]
=
F
.
arange
(
0
,
100
)
assert
g
.
num
ber_of
_nodes
()
==
10
assert
g
.
num
ber_of
_edges
()
==
100
assert
g
.
num_nodes
()
==
10
assert
g
.
num_edges
()
==
100
# remove nodes
g
.
remove_nodes
([
2
,
4
])
assert
g
.
num
ber_of
_nodes
()
==
8
assert
g
.
num
ber_of
_edges
()
==
64
assert
g
.
num_nodes
()
==
8
assert
g
.
num_edges
()
==
64
# remove edges
g
.
remove_edges
(
range
(
10
,
20
))
assert
g
.
num
ber_of
_nodes
()
==
8
assert
g
.
num
ber_of
_edges
()
==
54
assert
g
.
num_nodes
()
==
8
assert
g
.
num_edges
()
==
54
# add nodes
g
.
add_nodes
(
2
)
assert
g
.
num
ber_of
_nodes
()
==
10
assert
g
.
num
ber_of
_edges
()
==
54
assert
g
.
num_nodes
()
==
10
assert
g
.
num_edges
()
==
54
# add edges
for
i
in
range
(
8
,
10
):
for
j
in
range
(
8
,
10
):
g
.
add_edges
(
i
,
j
)
assert
g
.
num
ber_of
_nodes
()
==
10
assert
g
.
num
ber_of
_edges
()
==
58
assert
g
.
num_nodes
()
==
10
assert
g
.
num_edges
()
==
58
# remove edges
g
.
remove_edges
(
range
(
10
,
20
))
assert
g
.
num
ber_of
_nodes
()
==
10
assert
g
.
num
ber_of
_edges
()
==
48
assert
g
.
num_nodes
()
==
10
assert
g
.
num_edges
()
==
48
@
parametrize_idtype
...
...
@@ -209,8 +209,8 @@ def test_issue1287(idtype):
g
.
add_nodes
(
5
)
g
.
add_edges
([
0
,
2
,
3
,
1
,
1
],
[
1
,
0
,
3
,
1
,
0
])
g
.
remove_nodes
([
0
,
1
])
g
.
ndata
[
"h"
]
=
F
.
randn
((
g
.
num
ber_of
_nodes
(),
3
))
g
.
edata
[
"h"
]
=
F
.
randn
((
g
.
num
ber_of
_edges
(),
2
))
g
.
ndata
[
"h"
]
=
F
.
randn
((
g
.
num_nodes
(),
3
))
g
.
edata
[
"h"
]
=
F
.
randn
((
g
.
num_edges
(),
2
))
# remove edges
g
=
dgl
.
DGLGraph
()
...
...
@@ -219,8 +219,8 @@ def test_issue1287(idtype):
g
.
add_edges
([
0
,
2
,
3
,
1
,
1
],
[
1
,
0
,
3
,
1
,
0
])
g
.
remove_edges
([
0
,
1
])
g
=
g
.
to
(
F
.
ctx
())
g
.
ndata
[
"h"
]
=
F
.
randn
((
g
.
num
ber_of
_nodes
(),
3
))
g
.
edata
[
"h"
]
=
F
.
randn
((
g
.
num
ber_of
_edges
(),
2
))
g
.
ndata
[
"h"
]
=
F
.
randn
((
g
.
num_nodes
(),
3
))
g
.
edata
[
"h"
]
=
F
.
randn
((
g
.
num_edges
(),
2
))
if
__name__
==
"__main__"
:
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment