[TOPI] [Hexagon] Batch flatten slice op initial version - #11522

Merged
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice
Jun 30, 2022
Merged

[TOPI] [Hexagon] Batch flatten slice op initial version#11522
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice

Conversation

@abhikran-quic

@abhikran-quicabhikran-quic commented Jun 1, 2022

Copy link
Copy Markdown
Contributor

This patch adds the initial python implementation batch flatten slice op for hexagon.

Slice ops are basically ops that make certain assumptions about the input and output dimensions and are expected to be called after the original op has been sliced according to those dimensions at the graph level.

cc @Lunderberg@cconvey@mehrdadh

@github-actions
github-actionsBot requested a review from LunderbergJune 1, 2022 10:51
@github-actions
github-actionsBot requested a review from mehrdadhJune 1, 2022 16:03
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

HI @Lunderberg , @cconvey : Could you please review this PR ?

@LunderbergLunderberg 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.

Overall looks good, just some general comments and nitpicks.

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/infrastructure.py

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg for your review. I have fixed the comments.

Right now CI is failing because of v69 support not being available in LLVM. Hopefully #11539 should address this and then the tests will pass in CI.

tests/python/contrib/test_hexagon/test_batch_flatten.py::TestBatchFlatten::test_batch_flatten[float16-input_shape3-n11c-1024c-1d-input_axis_sep0-nc-1d-output_axis_sep0] 'hexagonv69' is not a recognized processor for this target (ignoring processor)

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

CI is passing now.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey : Could you please review this PR for any more comments ?

@cconvey

cconvey commented Jun 17, 2022

Copy link
Copy Markdown
Contributor

@abhikran-quic : Apologies for being slow to reply. I'm hoping to review this early next week if that's helpful.

@abhikran-quic
abhikran-quicforce-pushed the batch_flatten_slice branch 2 times, most recently from 199bd85 to e24bbd6CompareJune 21, 2022 07:11
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey@mehrdadh,
Can you please review this PR ? It's ready to be merged from my side.

@cconvey

Copy link
Copy Markdown
Contributor

Can you please review this PR ? It's ready to be merged from my side.

Reviewing now.

@LunderbergLunderberg 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.

Taking one more read-through after the latest commits, and found a couple more nitpicky changes.

Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg and @jverma-quic for your comments. I've fixed them in the latest commit.

Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py

@LunderbergLunderberg 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.

Thank you for making the changes, and LGTM!

@cconveycconvey 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! One minor comment, but feel free to ignore it. We can revisit the issue later if necessary.


batch_flatten_func = te.create_prim_func([inp, out])
sch = tir.Schedule(batch_flatten_func, debug_mask="all")
compute = sch.get_block("compute")

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.

I'm a bit suspicious about assuming that there's a block named "compute", as I don't see any promises in the documentation about the name and what it represents. But making assumptions like this seems somewhat idiomatic within TVM, so IMHO it's okay enough.

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.

I completely agree with you and don't like it either. But, there doesn't seem to be a way to specify a different block name for topi defined ops. Please correct me if I'm wrong.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Since I'm reusing batch_flatten compute in topi , the block name compute comes up. Sharing the schedule below

@main = primfn(var_A: handle, var_compute: handle) -> ()
attr = {"global_symbol": "main", "tir.noalias": True}
buffers = {A: Buffer(A_1: Pointer(global float16), float16, [1, 1, 1, 2, 1024], [], axis_separators=[4]),
compute: Buffer(compute_1: Pointer(global float16), float16, [1, 2, 1024], [], axis_separators=[2])}
buffer_map = {var_A: A, var_compute: compute} {
block([], "root") {
tir.reads([])
tir.writes([])
for (i0: int32, 0, 1) {
for (i1_0_0: int32, 0, 1) {
for (i1_0_1: int32, 0, 1) {
for (i1_1_0: int32, 0, 2) {
for (i1_1_1_0: int32, 0, 16) {
for (i1_1_1_1: int32, 0, 64) "vectorized" {
block([1, 2048], "compute") as [i, j] {
bind(i, 0)
bind(j, (((i1_1_0*1024) + (i1_1_1_0*64)) + i1_1_1_1))
tir.reads([A[0, 0, 0, (j / 1024), (j % 1024)]])
tir.writes([compute[0, (j / 1024), (j % 1024)]])
compute[0, (j / 1024), (j % 1024)] = A[0, 0, 0, (j / 1024), (j % 1024)]
}
}
}
}
}
}
}
}
}

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.

👍

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@Lunderberg , @mehrdadh , @cconvey : Could you please merge this PR ? I've fixed merge conflicts.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Gentle reminder! Please help in merging this PR. I want to raise another PR that's dependent on this one.

@mehrdadh

Copy link
Copy Markdown
Member

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@mehrdadh : I have resolved merge conflicts. Could you please review this ?

@kparzysz-quic
kparzysz-quic merged commit 915c23b into apache:mainJun 30, 2022
@abhikran-quic
abhikran-quic deleted the batch_flatten_slice branch June 30, 2022 14:38
blackkker pushed a commit to blackkker/tvm that referenced this pull request Jul 7, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
masahi pushed a commit to masahi/tvm that referenced this pull request Jul 15, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
mikeseven pushed a commit to mikeseven/tvm that referenced this pull request Sep 27, 2023
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
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.

6 participants

@abhikran-quic@cconvey@mehrdadh@Lunderberg@jverma-quic@kparzysz-quic
, '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

[TOPI] [Hexagon] Batch flatten slice op initial version - #11522

Merged
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice
Jun 30, 2022
Merged

