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

Port C# key hardware intrinsics APIs for SSE from SIMD native algorithms #562

Merged
merged 43 commits into from
Aug 6, 2018
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
ff5ae22
Implemented SSE support and software fallbacks for key intrinsics
briancylui Jun 29, 2018
8fc9b18
Implemented unit tests for key intrinsics with passing results
briancylui Jun 29, 2018
8e8090d
Implemented performance tests on some key intrinsics with BenchmarkDo…
briancylui Jun 29, 2018
6b3660c
Fixed array pinning issues and solved unreported latency of NativeDotSU
briancylui Jun 30, 2018
aa5ee2a
Minor syntax change for style consistency in fixed statements
briancylui Jul 1, 2018
f096eb5
Implemented performance tests for all key intrinsics
briancylui Jul 1, 2018
40def43
Simulated user performance with large inputs
briancylui Jul 3, 2018
a8f2726
Allow CpuMath to reference C# Hardware Intrinsics APIs.
eerhardt Jul 10, 2018
9355547
Added files for the hierarchical framework to prepare for multi-targe…
briancylui Jul 11, 2018
e617f05
Removed the redundant CpuMathUtils.cs file.
briancylui Jul 12, 2018
94751d1
Cleaned up the primitive build constant for featuring intrinsics
briancylui Jul 17, 2018
7a55fcc
Created a new helper class holding C# implementations of SSE intrinsi…
briancylui Jul 17, 2018
f76a028
Minor change in naming of variables
briancylui Jul 18, 2018
b84047a
Implemented more SSE intrinsics
briancylui Jul 19, 2018
bdd41dd
Changed version number of .NET Core App as target framework
briancylui Jul 19, 2018
55dffa5
Cleaned up unit test file that needs to be split into two for multi-t…
briancylui Jul 19, 2018
a636173
Fixed seed in performance tests
briancylui Jul 19, 2018
27a042a
Cleaned up unreferenced namespaces
briancylui Jul 19, 2018
27e79a2
Split unit tests into two projects for multi-targetting
briancylui Jul 19, 2018
2d8f373
Cleaned up new intrinsics that are not yet tested to prepare for PR
briancylui Jul 19, 2018
6c3a3e7
Minor style changes
briancylui Jul 20, 2018
8f1ef4c
Added the solution package that includes multi-targeting with UseIntr…
briancylui Jul 20, 2018
cf1e0d0
Included all files in the CpuMath project for display in Visual Studi…
briancylui Jul 20, 2018
f0f81a5
Removed irrelevant build line from CpuMath
briancylui Jul 20, 2018
29ef073
Response to PR review
briancylui Jul 30, 2018
584bb45
Removed deprecated src\Native\CpuMath working folder
briancylui Jul 30, 2018
7d1f6d1
Removed unnecessary references in unit tests
briancylui Jul 30, 2018
4191c6b
Minor style changes
briancylui Jul 30, 2018
aa28480
Fixed SLN file
briancylui Jul 30, 2018
4e50945
Merge with dotnet/master
briancylui Jul 30, 2018
6ef42da
Fixed build error with netcoreapp3.0 not supported
briancylui Jul 30, 2018
ff83d66
Minor style fixes
briancylui Jul 31, 2018
2537f2d
Skip netcoreapp3.0 projects when not building for intrinsics
briancylui Jul 31, 2018
fa821aa
Merge with dotnet/master
briancylui Jul 31, 2018
c6f5f85
Exclude netcoreapp3.0 tests from running by overriding VSTest target
briancylui Jul 31, 2018
0a50f46
Second response to PR feedback
briancylui Jul 31, 2018
946d425
Removed NETCoreAppMaximumVersion tags with modification
briancylui Aug 1, 2018
f3ff9b4
Moved VSTest targets to Empty.targets, and parsed -Intrinsics configs…
briancylui Aug 2, 2018
f7f5fef
Modified VectorSum to fix perf results
briancylui Aug 3, 2018
5a42d5d
Modified VectorSum to comply with latest C# language updates
briancylui Aug 3, 2018
2d8fe26
Response to PR feedback: added a comment and removed unnecessary MSBu…
briancylui Aug 3, 2018
980db82
Made private functions for SSE intrinsics inline
briancylui Aug 3, 2018
3ff5c0b
Fix merge conflicts
briancylui Aug 3, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DotnetCLIVersion.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.1.200
2.1.301
Copy link
Member

