Adding initial SVE support to TVM - #8655

Closed
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition
Closed

Adding initial SVE support to TVM#8655
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition

Conversation

@MeeraN7

Copy link
Copy Markdown

Prototype for the addition of Arm Architecture's Scalable Vector Extension (SVE) in TVM containing initial VLA and predication implementation, based on earlier work by Giuseppe Rossini.

The RFC can be found here

Prototype containing initial VLA and predication
implementation
@MeeraN7

Copy link
Copy Markdown
Author

@mbaret

Copy link
Copy Markdown
Contributor

@tqchen@jcf94@junrushao1994 you may also be interested

@huajsjhuajsj 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 @mbaret.

Comment on lines +96 to +102
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base, stride)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros((n, stride), dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[base:] + 1)

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.

remove

Comment on lines +71 to +76
# ctx = remote.context(target)
# # launch the kernel.
# a = tvm.nd.empty((n,), A.dtype, ctx).copyfrom(np.random.uniform(size=(n, lanes)))
# c = tvm.nd.empty((n,), C.dtype, ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy() + 1)

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.

remove

Comment on lines +39 to +45
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros(n, dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[::-1][:n])

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.

remove

}

// All pattern
int all_pattern = 31;

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.

use macro?

Comment on lines +373 to +375
// auto const str_to_parse = os.str();
// auto pos = str_to_parse.find("x");
// auto stem= str_to_parse.substr(0, pos);

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.

remove

Comment on lines +81 to +91
// DataType(int code, int bits) {
// data_.code = static_cast<uint8_t>(code);
// data_.bits = static_cast<uint8_t>(bits);
// is_scalable_ = true;
// std::cout<<bits<<std::endl;
// data_.lanes = uint16_t(128) / static_cast<uint16_t>(8); // minimal lanes
//
//// if (code == kBFloat) {
//// ICHECK_EQ(bits, 16);
//// }
// }

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.

remove

bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {
int min_num_lanes = 128 / bits();

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.

macro? and does here only support vector size 128 or should be configurable between 128 - 2048?

bool is_vector_bool() const { return is_vector() && bits() == 1; }
/*! \return whether type is a Void type. */
bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

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.

doxygen comments.

bool operator==(const DataType& other) const {
return data_.code == other.data_.code && data_.bits == other.data_.bits &&
data_.lanes == other.data_.lanes;
data_.lanes == other.data_.lanes; // && is_scalable_ == other.is_scalable_;

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.

seem like no diff with original code, is the comment for "is_scalable_ == other.is_scalable" intend logic?

bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {

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.

how this function cooperate with is_scalable_? what happen if is_scalable_ is false but this function get called?

@jroesch

Copy link
Copy Markdown
Member

This PR appears to be out of date, please feel free to reopen it if this is not the case.

As part of the new year we are attempting to triage the project's open pull requests to ensure that code which
is ready for review and/or merging receives adequate attention.

Thanks again for your contribution, and feel free to reach out to discuss these changes.

@jroeschjroesch closed this Jan 19, 2022
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

@MeeraN7@mbaret@jroesch@huajsj
, '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

Adding initial SVE support to TVM - #8655

Closed
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition
Closed

Adding initial SVE support to TVM#8655
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition

Conversation

@MeeraN7

Copy link
Copy Markdown

Prototype for the addition of Arm Architecture's Scalable Vector Extension (SVE) in TVM containing initial VLA and predication implementation, based on earlier work by Giuseppe Rossini.

The RFC can be found here

Prototype containing initial VLA and predication
implementation
@MeeraN7

Copy link
Copy Markdown
Author

@mbaret

Copy link
Copy Markdown
Contributor

@tqchen@jcf94@junrushao1994 you may also be interested

@huajsjhuajsj 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 @mbaret.

Comment on lines +96 to +102
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base, stride)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros((n, stride), dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[base:] + 1)

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.

remove

Comment on lines +71 to +76
# ctx = remote.context(target)
# # launch the kernel.
# a = tvm.nd.empty((n,), A.dtype, ctx).copyfrom(np.random.uniform(size=(n, lanes)))
# c = tvm.nd.empty((n,), C.dtype, ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy() + 1)

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.

remove

Comment on lines +39 to +45
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros(n, dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[::-1][:n])

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.

remove

}

// All pattern
int all_pattern = 31;

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.

use macro?

Comment on lines +373 to +375
// auto const str_to_parse = os.str();
// auto pos = str_to_parse.find("x");
// auto stem= str_to_parse.substr(0, pos);

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.

remove

Comment on lines +81 to +91
// DataType(int code, int bits) {
// data_.code = static_cast<uint8_t>(code);
// data_.bits = static_cast<uint8_t>(bits);
// is_scalable_ = true;
// std::cout<<bits<<std::endl;
// data_.lanes = uint16_t(128) / static_cast<uint16_t>(8); // minimal lanes
//
//// if (code == kBFloat) {
//// ICHECK_EQ(bits, 16);
//// }
// }

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.

remove

bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {
int min_num_lanes = 128 / bits();

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.

macro? and does here only support vector size 128 or should be configurable between 128 - 2048?

bool is_vector_bool() const { return is_vector() && bits() == 1; }
/*! \return whether type is a Void type. */
bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

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.

doxygen comments.

bool operator==(const DataType& other) const {
return data_.code == other.data_.code && data_.bits == other.data_.bits &&
data_.lanes == other.data_.lanes;
data_.lanes == other.data_.lanes; // && is_scalable_ == other.is_scalable_;

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.

seem like no diff with original code, is the comment for "is_scalable_ == other.is_scalable" intend logic?

bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {

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.

how this function cooperate with is_scalable_? what happen if is_scalable_ is false but this function get called?

@jroesch

Copy link
Copy Markdown
Member

This PR appears to be out of date, please feel free to reopen it if this is not the case.

As part of the new year we are attempting to triage the project's open pull requests to ensure that code which
is ready for review and/or merging receives adequate attention.

Thanks again for your contribution, and feel free to reach out to discuss these changes.

@jroeschjroesch closed this Jan 19, 2022
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

@MeeraN7@mbaret@jroesch@huajsj
, '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

Adding initial SVE support to TVM - #8655

Closed
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition
Closed

Adding initial SVE support to TVM#8655
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition

Conversation

@MeeraN7

Copy link
Copy Markdown

Prototype for the addition of Arm Architecture's Scalable Vector Extension (SVE) in TVM containing initial VLA and predication implementation, based on earlier work by Giuseppe Rossini.

The RFC can be found here

Prototype containing initial VLA and predication
implementation
@MeeraN7

Copy link
Copy Markdown
Author

@mbaret

Copy link
Copy Markdown
Contributor

@tqchen@jcf94@junrushao1994 you may also be interested

@huajsjhuajsj 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 @mbaret.

Comment on lines +96 to +102
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base, stride)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros((n, stride), dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[base:] + 1)

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.

remove

Comment on lines +71 to +76
# ctx = remote.context(target)
# # launch the kernel.
# a = tvm.nd.empty((n,), A.dtype, ctx).copyfrom(np.random.uniform(size=(n, lanes)))
# c = tvm.nd.empty((n,), C.dtype, ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy() + 1)

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.

remove

Comment on lines +39 to +45
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros(n, dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[::-1][:n])

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.

remove

}

// All pattern
int all_pattern = 31;

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.

use macro?

Comment on lines +373 to +375
// auto const str_to_parse = os.str();
// auto pos = str_to_parse.find("x");
// auto stem= str_to_parse.substr(0, pos);

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.

remove

Comment on lines +81 to +91
// DataType(int code, int bits) {
// data_.code = static_cast<uint8_t>(code);
// data_.bits = static_cast<uint8_t>(bits);
// is_scalable_ = true;
// std::cout<<bits<<std::endl;
// data_.lanes = uint16_t(128) / static_cast<uint16_t>(8); // minimal lanes
//
//// if (code == kBFloat) {
//// ICHECK_EQ(bits, 16);
//// }
// }

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.

remove

bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {
int min_num_lanes = 128 / bits();

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.

macro? and does here only support vector size 128 or should be configurable between 128 - 2048?

bool is_vector_bool() const { return is_vector() && bits() == 1; }
/*! \return whether type is a Void type. */
bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

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.

doxygen comments.

bool operator==(const DataType& other) const {
return data_.code == other.data_.code && data_.bits == other.data_.bits &&
data_.lanes == other.data_.lanes;
data_.lanes == other.data_.lanes; // && is_scalable_ == other.is_scalable_;

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.

seem like no diff with original code, is the comment for "is_scalable_ == other.is_scalable" intend logic?

bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {

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.

how this function cooperate with is_scalable_? what happen if is_scalable_ is false but this function get called?

@jroesch

Copy link
Copy Markdown
Member

This PR appears to be out of date, please feel free to reopen it if this is not the case.

As part of the new year we are attempting to triage the project's open pull requests to ensure that code which
is ready for review and/or merging receives adequate attention.

Thanks again for your contribution, and feel free to reach out to discuss these changes.

@jroeschjroesch closed this Jan 19, 2022
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

@MeeraN7@mbaret@jroesch@huajsj
, '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

Adding initial SVE support to TVM - #8655

Closed
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition
Closed

Adding initial SVE support to TVM#8655
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition

Conversation

@MeeraN7

Copy link
Copy Markdown

Prototype for the addition of Arm Architecture's Scalable Vector Extension (SVE) in TVM containing initial VLA and predication implementation, based on earlier work by Giuseppe Rossini.

The RFC can be found here

Prototype containing initial VLA and predication
implementation
@MeeraN7

Copy link
Copy Markdown
Author

@mbaret

Copy link
Copy Markdown
Contributor

@tqchen@jcf94@junrushao1994 you may also be interested

@huajsjhuajsj 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 @mbaret.

Comment on lines +96 to +102
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base, stride)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros((n, stride), dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[base:] + 1)

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.

remove

Comment on lines +71 to +76
# ctx = remote.context(target)
# # launch the kernel.
# a = tvm.nd.empty((n,), A.dtype, ctx).copyfrom(np.random.uniform(size=(n, lanes)))
# c = tvm.nd.empty((n,), C.dtype, ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy() + 1)

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.

remove

Comment on lines +39 to +45
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros(n, dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[::-1][:n])

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.

remove

}

// All pattern
int all_pattern = 31;

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.

use macro?

Comment on lines +373 to +375
// auto const str_to_parse = os.str();
// auto pos = str_to_parse.find("x");
// auto stem= str_to_parse.substr(0, pos);

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.

remove

Comment on lines +81 to +91
// DataType(int code, int bits) {
// data_.code = static_cast<uint8_t>(code);
// data_.bits = static_cast<uint8_t>(bits);
// is_scalable_ = true;
// std::cout<<bits<<std::endl;
// data_.lanes = uint16_t(128) / static_cast<uint16_t>(8); // minimal lanes
//
//// if (code == kBFloat) {
//// ICHECK_EQ(bits, 16);
//// }
// }

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.

remove

bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {
int min_num_lanes = 128 / bits();

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.

macro? and does here only support vector size 128 or should be configurable between 128 - 2048?

bool is_vector_bool() const { return is_vector() && bits() == 1; }
/*! \return whether type is a Void type. */
bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

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.

doxygen comments.

bool operator==(const DataType& other) const {
return data_.code == other.data_.code && data_.bits == other.data_.bits &&
data_.lanes == other.data_.lanes;
data_.lanes == other.data_.lanes; // && is_scalable_ == other.is_scalable_;

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.

seem like no diff with original code, is the comment for "is_scalable_ == other.is_scalable" intend logic?

bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {

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.

how this function cooperate with is_scalable_? what happen if is_scalable_ is false but this function get called?

@jroesch

Copy link
Copy Markdown
Member

This PR appears to be out of date, please feel free to reopen it if this is not the case.

As part of the new year we are attempting to triage the project's open pull requests to ensure that code which
is ready for review and/or merging receives adequate attention.

Thanks again for your contribution, and feel free to reach out to discuss these changes.

@jroeschjroesch closed this Jan 19, 2022
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

@MeeraN7@mbaret@jroesch@huajsj
, '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

Adding initial SVE support to TVM - #8655

Closed
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition
Closed

Adding initial SVE support to TVM#8655
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition

Conversation

@MeeraN7

Copy link
Copy Markdown

Prototype for the addition of Arm Architecture's Scalable Vector Extension (SVE) in TVM containing initial VLA and predication implementation, based on earlier work by Giuseppe Rossini.

The RFC can be found here

Prototype containing initial VLA and predication
implementation
@MeeraN7

Copy link
Copy Markdown
Author

@mbaret

Copy link
Copy Markdown
Contributor

@tqchen@jcf94@junrushao1994 you may also be interested

@huajsjhuajsj 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 @mbaret.

Comment on lines +96 to +102
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base, stride)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros((n, stride), dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[base:] + 1)

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.

remove

Comment on lines +71 to +76
# ctx = remote.context(target)
# # launch the kernel.
# a = tvm.nd.empty((n,), A.dtype, ctx).copyfrom(np.random.uniform(size=(n, lanes)))
# c = tvm.nd.empty((n,), C.dtype, ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy() + 1)

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.

remove

Comment on lines +39 to +45
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros(n, dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[::-1][:n])

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.

remove

}

// All pattern
int all_pattern = 31;

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.

use macro?

Comment on lines +373 to +375
// auto const str_to_parse = os.str();
// auto pos = str_to_parse.find("x");
// auto stem= str_to_parse.substr(0, pos);

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.

remove

Comment on lines +81 to +91
// DataType(int code, int bits) {
// data_.code = static_cast<uint8_t>(code);
// data_.bits = static_cast<uint8_t>(bits);
// is_scalable_ = true;
// std::cout<<bits<<std::endl;
// data_.lanes = uint16_t(128) / static_cast<uint16_t>(8); // minimal lanes
//
//// if (code == kBFloat) {
//// ICHECK_EQ(bits, 16);
//// }
// }

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.

remove

bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {
int min_num_lanes = 128 / bits();

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.

macro? and does here only support vector size 128 or should be configurable between 128 - 2048?

bool is_vector_bool() const { return is_vector() && bits() == 1; }
/*! \return whether type is a Void type. */
bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

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.

doxygen comments.

bool operator==(const DataType& other) const {
return data_.code == other.data_.code && data_.bits == other.data_.bits &&
data_.lanes == other.data_.lanes;
data_.lanes == other.data_.lanes; // && is_scalable_ == other.is_scalable_;

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.

seem like no diff with original code, is the comment for "is_scalable_ == other.is_scalable" intend logic?

bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {

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.

how this function cooperate with is_scalable_? what happen if is_scalable_ is false but this function get called?

@jroesch

Copy link
Copy Markdown
Member

This PR appears to be out of date, please feel free to reopen it if this is not the case.

As part of the new year we are attempting to triage the project's open pull requests to ensure that code which
is ready for review and/or merging receives adequate attention.

Thanks again for your contribution, and feel free to reach out to discuss these changes.

@jroeschjroesch closed this Jan 19, 2022
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

@MeeraN7@mbaret@jroesch@huajsj
, '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

Adding initial SVE support to TVM - #8655

Closed
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition
Closed

Adding initial SVE support to TVM#8655
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition

Conversation

@MeeraN7

Copy link
Copy Markdown

Prototype for the addition of Arm Architecture's Scalable Vector Extension (SVE) in TVM containing initial VLA and predication implementation, based on earlier work by Giuseppe Rossini.

The RFC can be found here

Prototype containing initial VLA and predication
implementation
@MeeraN7

Copy link
Copy Markdown
Author

@mbaret

Copy link
Copy Markdown
Contributor

@tqchen@jcf94@junrushao1994 you may also be interested

@huajsjhuajsj 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 @mbaret.

Comment on lines +96 to +102
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base, stride)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros((n, stride), dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[base:] + 1)

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.

remove

Comment on lines +71 to +76
# ctx = remote.context(target)
# # launch the kernel.
# a = tvm.nd.empty((n,), A.dtype, ctx).copyfrom(np.random.uniform(size=(n, lanes)))
# c = tvm.nd.empty((n,), C.dtype, ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy() + 1)

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.

remove

Comment on lines +39 to +45
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros(n, dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[::-1][:n])

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.

remove

}

// All pattern
int all_pattern = 31;

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.

use macro?

Comment on lines +373 to +375
// auto const str_to_parse = os.str();
// auto pos = str_to_parse.find("x");
// auto stem= str_to_parse.substr(0, pos);

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.

remove

Comment on lines +81 to +91
// DataType(int code, int bits) {
// data_.code = static_cast<uint8_t>(code);
// data_.bits = static_cast<uint8_t>(bits);
// is_scalable_ = true;
// std::cout<<bits<<std::endl;
// data_.lanes = uint16_t(128) / static_cast<uint16_t>(8); // minimal lanes
//
//// if (code == kBFloat) {
//// ICHECK_EQ(bits, 16);
//// }
// }

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.

remove

bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {
int min_num_lanes = 128 / bits();

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.

macro? and does here only support vector size 128 or should be configurable between 128 - 2048?

bool is_vector_bool() const { return is_vector() && bits() == 1; }
/*! \return whether type is a Void type. */
bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

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.

doxygen comments.

bool operator==(const DataType& other) const {
return data_.code == other.data_.code && data_.bits == other.data_.bits &&
data_.lanes == other.data_.lanes;
data_.lanes == other.data_.lanes; // && is_scalable_ == other.is_scalable_;

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.

seem like no diff with original code, is the comment for "is_scalable_ == other.is_scalable" intend logic?

bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {

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.

how this function cooperate with is_scalable_? what happen if is_scalable_ is false but this function get called?

@jroesch

Copy link
Copy Markdown
Member

This PR appears to be out of date, please feel free to reopen it if this is not the case.

As part of the new year we are attempting to triage the project's open pull requests to ensure that code which
is ready for review and/or merging receives adequate attention.

Thanks again for your contribution, and feel free to reach out to discuss these changes.

@jroeschjroesch closed this Jan 19, 2022
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

@MeeraN7@mbaret@jroesch@huajsj
, '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

Adding initial SVE support to TVM - #8655

Closed
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition
Closed

Adding initial SVE support to TVM#8655
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition

Conversation

@MeeraN7

Copy link
Copy Markdown

Prototype for the addition of Arm Architecture's Scalable Vector Extension (SVE) in TVM containing initial VLA and predication implementation, based on earlier work by Giuseppe Rossini.

The RFC can be found here

Prototype containing initial VLA and predication
implementation
@MeeraN7

Copy link
Copy Markdown
Author

@mbaret

Copy link
Copy Markdown
Contributor

@tqchen@jcf94@junrushao1994 you may also be interested

@huajsjhuajsj 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 @mbaret.

Comment on lines +96 to +102
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base, stride)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros((n, stride), dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[base:] + 1)

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.

remove

Comment on lines +71 to +76
# ctx = remote.context(target)
# # launch the kernel.
# a = tvm.nd.empty((n,), A.dtype, ctx).copyfrom(np.random.uniform(size=(n, lanes)))
# c = tvm.nd.empty((n,), C.dtype, ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy() + 1)

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.

remove

Comment on lines +39 to +45
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros(n, dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[::-1][:n])

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.

remove

}

// All pattern
int all_pattern = 31;

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.

use macro?

Comment on lines +373 to +375
// auto const str_to_parse = os.str();
// auto pos = str_to_parse.find("x");
// auto stem= str_to_parse.substr(0, pos);

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.

remove

Comment on lines +81 to +91
// DataType(int code, int bits) {
// data_.code = static_cast<uint8_t>(code);
// data_.bits = static_cast<uint8_t>(bits);
// is_scalable_ = true;
// std::cout<<bits<<std::endl;
// data_.lanes = uint16_t(128) / static_cast<uint16_t>(8); // minimal lanes
//
//// if (code == kBFloat) {
//// ICHECK_EQ(bits, 16);
//// }
// }

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.

remove

bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {
int min_num_lanes = 128 / bits();

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.

macro? and does here only support vector size 128 or should be configurable between 128 - 2048?

bool is_vector_bool() const { return is_vector() && bits() == 1; }
/*! \return whether type is a Void type. */
bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

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.

doxygen comments.

bool operator==(const DataType& other) const {
return data_.code == other.data_.code && data_.bits == other.data_.bits &&
data_.lanes == other.data_.lanes;
data_.lanes == other.data_.lanes; // && is_scalable_ == other.is_scalable_;

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.

seem like no diff with original code, is the comment for "is_scalable_ == other.is_scalable" intend logic?

bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {

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.

how this function cooperate with is_scalable_? what happen if is_scalable_ is false but this function get called?

@jroesch

Copy link
Copy Markdown
Member

This PR appears to be out of date, please feel free to reopen it if this is not the case.

As part of the new year we are attempting to triage the project's open pull requests to ensure that code which
is ready for review and/or merging receives adequate attention.

Thanks again for your contribution, and feel free to reach out to discuss these changes.

@jroeschjroesch closed this Jan 19, 2022
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

@MeeraN7@mbaret@jroesch@huajsj
, '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

Adding initial SVE support to TVM - #8655

Closed
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition
Closed

Adding initial SVE support to TVM#8655
MeeraN7 wants to merge 1 commit into
apache:mainfrom
MeeraN7:initial-sve-addition

Conversation

@MeeraN7

Copy link
Copy Markdown

Prototype for the addition of Arm Architecture's Scalable Vector Extension (SVE) in TVM containing initial VLA and predication implementation, based on earlier work by Giuseppe Rossini.

The RFC can be found here

Prototype containing initial VLA and predication
implementation
@MeeraN7

Copy link
Copy Markdown
Author

@mbaret

Copy link
Copy Markdown
Contributor

@tqchen@jcf94@junrushao1994 you may also be interested

@huajsjhuajsj 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 @mbaret.

Comment on lines +96 to +102
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base, stride)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros((n, stride), dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[base:] + 1)

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.

remove

Comment on lines +71 to +76
# ctx = remote.context(target)
# # launch the kernel.
# a = tvm.nd.empty((n,), A.dtype, ctx).copyfrom(np.random.uniform(size=(n, lanes)))
# c = tvm.nd.empty((n,), C.dtype, ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy() + 1)

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.

remove

Comment on lines +39 to +45
# ctx = remote.context(target)
# # launch the kernel.
# n = nn
# a = tvm.nd.array(np.random.uniform(size=(n + base)).astype(A.dtype), ctx)
# c = tvm.nd.array(np.zeros(n, dtype=C.dtype), ctx)
# f(a, c)
# tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy()[::-1][:n])

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.

remove

}

// All pattern
int all_pattern = 31;

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.

use macro?

Comment on lines +373 to +375
// auto const str_to_parse = os.str();
// auto pos = str_to_parse.find("x");
// auto stem= str_to_parse.substr(0, pos);

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.

remove

Comment on lines +81 to +91
// DataType(int code, int bits) {
// data_.code = static_cast<uint8_t>(code);
// data_.bits = static_cast<uint8_t>(bits);
// is_scalable_ = true;
// std::cout<<bits<<std::endl;
// data_.lanes = uint16_t(128) / static_cast<uint16_t>(8); // minimal lanes
//
//// if (code == kBFloat) {
//// ICHECK_EQ(bits, 16);
//// }
// }

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.

remove

bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {
int min_num_lanes = 128 / bits();

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.

macro? and does here only support vector size 128 or should be configurable between 128 - 2048?

bool is_vector_bool() const { return is_vector() && bits() == 1; }
/*! \return whether type is a Void type. */
bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

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.

doxygen comments.

bool operator==(const DataType& other) const {
return data_.code == other.data_.code && data_.bits == other.data_.bits &&
data_.lanes == other.data_.lanes;
data_.lanes == other.data_.lanes; // && is_scalable_ == other.is_scalable_;

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.

seem like no diff with original code, is the comment for "is_scalable_ == other.is_scalable" intend logic?

bool is_void() const { return code() == DataType::kHandle && bits() == 0 && lanes() == 0; }
bool is_scalable() const { return is_scalable_; }

DataType with_scalable_lanes() const {

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.

how this function cooperate with is_scalable_? what happen if is_scalable_ is false but this function get called?

@jroesch

Copy link
Copy Markdown
Member

This PR appears to be out of date, please feel free to reopen it if this is not the case.

As part of the new year we are attempting to triage the project's open pull requests to ensure that code which
is ready for review and/or merging receives adequate attention.

Thanks again for your contribution, and feel free to reach out to discuss these changes.

@jroeschjroesch closed this Jan 19, 2022
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

@MeeraN7@mbaret@jroesch@huajsj