[TOPI] [Hexagon] Batch flatten slice op initial version#11522
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice

Conversation

@abhikran-quic

@abhikran-quicabhikran-quic commented Jun 1, 2022

Copy link
Copy Markdown
Contributor

This patch adds the initial python implementation batch flatten slice op for hexagon.

Slice ops are basically ops that make certain assumptions about the input and output dimensions and are expected to be called after the original op has been sliced according to those dimensions at the graph level.

cc @Lunderberg@cconvey@mehrdadh

@github-actions
github-actionsBot requested a review from LunderbergJune 1, 2022 10:51
@github-actions
github-actionsBot requested a review from mehrdadhJune 1, 2022 16:03
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

HI @Lunderberg , @cconvey : Could you please review this PR ?

@LunderbergLunderberg 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.

Overall looks good, just some general comments and nitpicks.

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/infrastructure.py

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg for your review. I have fixed the comments.

Right now CI is failing because of v69 support not being available in LLVM. Hopefully #11539 should address this and then the tests will pass in CI.

tests/python/contrib/test_hexagon/test_batch_flatten.py::TestBatchFlatten::test_batch_flatten[float16-input_shape3-n11c-1024c-1d-input_axis_sep0-nc-1d-output_axis_sep0] 'hexagonv69' is not a recognized processor for this target (ignoring processor)

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

CI is passing now.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey : Could you please review this PR for any more comments ?

@cconvey

cconvey commented Jun 17, 2022

Copy link
Copy Markdown
Contributor

@abhikran-quic : Apologies for being slow to reply. I'm hoping to review this early next week if that's helpful.

@abhikran-quic
abhikran-quicforce-pushed the batch_flatten_slice branch 2 times, most recently from 199bd85 to e24bbd6CompareJune 21, 2022 07:11
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey@mehrdadh,
Can you please review this PR ? It's ready to be merged from my side.

@cconvey

Copy link
Copy Markdown
Contributor

Can you please review this PR ? It's ready to be merged from my side.

Reviewing now.

@LunderbergLunderberg 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.

Taking one more read-through after the latest commits, and found a couple more nitpicky changes.

Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg and @jverma-quic for your comments. I've fixed them in the latest commit.

Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py

@LunderbergLunderberg 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.

Thank you for making the changes, and LGTM!

@cconveycconvey 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! One minor comment, but feel free to ignore it. We can revisit the issue later if necessary.


batch_flatten_func = te.create_prim_func([inp, out])
sch = tir.Schedule(batch_flatten_func, debug_mask="all")
compute = sch.get_block("compute")

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.

I'm a bit suspicious about assuming that there's a block named "compute", as I don't see any promises in the documentation about the name and what it represents. But making assumptions like this seems somewhat idiomatic within TVM, so IMHO it's okay enough.

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.

I completely agree with you and don't like it either. But, there doesn't seem to be a way to specify a different block name for topi defined ops. Please correct me if I'm wrong.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Since I'm reusing batch_flatten compute in topi , the block name compute comes up. Sharing the schedule below

@main = primfn(var_A: handle, var_compute: handle) -> ()
attr = {"global_symbol": "main", "tir.noalias": True}
buffers = {A: Buffer(A_1: Pointer(global float16), float16, [1, 1, 1, 2, 1024], [], axis_separators=[4]),
compute: Buffer(compute_1: Pointer(global float16), float16, [1, 2, 1024], [], axis_separators=[2])}
buffer_map = {var_A: A, var_compute: compute} {
block([], "root") {
tir.reads([])
tir.writes([])
for (i0: int32, 0, 1) {
for (i1_0_0: int32, 0, 1) {
for (i1_0_1: int32, 0, 1) {
for (i1_1_0: int32, 0, 2) {
for (i1_1_1_0: int32, 0, 16) {
for (i1_1_1_1: int32, 0, 64) "vectorized" {
block([1, 2048], "compute") as [i, j] {
bind(i, 0)
bind(j, (((i1_1_0*1024) + (i1_1_1_0*64)) + i1_1_1_1))
tir.reads([A[0, 0, 0, (j / 1024), (j % 1024)]])
tir.writes([compute[0, (j / 1024), (j % 1024)]])
compute[0, (j / 1024), (j % 1024)] = A[0, 0, 0, (j / 1024), (j % 1024)]
}
}
}
}
}
}
}
}
}

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.

👍

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@Lunderberg , @mehrdadh , @cconvey : Could you please merge this PR ? I've fixed merge conflicts.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Gentle reminder! Please help in merging this PR. I want to raise another PR that's dependent on this one.

@mehrdadh

Copy link
Copy Markdown
Member

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@mehrdadh : I have resolved merge conflicts. Could you please review this ?

@kparzysz-quic
kparzysz-quic merged commit 915c23b into apache:mainJun 30, 2022
@abhikran-quic
abhikran-quic deleted the batch_flatten_slice branch June 30, 2022 14:38
blackkker pushed a commit to blackkker/tvm that referenced this pull request Jul 7, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
masahi pushed a commit to masahi/tvm that referenced this pull request Jul 15, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
mikeseven pushed a commit to mikeseven/tvm that referenced this pull request Sep 27, 2023
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
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.

6 participants

@abhikran-quic@cconvey@mehrdadh@Lunderberg@jverma-quic@kparzysz-quic
, '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

[TOPI] [Hexagon] Batch flatten slice op initial version - #11522

Merged
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice
Jun 30, 2022
Merged

[TOPI] [Hexagon] Batch flatten slice op initial version#11522
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice

Conversation

@abhikran-quic

