Skip to content
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

Implement Vector512<T> API surface for Vector512 hardware acceleration #80814

Closed
anthonycanino opened this issue Jan 18, 2023 · 3 comments
Closed
Labels
area-System.Numerics avx512 Related to the AVX-512 architecture
Milestone

Comments

@anthonycanino
Copy link
Contributor

The purpose of this task is to implemented hardware accelerated lowerings for the Vector<T> API surface for Vector512. In particular, this would allow Vector512.IsHardwareAccelerated to return true on compatible hardware. It would also allow Vector<T> to select Vector512 for its underlying implementation.

@ghost ghost added the untriaged New issue has not been triaged by the area owner label Jan 18, 2023
@ghost
Copy link

ghost commented Jan 18, 2023

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

Issue Details

The purpose of this task is to implemented hardware accelerated lowerings for the Vector<T> API surface for Vector512. In particular, this would allow Vector512.IsHardwareAccelerated to return true on compatible hardware. It would also allow Vector<T> to select Vector512 for its underlying implementation.

Author: anthonycanino
Assignees: -
Labels:

area-System.Numerics, untriaged

Milestone: -

@BruceForstall BruceForstall added this to the 8.0.0 milestone Jan 19, 2023
@ghost ghost removed the untriaged New issue has not been triaged by the area owner label Jan 19, 2023
@BruceForstall BruceForstall added the avx512 Related to the AVX-512 architecture label Jan 19, 2023
@DeepakRajendrakumaran
Copy link
Contributor

DeepakRajendrakumaran commented Mar 10, 2023

@tannergooding @anthonycanino @DeepakRajendrakumaran

Adding list of API properties/methods/operators that needs to be supported. The plan is to update this as we progress through this task

  1. Put Name to task if working or planning to work on it
  2. Mark as done once done

ASSIGNED

Intel

  • Load(), LoadAligned(), LoadAlignedNonTemporal(T), LoadUnsafe()
  • Store(), StoreAligned(), StoreAlignedNonTemporal(), StoreUnsafe()
  • AllBitsSet, One, Zero
  • Create(), CreateScalar(), CreateScalarUnsafe()
  • As(), AsByte(), AsDouble(), AsInt16(), AsInt32(), AsInt64(), AsNInt(), AsNUInt(), AsByte(), AsSingle(), AsUInt16(), AsUInt32(), AsUInt64(), AsVector(), AsVector512()
  • GetLower()
  • Comparison - GreaterThan(), GreaterThanAll(), GreaterThanAny(), GreaterThanOrEqual(), GreaterThanOrEqualAll(), GreaterThanOrEqualAny(), LessThan(), LessThanAll(), LessThanAny(), LessThanOrEqual(), LessThanOrEqualAll(), LessThanOrEqualAny(), EqualsAny()
  • ConditionalSelect()
  • Dot(), Sum()
  • Shuffle()
  • ExtractMostSignificantBits()
  • Equality() operator ==
  • Inequality() operator !=
  • Equals(), EqualsAll()
  • ConvertToDouble(), ConvertToInt64(), ConvertToUInt32(), ConvertToUInt64()
  • ConvertToInt32(), ConvertToSingle()
  • Add(), Subtract()
  • Divide(), Multiply()
  • Abs(), Negate(), Sqrt(),
  • Ceiling(), Floor()
  • ShiftLeft(), ShiftRightArithmetic(), ShiftRightLogical()
  • Max(), Min()
  • operator + (binary), operator - (binary)
  • operator /, operator *
  • operator <<, operator >>, operator >>>
  • operator + (unary), operator - (unary)

Microsoft

  • AndNot()
  • BitwiseAnd(), BitwiseOr()
  • get_Count
  • get_IsHardwareAccelerated
  • get_IsSupported
  • GetElement(), ToScalar()
  • GetUpper()
  • Narrow()
  • OnesComplement()
  • operator &, operator |, operator ^, operator ~
  • Widen()
  • WithElement()
  • WidenLower(), WidenUpper()
  • WithLower(), WithUpper()
  • Xor()

N/A

  • CopyTo(), TryCopyTo()
  • get_Item[int]
  • GetHashCode()
  • ToString()

@tannergooding
Copy link
Member

Going to close this as we now have functional parity with Vector128/256.

There are a couple of optimizations opportunities that are still available, however, and I'll open explicit issues to track those.

@ghost ghost locked as resolved and limited conversation to collaborators May 23, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-System.Numerics avx512 Related to the AVX-512 architecture
Projects
None yet
Development

No branches or pull requests

4 participants