Dear DGL community,
I am experiencing weird behaviour when creating heterograph using dgl-cuda10.2. I created a graph that (if not mistaken) should not be unibipartite. Yet, DGL interprets the graph as unibipartite. The hassle is that the srctypes of the graph do not contain all the source nodes, preventing me from using multi_update_all.
Code:
G = dgl.heterograph(edges)
for nt in G.ntypes:
print(nt, G.number_of_nodes(nt))
for et in G.canonical_etypes:
print(et, G.number_of_edges(et))
print(G.is_unibipartite)
print(G.srctypes)
Output:
a_id 310402
e_id 471745
e_type 3
e_year 253
i_id 24231
('e_id', 'involving', 'a_id') 3823709
('e_type', 'type_of', 'e_id') 471745
('e_year', 'year_of', 'e_id') 471745
('i_id', 'hosting', 'e_id') 471745
True
['e_type', 'e_year', 'i_id']
['a_id', 'e_id']
It seems to me that e_id should be listed among the srctypes.
Interestingly, when running the same code using the CPU build, DGL indicates the graph as not being unibipartite and all the nodes are among the srctypes.
Any suggestions?