') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); [Target][Codegen] Use target class in all codegens by junrushao · Pull Request #6347 · apache/tvm · GitHub
Skip to content

[Target][Codegen] Use target class in all codegens - #6347

Merged
zhiics merged 6 commits into
apache:masterfrom
junrushao:feature/2020-08-26/target-export-codegen
Aug 29, 2020
Merged

[Target][Codegen] Use target class in all codegens#6347
zhiics merged 6 commits into
apache:masterfrom
junrushao:feature/2020-08-26/target-export-codegen

Conversation

@junrushao

@junrushaojunrushao commented Aug 27, 2020

Copy link
Copy Markdown
Member

This PR uses target class to replace almost all the raw target strings in all the codegen modules. It further helps with us migration towards a robost JSON-like targets configuration, per [RFC] TVM Target Specification.

The only place that uses raw string is what is stored in tvm_target in LLVM module's metadata. In this case, we know that we only care about "mtriple", "mattr", "mcpu", "mfloat-abi", so we only store those attributes in the metadata.

CC: @comaniac@jwfromm@jroesch@tqchen

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

Also cc @zhiics@yzhliu @icemelon9

Comment threadsrc/target/llvm/codegen_amdgpu.cc Outdated
Comment threadsrc/target/llvm/codegen_nvptx.cc Outdated
Comment threadsrc/target/llvm/codegen_nvptx.cc Outdated
Comment threadsrc/target/llvm/llvm_common.cc Outdated
Comment threadsrc/target/llvm/llvm_common.cc Outdated
Comment threadsrc/target/llvm/llvm_module.cc Outdated

@zhiicszhiics left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

lgtm

@comaniaccomaniac 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

@junrushao

Copy link
Copy Markdown
MemberAuthor

The CI is green. Could you guys take another look? Thanks! @zhiics@comaniac

@zhiics
zhiics merged commit d9450f8 into apache:masterAug 29, 2020
@zhiics

Copy link
Copy Markdown
Member

Thanks @junrushao1994@comaniac

@t-vi

t-vi commented Sep 10, 2020

Copy link
Copy Markdown
Contributor

The ROCm default detection seems to have been mangled to confuse ROCm version (software) with compute arch (hardware, e.g. gfx). I'll try to fix it.

@junrushao

Copy link
Copy Markdown
MemberAuthor

@t-vi Yes, the detection logic used previously in amdgpu codegen is here: https://github.com/apache/incubator-tvm/blob/e5b793f39fd5b4f84b0aedf06aa376ebe45cf2bc/src/target/llvm/codegen_amdgpu.cc#L194. Then I moved the logic to the target constructor to reveal it at earliest stage.

@junrushao

junrushao commented Sep 10, 2020

Copy link
Copy Markdown
MemberAuthor

@t-vi I see. We should change this line: https://github.com/apache/incubator-tvm/blob/master/src/target/target_kind.cc#L176, from runtime::kApiVersion to runtime::kGcnArch . Is that correct?

@t-vi

t-vi commented Sep 10, 2020

Copy link
Copy Markdown
Contributor

I'll just send a PR in a minute or so.

kevinthesun pushed a commit to kevinthesun/tvm that referenced this pull request Sep 17, 2020
* [Target][Codegen] Make all code generator use Target class instead of target string
* Remove dep to TargetNode::str() in LLVM module
* Allow for llvm nvptx codegen
* ...
* Address comments from Cody
* Rename UpdateTargetConfig => UpdateTargetConfigKeyValueEntry
kevinthesun pushed a commit to kevinthesun/tvm that referenced this pull request Sep 18, 2020
* [Target][Codegen] Make all code generator use Target class instead of target string
* Remove dep to TargetNode::str() in LLVM module
* Allow for llvm nvptx codegen
* ...
* Address comments from Cody
* Rename UpdateTargetConfig => UpdateTargetConfigKeyValueEntry
trevor-m pushed a commit to neo-ai/tvm that referenced this pull request Sep 18, 2020
* [Target][Codegen] Make all code generator use Target class instead of target string
* Remove dep to TargetNode::str() in LLVM module
* Allow for llvm nvptx codegen
* ...
* Address comments from Cody
* Rename UpdateTargetConfig => UpdateTargetConfigKeyValueEntry
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@junrushao@zhiics@t-vi@comaniac