Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

改进建议 #397

Open
9 of 21 tasks
wiryls opened this issue Nov 3, 2023 · 0 comments
Open
9 of 21 tasks

改进建议 #397

wiryls opened this issue Nov 3, 2023 · 0 comments
Labels
DIPU DIPU related

Comments

@wiryls
Copy link
Collaborator

wiryls commented Nov 3, 2023

最近在阅读介绍及代码,有时会注意到一些需要修复的问题。
考虑到为每个问题开 issue 可能导致刷屏,这里单独使用一个 issue 记录阅读该仓库时发现的问题。

备注:下列建议将使用不同修饰词,其中“考虑”指低优先级的建议,“应该”则是期望慎重考虑的建议。

文档

相关 PR:

文档风格及 Lint 相关

  • 考虑使用 markdown lint 等工具检查格式,目前的 markdown 文档风格较为混乱
  • 考虑将 markdown lint 加入到 CI\CD 流程
  • 考虑在中文和英文单词之间加入空格
  • 考虑在下列情况使用 markdown 的多级有序列表:
    #### 1. Runtime (``csrc/dipu/runtime``):
    *Runtime* 主要有以下几个部分:
    ##### 1)*Core & Distributed*
    PyTorch 把一些基本的设备层接口放到了一个叫 ``c10`` 的目录下,不同的设备接入者需要实现该接口来接入 PyTorch。
    详见[参考文档](http://blog.ezyang.com/2019/05/pytorch-internals/) 里对于``c10`` 的介绍。
    DIPU 的这一部分主要就是对 PyTorch 的``c10````c10d``相关接口的实现,把设备无关的部分抽象出一组运行时基类。目前包含 ``DIPUAllocator````DIPUGenerator````DIPUStream/Event/Guard````ProcessGroupDICL`` 等。这些类会把设备相关的请求代理到 *device* 部分定义的一组设备接口。另外用户也可以继承上述基类,实现并注册自己的子类,实现设备特化的某些行为( 这个能力的支持目前尚待完善)。
    ##### 2)*Device*:
    包含 ``deviceapis.h````diclapis.h`` 两个接口文件。主要是设备 ``memory/stream/event/communcation`` 相关的接口函数(这部分接口后续有考虑挪到 DIOPI 中,成为 DIOPI 的 *Device* 接口,见上图)。
    #### 2. Aten (``csrc/dipu/aten``):
    (1) 在 GitHub 的 Pull request 界面创建拉取请求
    (2) 根据指引修改 PR 描述,以便于其他开发者更好地理解你的修改
  • 考虑在 CI/CD 流程中加入 commit message 的 lint 工具 (例如 commitlint)
    3. 每次 commit 时需要提供清晰且有意义 commit 信息

文档错误相关

  • 应该使用相对路径 (例如 ./QuickStart.md) 而非绝对路径,目前全部分支的下列链接都指向 404 页面:
    ## Learn More
    * [使用/设备接入教学](https://github.com/DeepLink-org/dipu/blob/main/QuickStart.md)
    * [常见问题](https://github.com/DeepLink-org/dipu/blob/main/FAQ.md)
    * [开发者指南](https://github.com/DeepLink-org/dipu/blob/main/Contributors.md)
  • 应该是 communicatorimpl.cpp 而非 communiatorimpl.cpp (漏掉了 c)
    - 如果有多机多卡训练的需求,需要根据`dipu/torch_dipu/csrc_dipu/runtime/device/diclapis.h`中的声明,创建`communiatorimpl.cpp`去根据硬件自己底层的*runtime*接口实现对应的函数
  • 此处应该为 main 分支而非 master
    #### 2. 创建开发分支
    我们需要基于 master 创建开发分支,建议的分支命名规则为 `username/pr_name`
    ```shell
    git checkout -b xxx/refactor_contributing_doc
    ```
    在后续的开发中,如果本地仓库的 master 分支落后于 upstream 的 master 分支,我们需要先拉取 upstream 的代码进行同步,再执行上面的命令
    ```shell
    git pull upstream master
    ```
    ```shell
    git fetch --all --prune
    git rebase upstream/master
    ```
    或者
    ```shell
    git fetch --all --prune
    git merge upstream/master
    ```

文档其它事项

  • 考虑在 Contributors.md 加入关于 GitHub flow 相关介绍

代码

CMake 脚本相关

参考 #479

代码风格相关

代码错误相关

To be continued.

@wiryls wiryls changed the title 一些改进建议 改进建议 Nov 6, 2023
@wiryls wiryls added the DIPU DIPU related label Nov 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
DIPU DIPU related
Projects
None yet
Development

No branches or pull requests

1 participant