# Release Notes ## MindSpore Graph Learning 0.2.0 Release Notes ### 主要特性及增强 - [STABLE] 新增了基于CSR稀疏算子的加速方案,涵盖了从CSR数据格式转换、CSR图填充到CSR消息聚合等方面。 - [STABLE] 提供了基于CSR稀疏算子的APPNP、GCN、GAT、GATv2、MPNN的训练示例。 ### API变更 #### 新增/增强API ##### Python APIs - 新增graph接口 `mindspore_gl.graph.batch_graph_csr_data` 。 - 新增graph接口 `mindspore_gl.graph.graph_csr_data` 。 - 新增graph接口 `mindspore_gl.graph.PadCsrEdge` 。 - 新增graph接口 `mindspore_gl.graph.sampling_csr_data` 。 - 新增nn接口 `mindspore_gl.nn.GNNCell.sparse_compute` 。 #### 非兼容性变更 ##### Python APIs - `mindspore_gl.GraphField` 新增参数 `indices` 、 `indptr` 、 `indices_backward` 、 `indptr_backward` 、 `csr` ,设置是否使用稀疏模式。[(!214)](https://gitee.com/mindspore/graphlearning/pulls/214)
原接口 v0.2.0
  n_nodes = 7
  n_edges = 8
  src_idx = ms.Tensor([0, 2, 2, 3, 4, 5, 5, 6], ms.int32)
  dst_idx = ms.Tensor([1, 0, 1, 5, 3, 4, 6, 4], ms.int32)
  graph_field = GraphField(src_idx, dst_idx, n_nodes, n_edges)
  
  n_nodes = 7
  n_edges = 8
  indices = ms.Tensor([2, 3, 5, 6, 3, 4, 0, 6], ms.int32)
  indptr = ms.Tensor([0, 2, 4, 5, 6, 7, 8, 8], ms.int32)
  indices_backward = ms.Tensor([4, 0, 0, 2, 3, 1, 1, 5], ms.int32)
  indptr_backward = ms.Tensor([0, 1, 1, 2, 4, 5, 6, 8], ms.int32)
  graph_field = GraphField
    (n_nodes=n_nodes, n_edges=n_edges, indices=indices, indptr=indptr,
  ...
     indices_backward=indices_backward, indptr_backward=indptr_backward, csr=True)
  
- `mindspore_gl.BatchedGraphField` 新增参数 `indices` 、 `indptr` 、 `indices_backward` 、 `indptr_backward` 、 `csr` ,设置是否使用稀疏模式。[(!214)](https://gitee.com/mindspore/graphlearning/pulls/214)
原接口 v0.2.0
  n_nodes = 9
  n_edges = 11
  src_idx = ms.Tensor([0, 2, 2, 3, 4, 5, 5, 6, 8, 8, 8], ms.int32)
  dst_idx = ms.Tensor([1, 0, 1, 5, 3, 4, 6, 4, 8, 8, 8], ms.int32)
  ver_subgraph_idx = ms.Tensor([0, 0, 0, 1, 1, 1, 1, 2, 2], ms.int32)
  edge_subgraph_idx = ms.Tensor([0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2], ms.int32)
  graph_mask = ms.Tensor([1, 1, 0], ms.int32)
  graph_field = BatchedGraphField(src_idx, dst_idx, n_nodes, n_edges, ver_subgraph_idx,
  ...                             edge_subgraph_idx, graph_mask)
  
  n_nodes = 9
  n_edges = 11
  indices = ms.Tensor([0, 3, 4, 6, 8, 4, 5, 1, 8], ms.int32)
  indptr = ms.Tensor([0, 1, 3, 5, 6, 7, 8, 9, 9, 9], ms.int32)
  indices_backward = ms.Tensor([0, 5, 1, 1, 3, 4, 2, 2, 6], ms.int32)
  indptr_backward = ms.Tensor([0, 1, 2, 2, 3, 5, 6, 7, 7, 9], ms.int32)
  node_map_idx = ms.Tensor([0, 0, 0, 1, 1, 1, 1], ms.int32)
  edge_map_idx = ms.Tensor([0, 0, 0, 1, 1, 1, 1, 1], ms.int32)
  graph_mask = ms.Tensor([1, 0], ms.int32)
  graph_field = BatchedGraphField
    (indices=indices, indptr=indptr, indices_backward=indices_backward,
     indptr_backward=indptr_backward, csr=True, n_nodes=n_nodes,
  ...
  n_edges=n_edges, ver_subgraph_idx=node_map_idx,
  ...
  edge_subgraph_idx=edge_map_idx, graph_mask=graph_mask)
  
### 贡献者 感谢以下人员做出的贡献: James Cheng, yufan, wuyidi, yinpeiqi, liuxiulong, wangqirui, chengbin, luolan, zhengzuohe, lujiale, liyang, huenrui, baocong, zhangqinghua, wangyushan, zhushujing, zhongjicheng, gaoxiang, yushunmin, fengxun, gongyue, wangyixuan, zuochuanyong, yuhan, wangying, chujinjin, xiezuoquan, yeyuhang, xuhn1997. 欢迎以任何形式对项目提供贡献!