@abhikran-quicabhikran-quic commented Jun 1, 2022

Copy link
Copy Markdown
Contributor

This patch adds the initial python implementation batch flatten slice op for hexagon.

Slice ops are basically ops that make certain assumptions about the input and output dimensions and are expected to be called after the original op has been sliced according to those dimensions at the graph level.

cc @Lunderberg@cconvey@mehrdadh

@github-actions
github-actionsBot requested a review from LunderbergJune 1, 2022 10:51
@github-actions
github-actionsBot requested a review from mehrdadhJune 1, 2022 16:03
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

HI @Lunderberg , @cconvey : Could you please review this PR ?

@LunderbergLunderberg 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.

Overall looks good, just some general comments and nitpicks.

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/infrastructure.py

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg for your review. I have fixed the comments.

Right now CI is failing because of v69 support not being available in LLVM. Hopefully #11539 should address this and then the tests will pass in CI.

tests/python/contrib/test_hexagon/test_batch_flatten.py::TestBatchFlatten::test_batch_flatten[float16-input_shape3-n11c-1024c-1d-input_axis_sep0-nc-1d-output_axis_sep0] 'hexagonv69' is not a recognized processor for this target (ignoring processor)

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

CI is passing now.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey : Could you please review this PR for any more comments ?

@cconvey

cconvey commented Jun 17, 2022

Copy link
Copy Markdown
Contributor

@abhikran-quic : Apologies for being slow to reply. I'm hoping to review this early next week if that's helpful.

@abhikran-quic
abhikran-quicforce-pushed the batch_flatten_slice branch 2 times, most recently from 199bd85 to e24bbd6CompareJune 21, 2022 07:11
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey@mehrdadh,
Can you please review this PR ? It's ready to be merged from my side.

@cconvey

Copy link
Copy Markdown
Contributor

Can you please review this PR ? It's ready to be merged from my side.

Reviewing now.

@LunderbergLunderberg 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.

Taking one more read-through after the latest commits, and found a couple more nitpicky changes.

Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg and @jverma-quic for your comments. I've fixed them in the latest commit.

Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py

@LunderbergLunderberg 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.

Thank you for making the changes, and LGTM!

@cconveycconvey 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! One minor comment, but feel free to ignore it. We can revisit the issue later if necessary.


batch_flatten_func = te.create_prim_func([inp, out])
sch = tir.Schedule(batch_flatten_func, debug_mask="all")
compute = sch.get_block("compute")

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.

I'm a bit suspicious about assuming that there's a block named "compute", as I don't see any promises in the documentation about the name and what it represents. But making assumptions like this seems somewhat idiomatic within TVM, so IMHO it's okay enough.

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.

I completely agree with you and don't like it either. But, there doesn't seem to be a way to specify a different block name for topi defined ops. Please correct me if I'm wrong.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Since I'm reusing batch_flatten compute in topi , the block name compute comes up. Sharing the schedule below

@main = primfn(var_A: handle, var_compute: handle) -> ()
attr = {"global_symbol": "main", "tir.noalias": True}
buffers = {A: Buffer(A_1: Pointer(global float16), float16, [1, 1, 1, 2, 1024], [], axis_separators=[4]),
compute: Buffer(compute_1: Pointer(global float16), float16, [1, 2, 1024], [], axis_separators=[2])}
buffer_map = {var_A: A, var_compute: compute} {
block([], "root") {
tir.reads([])
tir.writes([])
for (i0: int32, 0, 1) {
for (i1_0_0: int32, 0, 1) {
for (i1_0_1: int32, 0, 1) {
for (i1_1_0: int32, 0, 2) {
for (i1_1_1_0: int32, 0, 16) {
for (i1_1_1_1: int32, 0, 64) "vectorized" {
block([1, 2048], "compute") as [i, j] {
bind(i, 0)
bind(j, (((i1_1_0*1024) + (i1_1_1_0*64)) + i1_1_1_1))
tir.reads([A[0, 0, 0, (j / 1024), (j % 1024)]])
tir.writes([compute[0, (j / 1024), (j % 1024)]])
compute[0, (j / 1024), (j % 1024)] = A[0, 0, 0, (j / 1024), (j % 1024)]
}
}
}
}
}
}
}
}
}

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.

👍

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@Lunderberg , @mehrdadh , @cconvey : Could you please merge this PR ? I've fixed merge conflicts.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Gentle reminder! Please help in merging this PR. I want to raise another PR that's dependent on this one.

@mehrdadh

Copy link
Copy Markdown
Member

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@mehrdadh : I have resolved merge conflicts. Could you please review this ?

@kparzysz-quic
kparzysz-quic merged commit 915c23b into apache:mainJun 30, 2022
@abhikran-quic
abhikran-quic deleted the batch_flatten_slice branch June 30, 2022 14:38
blackkker pushed a commit to blackkker/tvm that referenced this pull request Jul 7, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
masahi pushed a commit to masahi/tvm that referenced this pull request Jul 15, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
mikeseven pushed a commit to mikeseven/tvm that referenced this pull request Sep 27, 2023
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
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.

6 participants

@abhikran-quic@cconvey@mehrdadh@Lunderberg@jverma-quic@kparzysz-quic
, '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

[TOPI] [Hexagon] Batch flatten slice op initial version - #11522

Merged
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice
Jun 30, 2022
Merged

[TOPI] [Hexagon] Batch flatten slice op initial version#11522
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice

Conversation

@abhikran-quic

@abhikran-quicabhikran-quic commented Jun 1, 2022

Copy link
Copy Markdown
Contributor

