-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
Light up Utf8Utility.*.cs and Utf16Utility.*.cs with Vector512 code paths. #86119
Comments
Tagging subscribers to this area: @dotnet/area-meta Issue DetailsThis task is to identify potential opportunities to use @dotnet/avx512-contrib
|
@BruceForstall - Can you please link this to #77034 |
Tagging subscribers to this area: @dotnet/area-system-text-encoding Issue DetailsThis task is to identify potential opportunities to use @dotnet/avx512-contrib
|
Done. Thanks. |
@BruceForstall to better track work we did/plan to do, I have made #89280 which covers the upgrades to For this issue, I will go through and identify the upgrades that pertain directly to |
For The existing implementation has Sse2 code path and Vector128 code path, a |
This task is to identify potential opportunities to use
Vector512
in these libraries(ASCII/UTF) and addVector512
paths where possible to further accelerate using SIMD.@dotnet/avx512-contrib
See below for list of functions which have SIMD paths in them
GetPointerToFirstInvalidChar(utf16Utility.Validation.cs)
Note from Ruihan - The existing implementation has Sse2 code path and Vector128 code path, a Sse2.AddSaturate differentiates these 2 code path. We worked internally to upgrade it with Vector256/Avx2, and Vector512/Avx512 code paths, the performance for Vector256 path was fine but the upgrade was blocked by the performance issue we found on Vector512 path due to the execution unit contention between AddSaturate(VPADDUSW) and ExtractMostSignificantBits(VPMOVB2M), which leads to no performance gain compared against Vector256.
GetPointerToFirstInvalidByte(Utf8Utility.Validation.cs)
Up for grabs for community to work on
TranscodeToUtf8(Utf8Utility.Transcoding.cs)
Up for grabs for community to work on
AllBytesInVector128AreAscii(Utf8Utility.cs) , Vector128OrdinalIgnoreCaseAscii(Utf8Utility.cs)-> EqualsIgnoreCaseUtf8_Vector128(Ordinal.Utf8.cs) -> EqualsIgnoreCaseUtf8(Ordinal.Utf8.cs)
Up for grabs for community to work on
The text was updated successfully, but these errors were encountered: