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

Merged
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32
May 28, 2024
Merged

[SME][TOPI] Add conv2d NHWC SME fp32 schedule#17003
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32

Conversation

@Anndrey24

Copy link
Copy Markdown
Contributor

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

Copy link
Copy Markdown
ContributorAuthor

@tvm-bot rerun

@github-actions

Copy link
Copy Markdown
Contributor

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

Details
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

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
</body>
</html>

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Anndrey24 great work - it's awesome to see this coming together! I left a few comments, largely nitpicks and a couple of questions

Comment threadtests/python/codegen/test_target_codegen_aarch64.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
This commit adds a scalable `arm_cpu` conv2d NHWC schedule for fp32 which generates SME instructions by using the tensor intrinsics introduced in apache#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.

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! - It looks like there's a merge conflict that needs to be fixed :/

@Anndrey24

Copy link
Copy Markdown
ContributorAuthor

Resolved the conflict!

@ekaldaekalda left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks very cool!

@ekalda
ekalda merged commit cab54e0 into apache:mainMay 28, 2024
@ekalda

Copy link
Copy Markdown
Contributor

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

@tqchen

tqchen commented May 28, 2024

Copy link
Copy Markdown
Member

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 added a commit that referenced this pull request May 28, 2024
@tqchen

tqchen commented May 29, 2024

Copy link
Copy Markdown
Member

I created a temp revert, #17038 to unblock the ci, if there is an alternative fix that would also be good, eitherway we followup with a redo quickly.

lhutton1 added a commit to lhutton1/tvm that referenced this pull request May 29, 2024
Fixes a merge conflict between apache#16981 and apache#17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
tqchen pushed a commit that referenced this pull request May 29, 2024
Fixes a merge conflict between #16981 and #17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
@Anndrey24
Anndrey24 deleted the sme-conv2d-fp32 branch May 29, 2024 15:56
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Anndrey24@ekalda@tqchen@lhutton1
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

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

Merged
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32
May 28, 2024
Merged

[SME][TOPI] Add conv2d NHWC SME fp32 schedule#17003
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32

Conversation

@Anndrey24

Copy link
Copy Markdown
Contributor

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

Copy link
Copy Markdown
ContributorAuthor

@tvm-bot rerun

@github-actions

Copy link
Copy Markdown
Contributor

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

Details
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

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
</body>
</html>

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Anndrey24 great work - it's awesome to see this coming together! I left a few comments, largely nitpicks and a couple of questions

Comment threadtests/python/codegen/test_target_codegen_aarch64.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
This commit adds a scalable `arm_cpu` conv2d NHWC schedule for fp32 which generates SME instructions by using the tensor intrinsics introduced in apache#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.

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! - It looks like there's a merge conflict that needs to be fixed :/

@Anndrey24

Copy link
Copy Markdown
ContributorAuthor

Resolved the conflict!

@ekaldaekalda left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks very cool!

@ekalda
ekalda merged commit cab54e0 into apache:mainMay 28, 2024
@ekalda

Copy link
Copy Markdown
Contributor

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

@tqchen

tqchen commented May 28, 2024

Copy link
Copy Markdown
Member

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 added a commit that referenced this pull request May 28, 2024
@tqchen

tqchen commented May 29, 2024

Copy link
Copy Markdown
Member

I created a temp revert, #17038 to unblock the ci, if there is an alternative fix that would also be good, eitherway we followup with a redo quickly.

lhutton1 added a commit to lhutton1/tvm that referenced this pull request May 29, 2024
Fixes a merge conflict between apache#16981 and apache#17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
tqchen pushed a commit that referenced this pull request May 29, 2024
Fixes a merge conflict between #16981 and #17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
@Anndrey24
Anndrey24 deleted the sme-conv2d-fp32 branch May 29, 2024 15:56
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Anndrey24@ekalda@tqchen@lhutton1
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32
May 28, 2024
Merged

[SME][TOPI] Add conv2d NHWC SME fp32 schedule#17003
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32