This patch adds the initial python implementation batch flatten slice op for hexagon.

Slice ops are basically ops that make certain assumptions about the input and output dimensions and are expected to be called after the original op has been sliced according to those dimensions at the graph level.

cc @Lunderberg@cconvey@mehrdadh

@github-actions
github-actionsBot requested a review from LunderbergJune 1, 2022 10:51
@github-actions
github-actionsBot requested a review from mehrdadhJune 1, 2022 16:03
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

HI @Lunderberg , @cconvey : Could you please review this PR ?

@LunderbergLunderberg 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.

Overall looks good, just some general comments and nitpicks.

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/infrastructure.py

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg for your review. I have fixed the comments.

Right now CI is failing because of v69 support not being available in LLVM. Hopefully #11539 should address this and then the tests will pass in CI.

tests/python/contrib/test_hexagon/test_batch_flatten.py::TestBatchFlatten::test_batch_flatten[float16-input_shape3-n11c-1024c-1d-input_axis_sep0-nc-1d-output_axis_sep0] 'hexagonv69' is not a recognized processor for this target (ignoring processor)

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

CI is passing now.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey : Could you please review this PR for any more comments ?

@cconvey

cconvey commented Jun 17, 2022

Copy link
Copy Markdown
Contributor

@abhikran-quic : Apologies for being slow to reply. I'm hoping to review this early next week if that's helpful.

@abhikran-quic
abhikran-quicforce-pushed the batch_flatten_slice branch 2 times, most recently from 199bd85 to e24bbd6CompareJune 21, 2022 07:11
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey@mehrdadh,
Can you please review this PR ? It's ready to be merged from my side.

@cconvey

Copy link
Copy Markdown
Contributor

Can you please review this PR ? It's ready to be merged from my side.

Reviewing now.

@LunderbergLunderberg 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.

Taking one more read-through after the latest commits, and found a couple more nitpicky changes.

Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg and @jverma-quic for your comments. I've fixed them in the latest commit.

Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py

@LunderbergLunderberg 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.

Thank you for making the changes, and LGTM!

@cconveycconvey 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! One minor comment, but feel free to ignore it. We can revisit the issue later if necessary.


batch_flatten_func = te.create_prim_func([inp, out])
sch = tir.Schedule(batch_flatten_func, debug_mask="all")
compute = sch.get_block("compute")

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.

I'm a bit suspicious about assuming that there's a block named "compute", as I don't see any promises in the documentation about the name and what it represents. But making assumptions like this seems somewhat idiomatic within TVM, so IMHO it's okay enough.

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.

I completely agree with you and don't like it either. But, there doesn't seem to be a way to specify a different block name for topi defined ops. Please correct me if I'm wrong.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Since I'm reusing batch_flatten compute in topi , the block name compute comes up. Sharing the schedule below

@main = primfn(var_A: handle, var_compute: handle) -> ()
attr = {"global_symbol": "main", "tir.noalias": True}
buffers = {A: Buffer(A_1: Pointer(global float16), float16, [1, 1, 1, 2, 1024], [], axis_separators=[4]),
compute: Buffer(compute_1: Pointer(global float16), float16, [1, 2, 1024], [], axis_separators=[2])}
buffer_map = {var_A: A, var_compute: compute} {
block([], "root") {
tir.reads([])
tir.writes([])
for (i0: int32, 0, 1) {
for (i1_0_0: int32, 0, 1) {
for (i1_0_1: int32, 0, 1) {
for (i1_1_0: int32, 0, 2) {
for (i1_1_1_0: int32, 0, 16) {
for (i1_1_1_1: int32, 0, 64) "vectorized" {
block([1, 2048], "compute") as [i, j] {
bind(i, 0)
bind(j, (((i1_1_0*1024) + (i1_1_1_0*64)) + i1_1_1_1))
tir.reads([A[0, 0, 0, (j / 1024), (j % 1024)]])
tir.writes([compute[0, (j / 1024), (j % 1024)]])
compute[0, (j / 1024), (j % 1024)] = A[0, 0, 0, (j / 1024), (j % 1024)]
}
}
}
}
}
}
}
}
}

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.

👍

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@Lunderberg , @mehrdadh , @cconvey : Could you please merge this PR ? I've fixed merge conflicts.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Gentle reminder! Please help in merging this PR. I want to raise another PR that's dependent on this one.

@mehrdadh

Copy link
Copy Markdown
Member

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@mehrdadh : I have resolved merge conflicts. Could you please review this ?

@kparzysz-quic
kparzysz-quic merged commit 915c23b into apache:mainJun 30, 2022
@abhikran-quic
abhikran-quic deleted the batch_flatten_slice branch June 30, 2022 14:38
blackkker pushed a commit to blackkker/tvm that referenced this pull request Jul 7, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
masahi pushed a commit to masahi/tvm that referenced this pull request Jul 15, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
mikeseven pushed a commit to mikeseven/tvm that referenced this pull request Sep 27, 2023
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
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.

6 participants

@abhikran-quic@cconvey@mehrdadh@Lunderberg@jverma-quic@kparzysz-quic
, '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

[TOPI] [Hexagon] Batch flatten slice op initial version - #11522

Merged
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice
Jun 30, 2022
Merged

[TOPI] [Hexagon] Batch flatten slice op initial version#11522
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice

Conversation

@abhikran-quic

@abhikran-quicabhikran-quic commented Jun 1, 2022

Copy link
Copy Markdown
Contributor

This patch adds the initial python implementation batch flatten slice op for hexagon.

