Difference between send(), recv() and update_all()?

Hello Everyone. I am a PhD student learning DGL. I have one question regarding message passing. what is the difference between send(), recv() and update_all()? and also pros and cons?

I would also wanted to learn their internal working and implementation, so if anyone can refer me to the detail documents explaining their internal working?

Hi, thanks for your interest. You can check out the general design of DGL in our paper [1909.01315] Deep Graph Library: A Graph-Centric, Highly-Performant Package for Graph Neural Networks. The core insight is that all message passing GNNs can be implemented by two operators G-SpMM and G-SDDMM, which corresponds to update_all() and apply_edges(). Other message passing APIs are built upon them. For example:

  • send() is the same as apply_edges that generate messages as edge data.
  • recv() is equal to update_all() with copy_e as the message function.
1 Like

Thank you for your response. It is helpful and i am on it now.