apache / tvm

Open deep learning compiler stack for cpu, gpu and specialized accelerators
https://tvm.apache.org/
Apache License 2.0
11.67k stars 3.45k forks source link

[SME][TOPI] Add conv2d NHWC SME fp32 schedule #17003

Closed Anndrey24 closed 4 months ago

Anndrey24 commented 4 months ago

This commit adds a scalable arm_cpu conv2d NHWC schedule for fp32 which generates SME instructions by using the tensor intrinsics introduced in #16921.

Alongside the SME schedule, the logic of the TE schedule schedule_conv2d_gemm_native() for both non-scalable and scalable vector implementations has also been translated into the new TIR schedule. This means that the TE compute definition compute_conv2d_NHWC_hybrid() is now compatible with both the original TE schedules (e.g. schedule_conv2d_NHWC_hybrid()) and the newly introduced TIR schedule schedule_conv2d_NHWC_hybrid_TIR(). The corresponding TOPI test has been extended to reflect that.

cc @ekalda @lhutton1

Anndrey24 commented 4 months ago

@tvm-bot rerun

github-actions[bot] commented 4 months ago

Failed to re-run CI in https://github.com/apache/tvm/actions/runs/9147913719

``` Traceback (most recent call last): File "ci/scripts/github/github_tvmbot.py", line 595, in comment_failure raise item File "ci/scripts/github/github_tvmbot.py", line 701, in run pr.rerun_jenkins_ci() File "ci/scripts/github/github_tvmbot.py", line 554, in rerun_jenkins_ci post(url, auth=("tvm-bot", TVM_BOT_JENKINS_TOKEN)) File "/home/runner/work/tvm/tvm/ci/scripts/jenkins/git_utils.py", line 53, in post with request.urlopen(req, data) as response: File "/usr/lib/python3.8/urllib/request.py", line 222, in urlopen return opener.open(url, data, timeout) File "/usr/lib/python3.8/urllib/request.py", line 531, in open response = meth(req, response) File "/usr/lib/python3.8/urllib/request.py", line 640, in http_response response = self.parent.error( File "/usr/lib/python3.8/urllib/request.py", line 569, in error return self._call_chain(*args) File "/usr/lib/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/usr/lib/python3.8/urllib/request.py", line 649, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 502: Bad Gateway ``` with response ``` 502 Bad Gateway

502 Bad Gateway

```
Anndrey24 commented 4 months ago

Resolved the conflict!

ekalda commented 4 months ago

Thanks @Anndrey24 and @lhutton1, this is now merged!

tqchen commented 4 months ago

Thanks @Anndrey24 @lhutton1 @ekalda .

Seems we have a breakage/flaky likely related to this pr https://ci.tlcpack.ai/blue/organizations/jenkins/tvm-arm/detail/main/1980/pipeline (in lint,arm, and cpu jobs).

tqchen commented 4 months ago

I created a temp revert, https://github.com/apache/tvm/pull/17038 to unblock the ci, if there is an alternative fix that would also be good, eitherway we followup with a redo quickly.