Slice ops are basically ops that make certain assumptions about the input and output dimensions and are expected to be called after the original op has been sliced according to those dimensions at the graph level.

cc @Lunderberg@cconvey@mehrdadh

@github-actions
github-actionsBot requested a review from LunderbergJune 1, 2022 10:51
@github-actions
github-actionsBot requested a review from mehrdadhJune 1, 2022 16:03
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

HI @Lunderberg , @cconvey : Could you please review this PR ?

@LunderbergLunderberg 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.

Overall looks good, just some general comments and nitpicks.

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/infrastructure.py

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg for your review. I have fixed the comments.

Right now CI is failing because of v69 support not being available in LLVM. Hopefully #11539 should address this and then the tests will pass in CI.

tests/python/contrib/test_hexagon/test_batch_flatten.py::TestBatchFlatten::test_batch_flatten[float16-input_shape3-n11c-1024c-1d-input_axis_sep0-nc-1d-output_axis_sep0] 'hexagonv69' is not a recognized processor for this target (ignoring processor)

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

CI is passing now.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey : Could you please review this PR for any more comments ?

@cconvey

cconvey commented Jun 17, 2022

Copy link
Copy Markdown
Contributor

@abhikran-quic : Apologies for being slow to reply. I'm hoping to review this early next week if that's helpful.

@abhikran-quic
abhikran-quicforce-pushed the batch_flatten_slice branch 2 times, most recently from 199bd85 to e24bbd6CompareJune 21, 2022 07:11
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey@mehrdadh,
Can you please review this PR ? It's ready to be merged from my side.

@cconvey

Copy link
Copy Markdown
Contributor

Can you please review this PR ? It's ready to be merged from my side.

Reviewing now.

@LunderbergLunderberg 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.

Taking one more read-through after the latest commits, and found a couple more nitpicky changes.

Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg and @jverma-quic for your comments. I've fixed them in the latest commit.

Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py

@LunderbergLunderberg 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.

Thank you for making the changes, and LGTM!

@cconveycconvey 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! One minor comment, but feel free to ignore it. We can revisit the issue later if necessary.


batch_flatten_func = te.create_prim_func([inp, out])
sch = tir.Schedule(batch_flatten_func, debug_mask="all")
compute = sch.get_block("compute")

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.

I'm a bit suspicious about assuming that there's a block named "compute", as I don't see any promises in the documentation about the name and what it represents. But making assumptions like this seems somewhat idiomatic within TVM, so IMHO it's okay enough.

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.

I completely agree with you and don't like it either. But, there doesn't seem to be a way to specify a different block name for topi defined ops. Please correct me if I'm wrong.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Since I'm reusing batch_flatten compute in topi , the block name compute comes up. Sharing the schedule below

@main = primfn(var_A: handle, var_compute: handle) -> ()
attr = {"global_symbol": "main", "tir.noalias": True}
buffers = {A: Buffer(A_1: Pointer(global float16), float16, [1, 1, 1, 2, 1024], [], axis_separators=[4]),
compute: Buffer(compute_1: Pointer(global float16), float16, [1, 2, 1024], [], axis_separators=[2])}
buffer_map = {var_A: A, var_compute: compute} {
block([], "root") {
tir.reads([])
tir.writes([])
for (i0: int32, 0, 1) {
for (i1_0_0: int32, 0, 1) {
for (i1_0_1: int32, 0, 1) {
for (i1_1_0: int32, 0, 2) {
for (i1_1_1_0: int32, 0, 16) {
for (i1_1_1_1: int32, 0, 64) "vectorized" {
block([1, 2048], "compute") as [i, j] {
bind(i, 0)
bind(j, (((i1_1_0*1024) + (i1_1_1_0*64)) + i1_1_1_1))
tir.reads([A[0, 0, 0, (j / 1024), (j % 1024)]])
tir.writes([compute[0, (j / 1024), (j % 1024)]])
compute[0, (j / 1024), (j % 1024)] = A[0, 0, 0, (j / 1024), (j % 1024)]
}
}
}
}
}
}
}
}
}

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.

👍

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@Lunderberg , @mehrdadh , @cconvey : Could you please merge this PR ? I've fixed merge conflicts.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Gentle reminder! Please help in merging this PR. I want to raise another PR that's dependent on this one.

@mehrdadh

Copy link
Copy Markdown
Member

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@mehrdadh : I have resolved merge conflicts. Could you please review this ?

@kparzysz-quic
kparzysz-quic merged commit 915c23b into apache:mainJun 30, 2022
@abhikran-quic
abhikran-quic deleted the batch_flatten_slice branch June 30, 2022 14:38
blackkker pushed a commit to blackkker/tvm that referenced this pull request Jul 7, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
masahi pushed a commit to masahi/tvm that referenced this pull request Jul 15, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
mikeseven pushed a commit to mikeseven/tvm that referenced this pull request Sep 27, 2023
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
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.

6 participants

@abhikran-quic@cconvey@mehrdadh@Lunderberg@jverma-quic@kparzysz-quic
, '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

[TOPI] [Hexagon] Batch flatten slice op initial version - #11522

Merged
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice
Jun 30, 2022
Merged

[TOPI] [Hexagon] Batch flatten slice op initial version#11522
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice

Conversation

@abhikran-quic

@abhikran-quicabhikran-quic commented Jun 1, 2022

Copy link
Copy Markdown
Contributor

This patch adds the initial python implementation batch flatten slice op for hexagon.

Slice ops are basically ops that make certain assumptions about the input and output dimensions and are expected to be called after the original op has been sliced according to those dimensions at the graph level.