Conversation

@Anndrey24

Copy link
Copy Markdown
Contributor

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

Copy link
Copy Markdown
ContributorAuthor

@tvm-bot rerun

@github-actions

Copy link
Copy Markdown
Contributor

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

Details
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

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
</body>
</html>

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Anndrey24 great work - it's awesome to see this coming together! I left a few comments, largely nitpicks and a couple of questions

Comment threadtests/python/codegen/test_target_codegen_aarch64.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
This commit adds a scalable `arm_cpu` conv2d NHWC schedule for fp32 which generates SME instructions by using the tensor intrinsics introduced in apache#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.

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! - It looks like there's a merge conflict that needs to be fixed :/

@Anndrey24

Copy link
Copy Markdown
ContributorAuthor

Resolved the conflict!

@ekaldaekalda left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks very cool!

@ekalda
ekalda merged commit cab54e0 into apache:mainMay 28, 2024
@ekalda

Copy link
Copy Markdown
Contributor

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

@tqchen

tqchen commented May 28, 2024

Copy link
Copy Markdown
Member

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 added a commit that referenced this pull request May 28, 2024
@tqchen

tqchen commented May 29, 2024

Copy link
Copy Markdown
Member

I created a temp revert, #17038 to unblock the ci, if there is an alternative fix that would also be good, eitherway we followup with a redo quickly.

lhutton1 added a commit to lhutton1/tvm that referenced this pull request May 29, 2024
Fixes a merge conflict between apache#16981 and apache#17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
tqchen pushed a commit that referenced this pull request May 29, 2024
Fixes a merge conflict between #16981 and #17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
@Anndrey24
Anndrey24 deleted the sme-conv2d-fp32 branch May 29, 2024 15:56
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Anndrey24@ekalda@tqchen@lhutton1
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32
May 28, 2024
Merged

[SME][TOPI] Add conv2d NHWC SME fp32 schedule#17003
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32

Conversation

@Anndrey24

Copy link
Copy Markdown
Contributor

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

Copy link
Copy Markdown
ContributorAuthor

@tvm-bot rerun

@github-actions

Copy link
Copy Markdown
Contributor

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

Details
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

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
</body>
</html>

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Anndrey24 great work - it's awesome to see this coming together! I left a few comments, largely nitpicks and a couple of questions

Comment threadtests/python/codegen/test_target_codegen_aarch64.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
This commit adds a scalable `arm_cpu` conv2d NHWC schedule for fp32 which generates SME instructions by using the tensor intrinsics introduced in apache#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.

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! - It looks like there's a merge conflict that needs to be fixed :/

@Anndrey24

Copy link
Copy Markdown
ContributorAuthor

Resolved the conflict!

@ekaldaekalda left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks very cool!

@ekalda
ekalda merged commit cab54e0 into apache:mainMay 28, 2024
@ekalda

Copy link
Copy Markdown
Contributor

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

@tqchen

tqchen commented May 28, 2024

Copy link
Copy Markdown
Member

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 added a commit that referenced this pull request May 28, 2024
@tqchen

tqchen commented May 29, 2024

Copy link
Copy Markdown
Member

I created a temp revert, #17038 to unblock the ci, if there is an alternative fix that would also be good, eitherway we followup with a redo quickly.

lhutton1 added a commit to lhutton1/tvm that referenced this pull request May 29, 2024
Fixes a merge conflict between apache#16981 and apache#17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
tqchen pushed a commit that referenced this pull request May 29, 2024
Fixes a merge conflict between #16981 and #17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
@Anndrey24
Anndrey24 deleted the sme-conv2d-fp32 branch May 29, 2024 15:56
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Anndrey24@ekalda@tqchen@lhutton1
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

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

Merged
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32
May 28, 2024
Merged

[SME][TOPI] Add conv2d NHWC SME fp32 schedule#17003
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32

Conversation

@Anndrey24

Copy link
Copy Markdown
Contributor

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

