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

Vxsort #37159

Merged
merged 33 commits into from
Jul 15, 2020
Merged

Vxsort #37159

Show file tree
Hide file tree
Changes from 32 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
567b620
Initial snapshort of vxsort implementation incorporating source code …
PeterSolMS May 28, 2020
98fc7b1
Bug fix from Dan.
PeterSolMS May 29, 2020
441033b
Use bigger mark list for experiments.
PeterSolMS May 29, 2020
42d5acb
Give up if the mark list size is bigger than a reasonable fraction of…
PeterSolMS May 29, 2020
9fee09e
Latest version from Dan, disable for ARM64.
PeterSolMS Jun 3, 2020
6af96dd
Fixes for Linux compile, ended up disabling vxsort for Linux for now.
PeterSolMS Jun 3, 2020
af23cd2
Experimenting with 32-bit sort - the variation that gathers mark list…
PeterSolMS Jun 8, 2020
4c03ee4
32-bit sort - preserve failing case.
PeterSolMS Jun 8, 2020
a6b2305
Do the pointer compression/decompression in place, to improve perform…
PeterSolMS Jun 10, 2020
05505de
Merge branch 'master' into vxsort
PeterSolMS Jun 10, 2020
2f3d330
Introduce runtime check whether CPU supports AVX2 instruction set.
PeterSolMS Jun 18, 2020
912f9e8
Implement mark list growth.
PeterSolMS Jun 19, 2020
7e43b76
Integrate new version including AVX512 code path.
PeterSolMS Jun 23, 2020
0f543de
Implement runtime test for AVX512 support.
PeterSolMS Jun 23, 2020
f49b16f
Move the files for the vectorized sort to their own directory, add st…
PeterSolMS Jun 24, 2020
d38cfee
Get rid of unneeded #include statement in two files.
PeterSolMS Jun 24, 2020
8a64ab2
Address codereview feedback to specifically say AVX512F instead of ju…
PeterSolMS Jun 24, 2020
1050697
Fix CMakeLists.tx files for non-x64 non-Windows targets, introduce se…
PeterSolMS Jun 25, 2020
01f6797
Instead of modifying the tool-generated header file corinfoinstructio…
PeterSolMS Jun 26, 2020
3dc4f0a
Move AVX2/AVX512 instruction set detection to GC side.
PeterSolMS Jun 30, 2020
16f1782
Use vectorized packer, switch packed range from uint32_t to int32_t, …
PeterSolMS Jul 2, 2020
8d51d90
Add GCConfig setting to turn vectorized sorting off, streamline ISA d…
PeterSolMS Jul 3, 2020
c9a7b76
Several small improvements:
PeterSolMS Jul 3, 2020
43e5d38
Address codereview feedback - add constants for the thresholds above …
PeterSolMS Jul 6, 2020
cd6660a
Add license headers and entry in THIRD-PARTY_NOTICES.TXT for Dan's ve…
PeterSolMS Jul 6, 2020
c3a4974
Update license headers
PeterSolMS Jul 8, 2020
9a0acaa
Address code review feedback:
PeterSolMS Jul 10, 2020
515cae6
Snapshot for Linux changes
PeterSolMS Jul 10, 2020
338c1c9
Merge remote-tracking branch 'origin/vxsort' into vxsort
PeterSolMS Jul 10, 2020
2409c50
Add more definitions to immintrinh.h
PeterSolMS Jul 10, 2020
08b4c4c
Fix cmake warnings about mismatched endif clauses.
PeterSolMS Jul 10, 2020
f87af51
Disable Linux support for now due to multiple compile & link errors.
PeterSolMS Jul 13, 2020
1301d66
Address code review feedback:
PeterSolMS Jul 15, 2020
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
25 changes: 25 additions & 0 deletions THIRD-PARTY-NOTICES.TXT
Original file line number Diff line number Diff line change
Expand Up @@ -860,3 +860,28 @@ The above copyright notice and this permission notice shall be included in all c

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

License notice for vectorized sorting code
------------------------------------------

MIT License

Copyright (c) 2020 Dan Shechter

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

17 changes: 16 additions & 1 deletion src/coreclr/src/gc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,20 @@ else()
windows/gcenv.windows.cpp)
endif(CLR_CMAKE_HOST_UNIX)

if (CLR_CMAKE_TARGET_ARCH_AMD64 AND CLR_CMAKE_TARGET_WIN32)
set ( GC_SOURCES
${GC_SOURCES}
vxsort/isa_detection_dummy.cpp
vxsort/do_vxsort_avx2.cpp
vxsort/do_vxsort_avx512.cpp
vxsort/machine_traits.avx2.cpp
vxsort/smallsort/bitonic_sort.AVX2.int64_t.generated.cpp
vxsort/smallsort/bitonic_sort.AVX2.int32_t.generated.cpp
vxsort/smallsort/bitonic_sort.AVX512.int64_t.generated.cpp
vxsort/smallsort/bitonic_sort.AVX512.int32_t.generated.cpp
)
endif (CLR_CMAKE_TARGET_ARCH_AMD64 AND CLR_CMAKE_TARGET_WIN32)

if (CLR_CMAKE_TARGET_WIN32)
set(GC_HEADERS
env/common.h
Expand Down Expand Up @@ -74,7 +88,8 @@ if (CLR_CMAKE_TARGET_WIN32)
handletable.inl
handletablepriv.h
objecthandle.h
softwarewritewatch.h)
softwarewritewatch.h
vxsort/do_vxsort.h)
endif(CLR_CMAKE_TARGET_WIN32)

if(CLR_CMAKE_HOST_WIN32)
Expand Down
Loading