cc @Lunderberg@cconvey@mehrdadh

@github-actions
github-actionsBot requested a review from LunderbergJune 1, 2022 10:51
@github-actions
github-actionsBot requested a review from mehrdadhJune 1, 2022 16:03
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

HI @Lunderberg , @cconvey : Could you please review this PR ?

@LunderbergLunderberg 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.

Overall looks good, just some general comments and nitpicks.

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/infrastructure.py

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg for your review. I have fixed the comments.

Right now CI is failing because of v69 support not being available in LLVM. Hopefully #11539 should address this and then the tests will pass in CI.

tests/python/contrib/test_hexagon/test_batch_flatten.py::TestBatchFlatten::test_batch_flatten[float16-input_shape3-n11c-1024c-1d-input_axis_sep0-nc-1d-output_axis_sep0] 'hexagonv69' is not a recognized processor for this target (ignoring processor)

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

CI is passing now.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey : Could you please review this PR for any more comments ?

@cconvey

cconvey commented Jun 17, 2022

Copy link
Copy Markdown
Contributor

@abhikran-quic : Apologies for being slow to reply. I'm hoping to review this early next week if that's helpful.

@abhikran-quic
abhikran-quicforce-pushed the batch_flatten_slice branch 2 times, most recently from 199bd85 to e24bbd6CompareJune 21, 2022 07:11
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey@mehrdadh,
Can you please review this PR ? It's ready to be merged from my side.

@cconvey

Copy link
Copy Markdown
Contributor

Can you please review this PR ? It's ready to be merged from my side.

Reviewing now.

@LunderbergLunderberg 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.

Taking one more read-through after the latest commits, and found a couple more nitpicky changes.

Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg and @jverma-quic for your comments. I've fixed them in the latest commit.

Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py

@LunderbergLunderberg 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.

Thank you for making the changes, and LGTM!

@cconveycconvey 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! One minor comment, but feel free to ignore it. We can revisit the issue later if necessary.


batch_flatten_func = te.create_prim_func([inp, out])
sch = tir.Schedule(batch_flatten_func, debug_mask="all")
compute = sch.get_block("compute")

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.

I'm a bit suspicious about assuming that there's a block named "compute", as I don't see any promises in the documentation about the name and what it represents. But making assumptions like this seems somewhat idiomatic within TVM, so IMHO it's okay enough.

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.

I completely agree with you and don't like it either. But, there doesn't seem to be a way to specify a different block name for topi defined ops. Please correct me if I'm wrong.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Since I'm reusing batch_flatten compute in topi , the block name compute comes up. Sharing the schedule below

@main = primfn(var_A: handle, var_compute: handle) -> ()
attr = {"global_symbol": "main", "tir.noalias": True}
buffers = {A: Buffer(A_1: Pointer(global float16), float16, [1, 1, 1, 2, 1024], [], axis_separators=[4]),
compute: Buffer(compute_1: Pointer(global float16), float16, [1, 2, 1024], [], axis_separators=[2])}
buffer_map = {var_A: A, var_compute: compute} {
block([], "root") {
tir.reads([])
tir.writes([])
for (i0: int32, 0, 1) {
for (i1_0_0: int32, 0, 1) {
for (i1_0_1: int32, 0, 1) {
for (i1_1_0: int32, 0, 2) {
for (i1_1_1_0: int32, 0, 16) {
for (i1_1_1_1: int32, 0, 64) "vectorized" {
block([1, 2048], "compute") as [i, j] {
bind(i, 0)
bind(j, (((i1_1_0*1024) + (i1_1_1_0*64)) + i1_1_1_1))
tir.reads([A[0, 0, 0, (j / 1024), (j % 1024)]])
tir.writes([compute[0, (j / 1024), (j % 1024)]])
compute[0, (j / 1024), (j % 1024)] = A[0, 0, 0, (j / 1024), (j % 1024)]
}
}
}
}
}
}
}
}
}

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.

👍

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@Lunderberg , @mehrdadh , @cconvey : Could you please merge this PR ? I've fixed merge conflicts.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Gentle reminder! Please help in merging this PR. I want to raise another PR that's dependent on this one.

@mehrdadh

Copy link
Copy Markdown
Member

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@mehrdadh : I have resolved merge conflicts. Could you please review this ?

@kparzysz-quic
kparzysz-quic merged commit 915c23b into apache:mainJun 30, 2022
@abhikran-quic
abhikran-quic deleted the batch_flatten_slice branch June 30, 2022 14:38
blackkker pushed a commit to blackkker/tvm that referenced this pull request Jul 7, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
masahi pushed a commit to masahi/tvm that referenced this pull request Jul 15, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
mikeseven pushed a commit to mikeseven/tvm that referenced this pull request Sep 27, 2023
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
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.

6 participants

@abhikran-quic@cconvey@mehrdadh@Lunderberg@jverma-quic@kparzysz-quic
, '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

[TOPI] [Hexagon] Batch flatten slice op initial version - #11522

Merged
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice
Jun 30, 2022
Merged

[TOPI] [Hexagon] Batch flatten slice op initial version#11522
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice

Conversation

@abhikran-quic

@abhikran-quicabhikran-quic commented Jun 1, 2022

Copy link
Copy Markdown
Contributor

This patch adds the initial python implementation batch flatten slice op for hexagon.

Slice ops are basically ops that make certain assumptions about the input and output dimensions and are expected to be called after the original op has been sliced according to those dimensions at the graph level.

cc @Lunderberg@cconvey@mehrdadh