Copy link
Copy Markdown
ContributorAuthor

@tvm-bot rerun

@github-actions

Copy link
Copy Markdown
Contributor

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

Details
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

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
</body>
</html>

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Anndrey24 great work - it's awesome to see this coming together! I left a few comments, largely nitpicks and a couple of questions

Comment threadtests/python/codegen/test_target_codegen_aarch64.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
This commit adds a scalable `arm_cpu` conv2d NHWC schedule for fp32 which generates SME instructions by using the tensor intrinsics introduced in apache#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.

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! - It looks like there's a merge conflict that needs to be fixed :/

@Anndrey24

Copy link
Copy Markdown
ContributorAuthor

Resolved the conflict!

@ekaldaekalda left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks very cool!

@ekalda
ekalda merged commit cab54e0 into apache:mainMay 28, 2024
@ekalda

Copy link
Copy Markdown
Contributor

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

@tqchen

tqchen commented May 28, 2024

Copy link
Copy Markdown
Member

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 added a commit that referenced this pull request May 28, 2024
@tqchen

tqchen commented May 29, 2024

Copy link
Copy Markdown
Member

I created a temp revert, #17038 to unblock the ci, if there is an alternative fix that would also be good, eitherway we followup with a redo quickly.

lhutton1 added a commit to lhutton1/tvm that referenced this pull request May 29, 2024
Fixes a merge conflict between apache#16981 and apache#17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
tqchen pushed a commit that referenced this pull request May 29, 2024
Fixes a merge conflict between #16981 and #17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
@Anndrey24
Anndrey24 deleted the sme-conv2d-fp32 branch May 29, 2024 15:56
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Anndrey24@ekalda@tqchen@lhutton1
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32
May 28, 2024
Merged

[SME][TOPI] Add conv2d NHWC SME fp32 schedule#17003
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32

Conversation

@Anndrey24

Copy link
Copy Markdown
Contributor

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

Copy link
Copy Markdown
ContributorAuthor

@tvm-bot rerun

@github-actions

Copy link
Copy Markdown
Contributor

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

Details
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

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
</body>
</html>

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Anndrey24 great work - it's awesome to see this coming together! I left a few comments, largely nitpicks and a couple of questions

Comment threadtests/python/codegen/test_target_codegen_aarch64.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
This commit adds a scalable `arm_cpu` conv2d NHWC schedule for fp32 which generates SME instructions by using the tensor intrinsics introduced in apache#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.

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! - It looks like there's a merge conflict that needs to be fixed :/

@Anndrey24

Copy link
Copy Markdown
ContributorAuthor

Resolved the conflict!

@ekaldaekalda left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks very cool!

@ekalda
ekalda merged commit cab54e0 into apache:mainMay 28, 2024
@ekalda

Copy link
Copy Markdown
Contributor

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

@tqchen

tqchen commented May 28, 2024

Copy link
Copy Markdown
Member

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 added a commit that referenced this pull request May 28, 2024
@tqchen

tqchen commented May 29, 2024

Copy link
Copy Markdown
Member

I created a temp revert, #17038 to unblock the ci, if there is an alternative fix that would also be good, eitherway we followup with a redo quickly.

lhutton1 added a commit to lhutton1/tvm that referenced this pull request May 29, 2024
Fixes a merge conflict between apache#16981 and apache#17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
tqchen pushed a commit that referenced this pull request May 29, 2024
Fixes a merge conflict between #16981 and #17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
@Anndrey24
Anndrey24 deleted the sme-conv2d-fp32 branch May 29, 2024 15:56
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Anndrey24@ekalda@tqchen@lhutton1
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Merged
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32
May 28, 2024
Merged

[SME][TOPI] Add conv2d NHWC SME fp32 schedule#17003
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32

Conversation

@Anndrey24

Copy link
Copy Markdown
Contributor

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

Copy link
Copy Markdown
ContributorAuthor

@tvm-bot rerun

@github-actions