Choose a reason for hiding this comment

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

Let's revert this change for now. We needed it when we were using netcoreapp2.1, but now that we are using netcoreapp3.0, this change isn't necessary.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Edited thanks

33 changes: 33 additions & 0 deletions Microsoft.ML.sln
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.ML.CpuMath", "Mic
pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj = pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CpuMath.UnitTests.DotNetCoreApp", "test\Microsoft.ML.CpuMath.UnitTests.DotNetCoreApp\Microsoft.ML.CpuMath.UnitTests.DotNetCoreApp.csproj", "{2E772439-4E07-4425-BF60-FF94ABDC17F7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CpuMath.UnitTests.DotNetStandard", "test\Microsoft.ML.CpuMath.UnitTests.DotNetStandard\Microsoft.ML.CpuMath.UnitTests.DotNetStandard.csproj", "{EB4A1DBA-D4F1-43BF-B860-00A6DCECD924}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CpuMath.PerformanceTests", "test\Microsoft.ML.CpuMath.PerformanceTests\Microsoft.ML.CpuMath.PerformanceTests.csproj", "{7333EDEF-4144-405C-A5EC-6F42201857D8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -304,6 +310,30 @@ Global
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release|Any CPU.Build.0 = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{2E772439-4E07-4425-BF60-FF94ABDC17F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2E772439-4E07-4425-BF60-FF94ABDC17F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2E772439-4E07-4425-BF60-FF94ABDC17F7}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{2E772439-4E07-4425-BF60-FF94ABDC17F7}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{2E772439-4E07-4425-BF60-FF94ABDC17F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E772439-4E07-4425-BF60-FF94ABDC17F7}.Release|Any CPU.Build.0 = Release|Any CPU
{2E772439-4E07-4425-BF60-FF94ABDC17F7}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{2E772439-4E07-4425-BF60-FF94ABDC17F7}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{EB4A1DBA-D4F1-43BF-B860-00A6DCECD924}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB4A1DBA-D4F1-43BF-B860-00A6DCECD924}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB4A1DBA-D4F1-43BF-B860-00A6DCECD924}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{EB4A1DBA-D4F1-43BF-B860-00A6DCECD924}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{EB4A1DBA-D4F1-43BF-B860-00A6DCECD924}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB4A1DBA-D4F1-43BF-B860-00A6DCECD924}.Release|Any CPU.Build.0 = Release|Any CPU
{EB4A1DBA-D4F1-43BF-B860-00A6DCECD924}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{EB4A1DBA-D4F1-43BF-B860-00A6DCECD924}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{7333EDEF-4144-405C-A5EC-6F42201857D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7333EDEF-4144-405C-A5EC-6F42201857D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7333EDEF-4144-405C-A5EC-6F42201857D8}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{7333EDEF-4144-405C-A5EC-6F42201857D8}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{7333EDEF-4144-405C-A5EC-6F42201857D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7333EDEF-4144-405C-A5EC-6F42201857D8}.Release|Any CPU.Build.0 = Release|Any CPU
{7333EDEF-4144-405C-A5EC-6F42201857D8}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{7333EDEF-4144-405C-A5EC-6F42201857D8}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -340,6 +370,9 @@ Global
{001F3B4E-FBE4-4001-AFD2-A6A989CD1C25} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{BF66A305-DF10-47E4-8D81-42049B149D2B} = {D3D38B03-B557-484D-8348-8BADEE4DF592}
{2E772439-4E07-4425-BF60-FF94ABDC17F7} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4}
{EB4A1DBA-D4F1-43BF-B860-00A6DCECD924} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4}
{7333EDEF-4144-405C-A5EC-6F42201857D8} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {41165AF1-35BB-4832-A189-73060F82B01D}
Expand Down
Loading