Skip to content

[release/8.0] Numerics and Tensors backport - #92245

Merged
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport
Sep 19, 2023
Merged

[release/8.0] Numerics and Tensors backport#92245
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport

Conversation

@michaelgsharp

@michaelgsharpmichaelgsharp commented Sep 18, 2023

Copy link
Copy Markdown
Contributor

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Adds in MathF support for older frameworks so people don't have to roll their own. This allows for us and for 3rd parties to remove duplicated code in places where we are doing this ourselves.

The Tensors code adds in some missing math features that will be able to be hardware accelerated increasing the performance.

Testing

All new API's have automated testing.

Risk

Risk should be minimal to none. the BCL package is a new package adding in MathF support to older frameworks. The Tensors package hasn't been shipped for many releases, so these changes shouldn't affect anyone. And since we aren't changing existing API's, new automated testing should be enough to mitigated any risks.

michaelgsharpand others added 6 commits September 18, 2023 14:18
…otnet#91228)
* Adding a naive implementation of various primitive tensor operations
* Adding tests covering the new tensor primitives APIs
* Adding tensor primitives APIs to the ref assembly
* Allow .NET Framework to build/run
* Sync TFMs between ref and src, csproj simplication and clean-up
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* Don't use var
* Fix the S.N.Tensors readme and remove the file marking it as non-shipping
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Michael Sharp <51342856+michaelgsharp@users.noreply.github.com>
* Start vectorizing TensorPrimitives
Just does two functions to establish the files into which the rest of the implementations can be moved.
* 6 more naive methods
* updates from pr comments
* Add remaining set of TensorPrimitives APIs for .NET 8
Adds non-vectorized implementations of:
- Max
- Min
- MaxMagnitude
- MinMagnitude
- IndexOfMax
- IndexOfMin
- IndexOfMaxMagnitude
- ConvertToHalf (only on .NET Core)
- ConvertToSingle (only on .NET Core)
- IndexOfMinMagnitude
Adds vectorized implementations of:
- Sum
- SumOfSquares
- SumOfMagnitudes
- Product
- ProductOfSums
- ProductOfDifferences
Also includes the helpers that'll make it trivial to vectorize Dot.
Beyond vectorizing the non-vectorized ones, the vectorized implementations should be improved further, including:
- Handling alignment better
- Vectorizing the remainder that doesn't fit in a vector rather than falling back to scalar
* Cleanup after previous PR, vectorize CosineSimilarity/Dot/L2Normalize/Distance, add tests
* Address PR feedback, and fix a few other issues
@ghostghost added needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners new-api-needs-documentation labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

Comment threadsrc/libraries/Microsoft.Bcl.Numerics/src/PACKAGE.md
@ericstjericstj changed the title Numerics and Tensors backport[release/8.0] Numerics and Tensors backportSep 18, 2023
@ericstj

Copy link
Copy Markdown
Member

I think you are missing the following commits:
2dfee0f
91ac6b3

