TypeError: 'list' object is not callable

#1

Hi,

I have been using dgl for days and it’s really a good tool for me.
But I meet a problem about using message_func. The examples you provide always use update_all() with the buildin functions and DGL works well under this situation. However, When I decompose update_all() into send() and recv() and still use the buildin message functions, DGL throws an error in send():

TypeError: 'list' object is not callable

But when I use a UDF instead of the buildin message functions, DGL just works well.
How can that be? Is there any solutions to avoid the error?

0 Likes

#2

DGL requires using send and recv with builtin function such as fn.sum() together to avoid extra copy cost and do the built-in optimization. You can use send_and_recv to do it. Separate send and recv will be executed independently, which cannot be optimized by builtin functions.

However, the error message here seems unfriendly to user, we will try to improve this.

0 Likes

#3

OK, I see. Thanks for your quick reply!

0 Likes

#4

Hi @flowerbeach, this is a bug that have been fixed in this PR. Sorry for the inconvenience. If you could build from source, it should work. We are also thinking about a patch release for these fixes.

0 Likes