@github-actions
github-actionsBot requested a review from LunderbergJune 1, 2022 10:51
@github-actions
github-actionsBot requested a review from mehrdadhJune 1, 2022 16:03
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

HI @Lunderberg , @cconvey : Could you please review this PR ?

@LunderbergLunderberg 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.

Overall looks good, just some general comments and nitpicks.

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/infrastructure.py

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg for your review. I have fixed the comments.

Right now CI is failing because of v69 support not being available in LLVM. Hopefully #11539 should address this and then the tests will pass in CI.

tests/python/contrib/test_hexagon/test_batch_flatten.py::TestBatchFlatten::test_batch_flatten[float16-input_shape3-n11c-1024c-1d-input_axis_sep0-nc-1d-output_axis_sep0] 'hexagonv69' is not a recognized processor for this target (ignoring processor)

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

CI is passing now.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey : Could you please review this PR for any more comments ?

@cconvey

cconvey commented Jun 17, 2022

Copy link
Copy Markdown
Contributor

@abhikran-quic : Apologies for being slow to reply. I'm hoping to review this early next week if that's helpful.

@abhikran-quic
abhikran-quicforce-pushed the batch_flatten_slice branch 2 times, most recently from 199bd85 to e24bbd6CompareJune 21, 2022 07:11
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey@mehrdadh,
Can you please review this PR ? It's ready to be merged from my side.

@cconvey

Copy link
Copy Markdown
Contributor

Can you please review this PR ? It's ready to be merged from my side.

Reviewing now.

@LunderbergLunderberg 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.

Taking one more read-through after the latest commits, and found a couple more nitpicky changes.

Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg and @jverma-quic for your comments. I've fixed them in the latest commit.

Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py

@LunderbergLunderberg 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.

Thank you for making the changes, and LGTM!

@cconveycconvey 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! One minor comment, but feel free to ignore it. We can revisit the issue later if necessary.


batch_flatten_func = te.create_prim_func([inp, out])
sch = tir.Schedule(batch_flatten_func, debug_mask="all")
compute = sch.get_block("compute")

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.

I'm a bit suspicious about assuming that there's a block named "compute", as I don't see any promises in the documentation about the name and what it represents. But making assumptions like this seems somewhat idiomatic within TVM, so IMHO it's okay enough.

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.

I completely agree with you and don't like it either. But, there doesn't seem to be a way to specify a different block name for topi defined ops. Please correct me if I'm wrong.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Since I'm reusing batch_flatten compute in topi , the block name compute comes up. Sharing the schedule below

@main = primfn(var_A: handle, var_compute: handle) -> ()
attr = {"global_symbol": "main", "tir.noalias": True}
buffers = {A: Buffer(A_1: Pointer(global float16), float16, [1, 1, 1, 2, 1024], [], axis_separators=[4]),
compute: Buffer(compute_1: Pointer(global float16), float16, [1, 2, 1024], [], axis_separators=[2])}
buffer_map = {var_A: A, var_compute: compute} {
block([], "root") {
tir.reads([])
tir.writes([])
for (i0: int32, 0, 1) {
for (i1_0_0: int32, 0, 1) {
for (i1_0_1: int32, 0, 1) {
for (i1_1_0: int32, 0, 2) {
for (i1_1_1_0: int32, 0, 16) {
for (i1_1_1_1: int32, 0, 64) "vectorized" {
block([1, 2048], "compute") as [i, j] {
bind(i, 0)
bind(j, (((i1_1_0*1024) + (i1_1_1_0*64)) + i1_1_1_1))
tir.reads([A[0, 0, 0, (j / 1024), (j % 1024)]])
tir.writes([compute[0, (j / 1024), (j % 1024)]])
compute[0, (j / 1024), (j % 1024)] = A[0, 0, 0, (j / 1024), (j % 1024)]
}
}
}
}
}
}
}
}
}

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.

👍

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@Lunderberg , @mehrdadh , @cconvey : Could you please merge this PR ? I've fixed merge conflicts.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Gentle reminder! Please help in merging this PR. I want to raise another PR that's dependent on this one.

@mehrdadh

Copy link
Copy Markdown
Member

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@mehrdadh : I have resolved merge conflicts. Could you please review this ?

@kparzysz-quic
kparzysz-quic merged commit 915c23b into apache:mainJun 30, 2022
@abhikran-quic
abhikran-quic deleted the batch_flatten_slice branch June 30, 2022 14:38
blackkker pushed a commit to blackkker/tvm that referenced this pull request Jul 7, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
masahi pushed a commit to masahi/tvm that referenced this pull request Jul 15, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
mikeseven pushed a commit to mikeseven/tvm that referenced this pull request Sep 27, 2023
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
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.

6 participants

@abhikran-quic@cconvey@mehrdadh@Lunderberg@jverma-quic@kparzysz-quic
, '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

[TOPI] [Hexagon] Batch flatten slice op initial version - #11522

Merged
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice
Jun 30, 2022
Merged

[TOPI] [Hexagon] Batch flatten slice op initial version#11522
kparzysz-quic merged 12 commits into
apache:mainfrom
abhikran-quic:batch_flatten_slice

Conversation

@abhikran-quic

@abhikran-quicabhikran-quic commented Jun 1, 2022

Copy link
Copy Markdown
Contributor

This patch adds the initial python implementation batch flatten slice op for hexagon.

Slice ops are basically ops that make certain assumptions about the input and output dimensions and are expected to be called after the original op has been sliced according to those dimensions at the graph level.

cc @Lunderberg@cconvey@mehrdadh

@github-actions
github-actionsBot requested a review from LunderbergJune 1, 2022 10:51
@github-actions
github-actionsBot requested a review from mehrdadhJune 1, 2022 16:03
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