michaelgsharpand others added 2 commits September 18, 2023 15:04
* bcl numberics library added
* bcl done
* added explicit 2.1 target
* Minor doc updates
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* fixes from PR comments
* minor csproj fixes
* fixed ref target frameworks
* minor ref csproj updates
* minor csproj updates
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
…mSource. (dotnet#91402)
* Microsoft.Bcl.Numerics.Tests: fix restore failure when DotNetBuildFromSource.
* Use NetCoreAppCurrent.
* Try fix CI test failures.
@michaelgsharp

Copy link
Copy Markdown
ContributorAuthor

Those commits have been added.

@ericstjericstj added area-System.Numerics.Tensors Servicing-consider Issue for next servicing release review and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/area-system-numerics-tensors
See info in area-owners.md if you want to be subscribed.

Issue Details

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Testing

Risk

Author:michaelgsharp
Assignees:michaelgsharp
Labels:

area-System.Numerics.Tensors, new-api-needs-documentation

Milestone:-

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

Approve of this feature for RC2. @artl93 please give it your ack.

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

M2 approved.

@artl93
artl93 self-requested a review September 19, 2023 00:19
@artl93artl93 added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Sep 19, 2023
@ericstj
ericstj merged commit 4b7c754 into dotnet:release/8.0Sep 19, 2023
@carlossanlop

Copy link
Copy Markdown
Contributor

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

@stephentoub

Copy link
Copy Markdown
Member

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

#92269
#92270

@ericstj

ericstj commented Sep 19, 2023

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing. Must not be hit in main due to different target frameworks 🤔

@stephentoub

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing.

I already put up the prs for it.

@radicalradical mentioned this pull request Sep 26, 2023
@radicalradical mentioned this pull request Oct 3, 2023
@ghostghost locked as resolved and limited conversation to collaborators Oct 19, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@michaelgsharp@ericstj@carlossanlop@stephentoub@jeffhandley@artl93@tannergooding@tmds
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[release/8.0] Numerics and Tensors backport by michaelgsharp · Pull Request #92245 · dotnet/runtime · GitHub
Skip to content

[release/8.0] Numerics and Tensors backport - #92245

Merged
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport
Sep 19, 2023
Merged

[release/8.0] Numerics and Tensors backport#92245
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport

Conversation

@michaelgsharp

@michaelgsharpmichaelgsharp commented Sep 18, 2023

Copy link
Copy Markdown
Contributor

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Adds in MathF support for older frameworks so people don't have to roll their own. This allows for us and for 3rd parties to remove duplicated code in places where we are doing this ourselves.

The Tensors code adds in some missing math features that will be able to be hardware accelerated increasing the performance.

Testing

All new API's have automated testing.

Risk

Risk should be minimal to none. the BCL package is a new package adding in MathF support to older frameworks. The Tensors package hasn't been shipped for many releases, so these changes shouldn't affect anyone. And since we aren't changing existing API's, new automated testing should be enough to mitigated any risks.

michaelgsharpand others added 6 commits September 18, 2023 14:18
…otnet#91228)
* Adding a naive implementation of various primitive tensor operations
* Adding tests covering the new tensor primitives APIs
* Adding tensor primitives APIs to the ref assembly
* Allow .NET Framework to build/run
* Sync TFMs between ref and src, csproj simplication and clean-up
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* Don't use var
* Fix the S.N.Tensors readme and remove the file marking it as non-shipping
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Michael Sharp <51342856+michaelgsharp@users.noreply.github.com>
* Start vectorizing TensorPrimitives
Just does two functions to establish the files into which the rest of the implementations can be moved.
* 6 more naive methods
* updates from pr comments
* Add remaining set of TensorPrimitives APIs for .NET 8
Adds non-vectorized implementations of:
- Max
- Min
- MaxMagnitude
- MinMagnitude
- IndexOfMax
- IndexOfMin
- IndexOfMaxMagnitude
- ConvertToHalf (only on .NET Core)
- ConvertToSingle (only on .NET Core)
- IndexOfMinMagnitude
Adds vectorized implementations of:
- Sum
- SumOfSquares
- SumOfMagnitudes
- Product
- ProductOfSums
- ProductOfDifferences
Also includes the helpers that'll make it trivial to vectorize Dot.
Beyond vectorizing the non-vectorized ones, the vectorized implementations should be improved further, including:
- Handling alignment better
- Vectorizing the remainder that doesn't fit in a vector rather than falling back to scalar
* Cleanup after previous PR, vectorize CosineSimilarity/Dot/L2Normalize/Distance, add tests
* Address PR feedback, and fix a few other issues
@ghostghost added needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners new-api-needs-documentation labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

Comment threadsrc/libraries/Microsoft.Bcl.Numerics/src/PACKAGE.md
@ericstjericstj changed the title Numerics and Tensors backport[release/8.0] Numerics and Tensors backportSep 18, 2023
@ericstj

Copy link
Copy Markdown
Member

I think you are missing the following commits:
2dfee0f
91ac6b3

michaelgsharpand others added 2 commits September 18, 2023 15:04
* bcl numberics library added
* bcl done
* added explicit 2.1 target
* Minor doc updates
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* fixes from PR comments
* minor csproj fixes
* fixed ref target frameworks
* minor ref csproj updates
* minor csproj updates
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
…mSource. (dotnet#91402)
* Microsoft.Bcl.Numerics.Tests: fix restore failure when DotNetBuildFromSource.
* Use NetCoreAppCurrent.
* Try fix CI test failures.
@michaelgsharp

Copy link
Copy Markdown
ContributorAuthor

Those commits have been added.

@ericstjericstj added area-System.Numerics.Tensors Servicing-consider Issue for next servicing release review and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/area-system-numerics-tensors
See info in area-owners.md if you want to be subscribed.

Issue Details

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Testing

Risk

Author:michaelgsharp
Assignees:michaelgsharp
Labels:

area-System.Numerics.Tensors, new-api-needs-documentation

Milestone:-

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

Approve of this feature for RC2. @artl93 please give it your ack.

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

M2 approved.

@artl93
artl93 self-requested a review September 19, 2023 00:19
@artl93artl93 added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Sep 19, 2023
@ericstj
ericstj merged commit 4b7c754 into dotnet:release/8.0Sep 19, 2023
@carlossanlop

Copy link
Copy Markdown
Contributor

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

@stephentoub

Copy link
Copy Markdown
Member

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

#92269
#92270

@ericstj

ericstj commented Sep 19, 2023

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing. Must not be hit in main due to different target frameworks 🤔

@stephentoub

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing.

I already put up the prs for it.

@radicalradical mentioned this pull request Sep 26, 2023
@radicalradical mentioned this pull request Oct 3, 2023
@ghostghost locked as resolved and limited conversation to collaborators Oct 19, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@michaelgsharp@ericstj@carlossanlop@stephentoub@jeffhandley@artl93@tannergooding@tmds
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [release/8.0] Numerics and Tensors backport by michaelgsharp · Pull Request #92245 · dotnet/runtime · GitHub
Skip to content

[release/8.0] Numerics and Tensors backport - #92245

Merged
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport
Sep 19, 2023
Merged

[release/8.0] Numerics and Tensors backport#92245
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport

Conversation

@michaelgsharp

@michaelgsharpmichaelgsharp commented Sep 18, 2023

Copy link
Copy Markdown
Contributor

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Adds in MathF support for older frameworks so people don't have to roll their own. This allows for us and for 3rd parties to remove duplicated code in places where we are doing this ourselves.

The Tensors code adds in some missing math features that will be able to be hardware accelerated increasing the performance.

Testing

All new API's have automated testing.

Risk

Risk should be minimal to none. the BCL package is a new package adding in MathF support to older frameworks. The Tensors package hasn't been shipped for many releases, so these changes shouldn't affect anyone. And since we aren't changing existing API's, new automated testing should be enough to mitigated any risks.

michaelgsharpand others added 6 commits September 18, 2023 14:18
…otnet#91228)
* Adding a naive implementation of various primitive tensor operations
* Adding tests covering the new tensor primitives APIs
* Adding tensor primitives APIs to the ref assembly
* Allow .NET Framework to build/run
* Sync TFMs between ref and src, csproj simplication and clean-up
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* Don't use var
* Fix the S.N.Tensors readme and remove the file marking it as non-shipping
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Michael Sharp <51342856+michaelgsharp@users.noreply.github.com>
* Start vectorizing TensorPrimitives
Just does two functions to establish the files into which the rest of the implementations can be moved.
* 6 more naive methods
* updates from pr comments
* Add remaining set of TensorPrimitives APIs for .NET 8
Adds non-vectorized implementations of:
- Max
- Min
- MaxMagnitude
- MinMagnitude
- IndexOfMax
- IndexOfMin
- IndexOfMaxMagnitude
- ConvertToHalf (only on .NET Core)
- ConvertToSingle (only on .NET Core)
- IndexOfMinMagnitude
Adds vectorized implementations of:
- Sum
- SumOfSquares
- SumOfMagnitudes
- Product
- ProductOfSums
- ProductOfDifferences
Also includes the helpers that'll make it trivial to vectorize Dot.
Beyond vectorizing the non-vectorized ones, the vectorized implementations should be improved further, including:
- Handling alignment better
- Vectorizing the remainder that doesn't fit in a vector rather than falling back to scalar
* Cleanup after previous PR, vectorize CosineSimilarity/Dot/L2Normalize/Distance, add tests
* Address PR feedback, and fix a few other issues
@ghostghost added needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners new-api-needs-documentation labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

Comment threadsrc/libraries/Microsoft.Bcl.Numerics/src/PACKAGE.md
@ericstjericstj changed the title Numerics and Tensors backport[release/8.0] Numerics and Tensors backportSep 18, 2023
@ericstj

Copy link
Copy Markdown
Member

I think you are missing the following commits:
2dfee0f
91ac6b3

michaelgsharpand others added 2 commits September 18, 2023 15:04
* bcl numberics library added
* bcl done
* added explicit 2.1 target
* Minor doc updates
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* fixes from PR comments
* minor csproj fixes
* fixed ref target frameworks
* minor ref csproj updates
* minor csproj updates
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
…mSource. (dotnet#91402)
* Microsoft.Bcl.Numerics.Tests: fix restore failure when DotNetBuildFromSource.
* Use NetCoreAppCurrent.
* Try fix CI test failures.
@michaelgsharp

Copy link
Copy Markdown
ContributorAuthor

Those commits have been added.

@ericstjericstj added area-System.Numerics.Tensors Servicing-consider Issue for next servicing release review and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/area-system-numerics-tensors
See info in area-owners.md if you want to be subscribed.

Issue Details

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Testing

Risk

Author:michaelgsharp
Assignees:michaelgsharp
Labels:

area-System.Numerics.Tensors, new-api-needs-documentation

Milestone:-

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

Approve of this feature for RC2. @artl93 please give it your ack.

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

M2 approved.

@artl93
artl93 self-requested a review September 19, 2023 00:19
@artl93artl93 added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Sep 19, 2023
@ericstj
ericstj merged commit 4b7c754 into dotnet:release/8.0Sep 19, 2023
@carlossanlop

Copy link
Copy Markdown
Contributor

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

@stephentoub

Copy link
Copy Markdown
Member

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

#92269
#92270

@ericstj

ericstj commented Sep 19, 2023

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing. Must not be hit in main due to different target frameworks 🤔

@stephentoub

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing.

I already put up the prs for it.

@radicalradical mentioned this pull request Sep 26, 2023
@radicalradical mentioned this pull request Oct 3, 2023
@ghostghost locked as resolved and limited conversation to collaborators Oct 19, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@michaelgsharp@ericstj@carlossanlop@stephentoub@jeffhandley@artl93@tannergooding@tmds
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', '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('^' + ".*" + ' [release/8.0] Numerics and Tensors backport by michaelgsharp · Pull Request #92245 · dotnet/runtime · GitHub
Skip to content

[release/8.0] Numerics and Tensors backport - #92245

Merged
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport
Sep 19, 2023
Merged

[release/8.0] Numerics and Tensors backport#92245
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport

Conversation

@michaelgsharp

@michaelgsharpmichaelgsharp commented Sep 18, 2023

Copy link
Copy Markdown
Contributor

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Adds in MathF support for older frameworks so people don't have to roll their own. This allows for us and for 3rd parties to remove duplicated code in places where we are doing this ourselves.

The Tensors code adds in some missing math features that will be able to be hardware accelerated increasing the performance.

Testing

All new API's have automated testing.

Risk

Risk should be minimal to none. the BCL package is a new package adding in MathF support to older frameworks. The Tensors package hasn't been shipped for many releases, so these changes shouldn't affect anyone. And since we aren't changing existing API's, new automated testing should be enough to mitigated any risks.

michaelgsharpand others added 6 commits September 18, 2023 14:18
…otnet#91228)
* Adding a naive implementation of various primitive tensor operations
* Adding tests covering the new tensor primitives APIs
* Adding tensor primitives APIs to the ref assembly
* Allow .NET Framework to build/run
* Sync TFMs between ref and src, csproj simplication and clean-up
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* Don't use var
* Fix the S.N.Tensors readme and remove the file marking it as non-shipping
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Michael Sharp <51342856+michaelgsharp@users.noreply.github.com>
* Start vectorizing TensorPrimitives
Just does two functions to establish the files into which the rest of the implementations can be moved.
* 6 more naive methods
* updates from pr comments
* Add remaining set of TensorPrimitives APIs for .NET 8
Adds non-vectorized implementations of:
- Max
- Min
- MaxMagnitude
- MinMagnitude
- IndexOfMax
- IndexOfMin
- IndexOfMaxMagnitude
- ConvertToHalf (only on .NET Core)
- ConvertToSingle (only on .NET Core)
- IndexOfMinMagnitude
Adds vectorized implementations of:
- Sum
- SumOfSquares
- SumOfMagnitudes
- Product
- ProductOfSums
- ProductOfDifferences
Also includes the helpers that'll make it trivial to vectorize Dot.
Beyond vectorizing the non-vectorized ones, the vectorized implementations should be improved further, including:
- Handling alignment better
- Vectorizing the remainder that doesn't fit in a vector rather than falling back to scalar
* Cleanup after previous PR, vectorize CosineSimilarity/Dot/L2Normalize/Distance, add tests
* Address PR feedback, and fix a few other issues
@ghostghost added needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners new-api-needs-documentation labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

Comment threadsrc/libraries/Microsoft.Bcl.Numerics/src/PACKAGE.md
@ericstjericstj changed the title Numerics and Tensors backport[release/8.0] Numerics and Tensors backportSep 18, 2023
@ericstj

Copy link
Copy Markdown
Member

I think you are missing the following commits:
2dfee0f
91ac6b3

michaelgsharpand others added 2 commits September 18, 2023 15:04
* bcl numberics library added
* bcl done
* added explicit 2.1 target
* Minor doc updates
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* fixes from PR comments
* minor csproj fixes
* fixed ref target frameworks
* minor ref csproj updates
* minor csproj updates
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
…mSource. (dotnet#91402)
* Microsoft.Bcl.Numerics.Tests: fix restore failure when DotNetBuildFromSource.
* Use NetCoreAppCurrent.
* Try fix CI test failures.
@michaelgsharp

Copy link
Copy Markdown
ContributorAuthor

Those commits have been added.

@ericstjericstj added area-System.Numerics.Tensors Servicing-consider Issue for next servicing release review and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/area-system-numerics-tensors
See info in area-owners.md if you want to be subscribed.

Issue Details

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Testing

Risk

Author:michaelgsharp
Assignees:michaelgsharp
Labels:

area-System.Numerics.Tensors, new-api-needs-documentation

Milestone:-

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

Approve of this feature for RC2. @artl93 please give it your ack.

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

M2 approved.

@artl93
artl93 self-requested a review September 19, 2023 00:19
@artl93artl93 added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Sep 19, 2023
@ericstj
ericstj merged commit 4b7c754 into dotnet:release/8.0Sep 19, 2023
@carlossanlop

Copy link
Copy Markdown
Contributor

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

@stephentoub

Copy link
Copy Markdown
Member

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

#92269
#92270

@ericstj

ericstj commented Sep 19, 2023

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing. Must not be hit in main due to different target frameworks 🤔

@stephentoub

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing.

I already put up the prs for it.

@radicalradical mentioned this pull request Sep 26, 2023
@radicalradical mentioned this pull request Oct 3, 2023
@ghostghost locked as resolved and limited conversation to collaborators Oct 19, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@michaelgsharp@ericstj@carlossanlop@stephentoub@jeffhandley@artl93@tannergooding@tmds
, '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" + ' [release/8.0] Numerics and Tensors backport by michaelgsharp · Pull Request #92245 · dotnet/runtime · GitHub
Skip to content

[release/8.0] Numerics and Tensors backport - #92245

Merged
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport
Sep 19, 2023
Merged

[release/8.0] Numerics and Tensors backport#92245
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport

Conversation

@michaelgsharp

@michaelgsharpmichaelgsharp commented Sep 18, 2023

Copy link
Copy Markdown
Contributor

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Adds in MathF support for older frameworks so people don't have to roll their own. This allows for us and for 3rd parties to remove duplicated code in places where we are doing this ourselves.

The Tensors code adds in some missing math features that will be able to be hardware accelerated increasing the performance.

Testing

All new API's have automated testing.

Risk

Risk should be minimal to none. the BCL package is a new package adding in MathF support to older frameworks. The Tensors package hasn't been shipped for many releases, so these changes shouldn't affect anyone. And since we aren't changing existing API's, new automated testing should be enough to mitigated any risks.

michaelgsharpand others added 6 commits September 18, 2023 14:18
…otnet#91228)
* Adding a naive implementation of various primitive tensor operations
* Adding tests covering the new tensor primitives APIs
* Adding tensor primitives APIs to the ref assembly
* Allow .NET Framework to build/run
* Sync TFMs between ref and src, csproj simplication and clean-up
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* Don't use var
* Fix the S.N.Tensors readme and remove the file marking it as non-shipping
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Michael Sharp <51342856+michaelgsharp@users.noreply.github.com>
* Start vectorizing TensorPrimitives
Just does two functions to establish the files into which the rest of the implementations can be moved.
* 6 more naive methods
* updates from pr comments
* Add remaining set of TensorPrimitives APIs for .NET 8
Adds non-vectorized implementations of:
- Max
- Min
- MaxMagnitude
- MinMagnitude
- IndexOfMax
- IndexOfMin
- IndexOfMaxMagnitude
- ConvertToHalf (only on .NET Core)
- ConvertToSingle (only on .NET Core)
- IndexOfMinMagnitude
Adds vectorized implementations of:
- Sum
- SumOfSquares
- SumOfMagnitudes
- Product
- ProductOfSums
- ProductOfDifferences
Also includes the helpers that'll make it trivial to vectorize Dot.
Beyond vectorizing the non-vectorized ones, the vectorized implementations should be improved further, including:
- Handling alignment better
- Vectorizing the remainder that doesn't fit in a vector rather than falling back to scalar
* Cleanup after previous PR, vectorize CosineSimilarity/Dot/L2Normalize/Distance, add tests
* Address PR feedback, and fix a few other issues
@ghostghost added needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners new-api-needs-documentation labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

Comment threadsrc/libraries/Microsoft.Bcl.Numerics/src/PACKAGE.md
@ericstjericstj changed the title Numerics and Tensors backport[release/8.0] Numerics and Tensors backportSep 18, 2023
@ericstj

Copy link
Copy Markdown
Member

I think you are missing the following commits:
2dfee0f
91ac6b3

michaelgsharpand others added 2 commits September 18, 2023 15:04
* bcl numberics library added
* bcl done
* added explicit 2.1 target
* Minor doc updates
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* fixes from PR comments
* minor csproj fixes
* fixed ref target frameworks
* minor ref csproj updates
* minor csproj updates
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
…mSource. (dotnet#91402)
* Microsoft.Bcl.Numerics.Tests: fix restore failure when DotNetBuildFromSource.
* Use NetCoreAppCurrent.
* Try fix CI test failures.
@michaelgsharp

Copy link
Copy Markdown
ContributorAuthor

Those commits have been added.

@ericstjericstj added area-System.Numerics.Tensors Servicing-consider Issue for next servicing release review and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/area-system-numerics-tensors
See info in area-owners.md if you want to be subscribed.

Issue Details

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Testing

Risk

Author:michaelgsharp
Assignees:michaelgsharp
Labels:

area-System.Numerics.Tensors, new-api-needs-documentation

Milestone:-

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

Approve of this feature for RC2. @artl93 please give it your ack.

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

M2 approved.

@artl93
artl93 self-requested a review September 19, 2023 00:19
@artl93artl93 added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Sep 19, 2023
@ericstj
ericstj merged commit 4b7c754 into dotnet:release/8.0Sep 19, 2023
@carlossanlop

Copy link
Copy Markdown
Contributor

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

@stephentoub

Copy link
Copy Markdown
Member

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

#92269
#92270

@ericstj

ericstj commented Sep 19, 2023

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing. Must not be hit in main due to different target frameworks 🤔

@stephentoub

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing.

I already put up the prs for it.

@radicalradical mentioned this pull request Sep 26, 2023
@radicalradical mentioned this pull request Oct 3, 2023
@ghostghost locked as resolved and limited conversation to collaborators Oct 19, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@michaelgsharp@ericstj@carlossanlop@stephentoub@jeffhandley@artl93@tannergooding@tmds
, '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('^' + ".*" + ' [release/8.0] Numerics and Tensors backport by michaelgsharp · Pull Request #92245 · dotnet/runtime · GitHub
Skip to content

[release/8.0] Numerics and Tensors backport - #92245

Merged
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport
Sep 19, 2023
Merged

[release/8.0] Numerics and Tensors backport#92245
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport

Conversation

@michaelgsharp

@michaelgsharpmichaelgsharp commented Sep 18, 2023

Copy link
Copy Markdown
Contributor

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Adds in MathF support for older frameworks so people don't have to roll their own. This allows for us and for 3rd parties to remove duplicated code in places where we are doing this ourselves.

The Tensors code adds in some missing math features that will be able to be hardware accelerated increasing the performance.

Testing

All new API's have automated testing.

Risk

Risk should be minimal to none. the BCL package is a new package adding in MathF support to older frameworks. The Tensors package hasn't been shipped for many releases, so these changes shouldn't affect anyone. And since we aren't changing existing API's, new automated testing should be enough to mitigated any risks.

michaelgsharpand others added 6 commits September 18, 2023 14:18
…otnet#91228)
* Adding a naive implementation of various primitive tensor operations
* Adding tests covering the new tensor primitives APIs
* Adding tensor primitives APIs to the ref assembly
* Allow .NET Framework to build/run
* Sync TFMs between ref and src, csproj simplication and clean-up
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* Don't use var
* Fix the S.N.Tensors readme and remove the file marking it as non-shipping
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Michael Sharp <51342856+michaelgsharp@users.noreply.github.com>
* Start vectorizing TensorPrimitives
Just does two functions to establish the files into which the rest of the implementations can be moved.
* 6 more naive methods
* updates from pr comments
* Add remaining set of TensorPrimitives APIs for .NET 8
Adds non-vectorized implementations of:
- Max
- Min
- MaxMagnitude
- MinMagnitude
- IndexOfMax
- IndexOfMin
- IndexOfMaxMagnitude
- ConvertToHalf (only on .NET Core)
- ConvertToSingle (only on .NET Core)
- IndexOfMinMagnitude
Adds vectorized implementations of:
- Sum
- SumOfSquares
- SumOfMagnitudes
- Product
- ProductOfSums
- ProductOfDifferences
Also includes the helpers that'll make it trivial to vectorize Dot.
Beyond vectorizing the non-vectorized ones, the vectorized implementations should be improved further, including:
- Handling alignment better
- Vectorizing the remainder that doesn't fit in a vector rather than falling back to scalar
* Cleanup after previous PR, vectorize CosineSimilarity/Dot/L2Normalize/Distance, add tests
* Address PR feedback, and fix a few other issues
@ghostghost added needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners new-api-needs-documentation labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

Comment threadsrc/libraries/Microsoft.Bcl.Numerics/src/PACKAGE.md
@ericstjericstj changed the title Numerics and Tensors backport[release/8.0] Numerics and Tensors backportSep 18, 2023
@ericstj

Copy link
Copy Markdown
Member

I think you are missing the following commits:
2dfee0f
91ac6b3

michaelgsharpand others added 2 commits September 18, 2023 15:04
* bcl numberics library added
* bcl done
* added explicit 2.1 target
* Minor doc updates
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* fixes from PR comments
* minor csproj fixes
* fixed ref target frameworks
* minor ref csproj updates
* minor csproj updates
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
…mSource. (dotnet#91402)
* Microsoft.Bcl.Numerics.Tests: fix restore failure when DotNetBuildFromSource.
* Use NetCoreAppCurrent.
* Try fix CI test failures.
@michaelgsharp

Copy link
Copy Markdown
ContributorAuthor

Those commits have been added.

@ericstjericstj added area-System.Numerics.Tensors Servicing-consider Issue for next servicing release review and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/area-system-numerics-tensors
See info in area-owners.md if you want to be subscribed.

Issue Details

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Testing

Risk

Author:michaelgsharp
Assignees:michaelgsharp
Labels:

area-System.Numerics.Tensors, new-api-needs-documentation

Milestone:-

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

Approve of this feature for RC2. @artl93 please give it your ack.

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

M2 approved.

@artl93
artl93 self-requested a review September 19, 2023 00:19
@artl93artl93 added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Sep 19, 2023
@ericstj
ericstj merged commit 4b7c754 into dotnet:release/8.0Sep 19, 2023
@carlossanlop

Copy link
Copy Markdown
Contributor

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

@stephentoub

Copy link
Copy Markdown
Member

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

#92269
#92270

@ericstj

ericstj commented Sep 19, 2023

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing. Must not be hit in main due to different target frameworks 🤔

@stephentoub

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing.

I already put up the prs for it.

@radicalradical mentioned this pull request Sep 26, 2023
@radicalradical mentioned this pull request Oct 3, 2023
@ghostghost locked as resolved and limited conversation to collaborators Oct 19, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@michaelgsharp@ericstj@carlossanlop@stephentoub@jeffhandley@artl93@tannergooding@tmds
, '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); } })(); })(); [release/8.0] Numerics and Tensors backport by michaelgsharp · Pull Request #92245 · dotnet/runtime · GitHub
Skip to content

[release/8.0] Numerics and Tensors backport - #92245

Merged
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport
Sep 19, 2023
Merged

[release/8.0] Numerics and Tensors backport#92245
ericstj merged 9 commits into
dotnet:release/8.0from
michaelgsharp:numerics-backport

Conversation

@michaelgsharp

@michaelgsharpmichaelgsharp commented Sep 18, 2023

Copy link
Copy Markdown
Contributor

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Adds in MathF support for older frameworks so people don't have to roll their own. This allows for us and for 3rd parties to remove duplicated code in places where we are doing this ourselves.

The Tensors code adds in some missing math features that will be able to be hardware accelerated increasing the performance.

Testing

All new API's have automated testing.

Risk

Risk should be minimal to none. the BCL package is a new package adding in MathF support to older frameworks. The Tensors package hasn't been shipped for many releases, so these changes shouldn't affect anyone. And since we aren't changing existing API's, new automated testing should be enough to mitigated any risks.

michaelgsharpand others added 6 commits September 18, 2023 14:18
…otnet#91228)
* Adding a naive implementation of various primitive tensor operations
* Adding tests covering the new tensor primitives APIs
* Adding tensor primitives APIs to the ref assembly
* Allow .NET Framework to build/run
* Sync TFMs between ref and src, csproj simplication and clean-up
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* Don't use var
* Fix the S.N.Tensors readme and remove the file marking it as non-shipping
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Michael Sharp <51342856+michaelgsharp@users.noreply.github.com>
* Start vectorizing TensorPrimitives
Just does two functions to establish the files into which the rest of the implementations can be moved.
* 6 more naive methods
* updates from pr comments
* Add remaining set of TensorPrimitives APIs for .NET 8
Adds non-vectorized implementations of:
- Max
- Min
- MaxMagnitude
- MinMagnitude
- IndexOfMax
- IndexOfMin
- IndexOfMaxMagnitude
- ConvertToHalf (only on .NET Core)
- ConvertToSingle (only on .NET Core)
- IndexOfMinMagnitude
Adds vectorized implementations of:
- Sum
- SumOfSquares
- SumOfMagnitudes
- Product
- ProductOfSums
- ProductOfDifferences
Also includes the helpers that'll make it trivial to vectorize Dot.
Beyond vectorizing the non-vectorized ones, the vectorized implementations should be improved further, including:
- Handling alignment better
- Vectorizing the remainder that doesn't fit in a vector rather than falling back to scalar
* Cleanup after previous PR, vectorize CosineSimilarity/Dot/L2Normalize/Distance, add tests
* Address PR feedback, and fix a few other issues
@ghostghost added needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners new-api-needs-documentation labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

Comment threadsrc/libraries/Microsoft.Bcl.Numerics/src/PACKAGE.md
@ericstjericstj changed the title Numerics and Tensors backport[release/8.0] Numerics and Tensors backportSep 18, 2023
@ericstj

Copy link
Copy Markdown
Member

I think you are missing the following commits:
2dfee0f
91ac6b3

michaelgsharpand others added 2 commits September 18, 2023 15:04
* bcl numberics library added
* bcl done
* added explicit 2.1 target
* Minor doc updates
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* fixes from PR comments
* minor csproj fixes
* fixed ref target frameworks
* minor ref csproj updates
* minor csproj updates
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
…mSource. (dotnet#91402)
* Microsoft.Bcl.Numerics.Tests: fix restore failure when DotNetBuildFromSource.
* Use NetCoreAppCurrent.
* Try fix CI test failures.
@michaelgsharp

Copy link
Copy Markdown
ContributorAuthor

Those commits have been added.

@ericstjericstj added area-System.Numerics.Tensors Servicing-consider Issue for next servicing release review and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Sep 18, 2023
@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/area-system-numerics-tensors
See info in area-owners.md if you want to be subscribed.

Issue Details

Backporting the new BCL.Numerics and Tensors packages.

Customer Impact

Testing

Risk

Author:michaelgsharp
Assignees:michaelgsharp
Labels:

area-System.Numerics.Tensors, new-api-needs-documentation

Milestone:-

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

Approve of this feature for RC2. @artl93 please give it your ack.

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

M2 approved.

@artl93
artl93 self-requested a review September 19, 2023 00:19
@artl93artl93 added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Sep 19, 2023
@ericstj
ericstj merged commit 4b7c754 into dotnet:release/8.0Sep 19, 2023
@carlossanlop

Copy link
Copy Markdown
Contributor

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

@stephentoub

Copy link
Copy Markdown
Member

@michaelgsharp the CI failed in this PR: some Tensors types are not found. Can you please take a look tomorrow, since it's affecting the release/8.0 branch?

#92269
#92270

@ericstj

ericstj commented Sep 19, 2023

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing. Must not be hit in main due to different target frameworks 🤔

@stephentoub

Copy link
Copy Markdown
Member

I'll get this fixed ASAP. Looks like a couple ifdefs are missing.

I already put up the prs for it.

@radicalradical mentioned this pull request Sep 26, 2023
@radicalradical mentioned this pull request Oct 3, 2023
@ghostghost locked as resolved and limited conversation to collaborators Oct 19, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@michaelgsharp@ericstj@carlossanlop@stephentoub@jeffhandley@artl93@tannergooding@tmds