-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[release/8.0] Numerics and Tensors backport #92245
Conversation
…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
Note regarding the 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. |
* 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.
Those commits have been added. |
Tagging subscribers to this area: @dotnet/area-system-numerics-tensors Issue DetailsBackporting the new BCL.Numerics and Tensors packages. Customer ImpactTestingRisk
|
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
M2 approved.
@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? |
|
I'll get this fixed ASAP. Looks like a couple ifdefs are missing. Must not be hit in |
I already put up the prs for it. |
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.