HI @Lunderberg , @cconvey : Could you please review this PR ?

@LunderbergLunderberg 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.

Overall looks good, just some general comments and nitpicks.

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/infrastructure.py

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg for your review. I have fixed the comments.

Right now CI is failing because of v69 support not being available in LLVM. Hopefully #11539 should address this and then the tests will pass in CI.

tests/python/contrib/test_hexagon/test_batch_flatten.py::TestBatchFlatten::test_batch_flatten[float16-input_shape3-n11c-1024c-1d-input_axis_sep0-nc-1d-output_axis_sep0] 'hexagonv69' is not a recognized processor for this target (ignoring processor)

Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/test_batch_flatten.py Outdated
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

CI is passing now.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey : Could you please review this PR for any more comments ?

@cconvey

cconvey commented Jun 17, 2022

Copy link
Copy Markdown
Contributor

@abhikran-quic : Apologies for being slow to reply. I'm hoping to review this early next week if that's helpful.

@abhikran-quic
abhikran-quicforce-pushed the batch_flatten_slice branch 2 times, most recently from 199bd85 to e24bbd6CompareJune 21, 2022 07:11
@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Hi @Lunderberg@cconvey@mehrdadh,
Can you please review this PR ? It's ready to be merged from my side.

@cconvey

Copy link
Copy Markdown
Contributor

Can you please review this PR ? It's ready to be merged from my side.

Reviewing now.

@LunderbergLunderberg 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.

Taking one more read-through after the latest commits, and found a couple more nitpicky changes.

Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated

@abhikran-quicabhikran-quic left a comment

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Thank you @Lunderberg and @jverma-quic for your comments. I've fixed them in the latest commit.

Comment threadpython/tvm/topi/hexagon/utils.py Outdated
Comment threadtests/python/contrib/test_hexagon/infrastructure.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadtests/python/contrib/test_hexagon/topi/test_batch_flatten.py Outdated
Comment threadpython/tvm/topi/hexagon/slice_ops/batch_flatten.py

@LunderbergLunderberg 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.

Thank you for making the changes, and LGTM!

@cconveycconvey 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! One minor comment, but feel free to ignore it. We can revisit the issue later if necessary.


batch_flatten_func = te.create_prim_func([inp, out])
sch = tir.Schedule(batch_flatten_func, debug_mask="all")
compute = sch.get_block("compute")

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.

I'm a bit suspicious about assuming that there's a block named "compute", as I don't see any promises in the documentation about the name and what it represents. But making assumptions like this seems somewhat idiomatic within TVM, so IMHO it's okay enough.

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.

I completely agree with you and don't like it either. But, there doesn't seem to be a way to specify a different block name for topi defined ops. Please correct me if I'm wrong.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Since I'm reusing batch_flatten compute in topi , the block name compute comes up. Sharing the schedule below

@main = primfn(var_A: handle, var_compute: handle) -> ()
attr = {"global_symbol": "main", "tir.noalias": True}
buffers = {A: Buffer(A_1: Pointer(global float16), float16, [1, 1, 1, 2, 1024], [], axis_separators=[4]),
compute: Buffer(compute_1: Pointer(global float16), float16, [1, 2, 1024], [], axis_separators=[2])}
buffer_map = {var_A: A, var_compute: compute} {
block([], "root") {
tir.reads([])
tir.writes([])
for (i0: int32, 0, 1) {
for (i1_0_0: int32, 0, 1) {
for (i1_0_1: int32, 0, 1) {
for (i1_1_0: int32, 0, 2) {
for (i1_1_1_0: int32, 0, 16) {
for (i1_1_1_1: int32, 0, 64) "vectorized" {
block([1, 2048], "compute") as [i, j] {
bind(i, 0)
bind(j, (((i1_1_0*1024) + (i1_1_1_0*64)) + i1_1_1_1))
tir.reads([A[0, 0, 0, (j / 1024), (j % 1024)]])
tir.writes([compute[0, (j / 1024), (j % 1024)]])
compute[0, (j / 1024), (j % 1024)] = A[0, 0, 0, (j / 1024), (j % 1024)]
}
}
}
}
}
}
}
}
}

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.

👍

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@Lunderberg , @mehrdadh , @cconvey : Could you please merge this PR ? I've fixed merge conflicts.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

Gentle reminder! Please help in merging this PR. I want to raise another PR that's dependent on this one.

@mehrdadh

Copy link
Copy Markdown
Member

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@abhikran-quic

Copy link
Copy Markdown
ContributorAuthor

@abhikran-quic please resolve the conflict by rebasing with main and push into this branch.

@mehrdadh : I have resolved merge conflicts. Could you please review this ?

@kparzysz-quic
kparzysz-quic merged commit 915c23b into apache:mainJun 30, 2022
@abhikran-quic
abhikran-quic deleted the batch_flatten_slice branch June 30, 2022 14:38
blackkker pushed a commit to blackkker/tvm that referenced this pull request Jul 7, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
masahi pushed a commit to masahi/tvm that referenced this pull request Jul 15, 2022
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
mikeseven pushed a commit to mikeseven/tvm that referenced this pull request Sep 27, 2023
* [TOPI] [Hexagon] Batch flatten slice op initial version
* Fix lint errors
* Fix more lint errors
* Fix lint warnings
* Fix review comments
* Update tests to use util functions
* Update __init__.py
* Fix review comments
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.

6 participants

@abhikran-quic@cconvey@mehrdadh@Lunderberg@jverma-quic@kparzysz-quic