Copy link
Copy Markdown
Contributor

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

Details
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

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
</body>
</html>

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Anndrey24 great work - it's awesome to see this coming together! I left a few comments, largely nitpicks and a couple of questions

Comment threadtests/python/codegen/test_target_codegen_aarch64.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
This commit adds a scalable `arm_cpu` conv2d NHWC schedule for fp32 which generates SME instructions by using the tensor intrinsics introduced in apache#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.

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! - It looks like there's a merge conflict that needs to be fixed :/

@Anndrey24

Copy link
Copy Markdown
ContributorAuthor

Resolved the conflict!

@ekaldaekalda left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks very cool!

@ekalda
ekalda merged commit cab54e0 into apache:mainMay 28, 2024
@ekalda

Copy link
Copy Markdown
Contributor

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

@tqchen

tqchen commented May 28, 2024

Copy link
Copy Markdown
Member

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 added a commit that referenced this pull request May 28, 2024
@tqchen

tqchen commented May 29, 2024

Copy link
Copy Markdown
Member

I created a temp revert, #17038 to unblock the ci, if there is an alternative fix that would also be good, eitherway we followup with a redo quickly.

lhutton1 added a commit to lhutton1/tvm that referenced this pull request May 29, 2024
Fixes a merge conflict between apache#16981 and apache#17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
tqchen pushed a commit that referenced this pull request May 29, 2024
Fixes a merge conflict between #16981 and #17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
@Anndrey24
Anndrey24 deleted the sme-conv2d-fp32 branch May 29, 2024 15:56
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Anndrey24@ekalda@tqchen@lhutton1
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

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

Merged
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32
May 28, 2024
Merged

[SME][TOPI] Add conv2d NHWC SME fp32 schedule#17003
ekalda merged 4 commits into
apache:mainfrom
Anndrey24:sme-conv2d-fp32

Conversation

@Anndrey24

Copy link
Copy Markdown
Contributor

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

Copy link
Copy Markdown
ContributorAuthor

@tvm-bot rerun

@github-actions

Copy link
Copy Markdown
Contributor

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

Details
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

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
</body>
</html>

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Anndrey24 great work - it's awesome to see this coming together! I left a few comments, largely nitpicks and a couple of questions

Comment threadtests/python/codegen/test_target_codegen_aarch64.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/topi/test_topi_conv2d_nhwc.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py Outdated
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadtests/python/relay/strategy/arm_cpu/test_conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
Comment threadpython/tvm/topi/arm_cpu/conv2d.py
This commit adds a scalable `arm_cpu` conv2d NHWC schedule for fp32 which generates SME instructions by using the tensor intrinsics introduced in apache#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.

@lhutton1lhutton1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! - It looks like there's a merge conflict that needs to be fixed :/

@Anndrey24

Copy link
Copy Markdown
ContributorAuthor

Resolved the conflict!

@ekaldaekalda left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks very cool!

@ekalda
ekalda merged commit cab54e0 into apache:mainMay 28, 2024
@ekalda

Copy link
Copy Markdown
Contributor

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

@tqchen

tqchen commented May 28, 2024

Copy link
Copy Markdown
Member

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 added a commit that referenced this pull request May 28, 2024
@tqchen

tqchen commented May 29, 2024

Copy link
Copy Markdown
Member

I created a temp revert, #17038 to unblock the ci, if there is an alternative fix that would also be good, eitherway we followup with a redo quickly.

lhutton1 added a commit to lhutton1/tvm that referenced this pull request May 29, 2024
Fixes a merge conflict between apache#16981 and apache#17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
tqchen pushed a commit that referenced this pull request May 29, 2024
Fixes a merge conflict between #16981 and #17003.
Change-Id: Ifcc983ef0b8c00250568a048fd682933adfdcde4
@Anndrey24
Anndrey24 deleted the sme-conv2d-fp32 branch May 29, 2024 15:56
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Anndrey24@ekalda@tqchen@lhutton1