├── masstree ├── stamp-h ├── .gitignore ├── AUTHORS ├── doc │ ├── .gitignore │ └── patches.mp ├── string_slice.cc ├── value_string.cc ├── checkpoint.cc └── perfstat.hh ├── hot ├── .gitignore ├── lib │ ├── idx │ │ ├── CMakeLists.txt │ │ └── content-helpers │ │ │ ├── include │ │ │ └── idx │ │ │ │ └── contenthelpers │ │ │ │ ├── CStringComparator.hpp │ │ │ │ ├── IdentityKeyExtractor.hpp │ │ │ │ ├── KeyComparator.hpp │ │ │ │ ├── PairPointerKeyExtractor.hpp │ │ │ │ ├── ValueToKeyTypeMapper.hpp │ │ │ │ ├── PairKeyExtractor.hpp │ │ │ │ └── ContentEquals.hpp │ │ │ └── CMakeLists.txt │ ├── CMakeLists.txt │ └── hot │ │ ├── CMakeLists.txt │ │ ├── single-threaded │ │ └── include │ │ │ └── hot │ │ │ └── singlethreaded │ │ │ ├── .HOTSingleThreaded.hpp.swp │ │ │ └── HOTSingleThreadedInsertStackEntry.hpp │ │ ├── rowex │ │ └── include │ │ │ └── hot │ │ │ └── rowex │ │ │ ├── HOTRowexIteratorBufferStates.hpp │ │ │ ├── SpinLock.hpp │ │ │ ├── HOTRowexIteratorEndToken.hpp │ │ │ ├── HOTRowexFirstInsertLevel.hpp │ │ │ ├── MemoryGuard.hpp │ │ │ ├── HOTRowexIteratorStackState.hpp │ │ │ └── HOTRowexIteratorStackEntry.hpp │ │ └── commons │ │ └── include │ │ └── hot │ │ └── commons │ │ ├── NodeAllocationInformation.hpp │ │ ├── PartialKeyConversionInformation.hpp │ │ ├── EntriesRange.hpp │ │ ├── BiNodeInterface.hpp │ │ ├── SearchResultForInsert.hpp │ │ ├── BiNode.hpp │ │ ├── TwoEntriesNode.hpp │ │ └── BiNodeInformation.hpp ├── src │ ├── CMakeLists.txt │ └── main.h └── CMakeLists.txt ├── precompute ├── btree_insertOnly_rand ├── artolc_a_rand ├── artolc_b_rand ├── hydralist_a_rand ├── hydralist_c_rand ├── hydralist_insertOnly_rand ├── wormhole_insertOnly_rand ├── wormhole_a_rand ├── wormhole_b_rand ├── wormhole_c_rand ├── wormhole_d_rand ├── artolc_c_rand ├── artolc_e_rand ├── btreeolc_b_rand ├── btreeolc_e_rand ├── bwtree_a_rand ├── bwtree_b_rand ├── bwtree_c_rand ├── bwtree_d_rand ├── bwtree_e_rand ├── artolc_d_rand ├── btreeolc_a_rand ├── btreeolc_c_rand ├── btreeolc_d_rand ├── hydralist_b_rand ├── hydralist_d_rand ├── hydralist_e_rand ├── masstree_a_rand ├── masstree_b_rand ├── masstree_c_rand ├── masstree_d_rand ├── masstree_e_rand ├── artolc_insertOnly_rand ├── btreeolc_insertOnly_rand ├── bwtree_insertOnly_rand └── masstree_insertOnly_rand ├── nohotspot-skiplist ├── .gitignore ├── libskiplist.so ├── atomic_ops │ ├── AUTHORS │ ├── README │ └── standard_ao_double_t.h ├── tm.h ├── background.h ├── common.h ├── ptst.h ├── nohotspot_ops.h ├── intset.h ├── lockfree.h ├── garbagecoll.h ├── Makefile └── intset.cpp ├── precompute_string ├── wormhole_e_email ├── artolc_a_email ├── artolc_b_email ├── artolc_c_email ├── artolc_d_email ├── artolc_e_email ├── btreeolc_a_email ├── btreeolc_b_email ├── btreeolc_d_email ├── bwtree_a_email ├── bwtree_b_email ├── bwtree_c_email ├── bwtree_d_email ├── bwtree_e_email ├── hydralist_d_email ├── masstree_b_email ├── masstree_e_email ├── wormhole_b_email ├── btreeolc_c_email ├── btreeolc_e_email ├── hydralist_a_email ├── hydralist_b_email ├── hydralist_c_email ├── hydralist_e_email ├── masstree_a_email ├── masstree_c_email ├── masstree_d_email ├── wormhole_a_email ├── wormhole_c_email ├── wormhole_d_email ├── artolc_insertOnly_email ├── btreeolc_insertOnly_email ├── bwtree_insertOnly_email ├── wormhole_insertOnly_email ├── hydralist_insertOnly_email └── masstree_insertOnly_email ├── resutls ├── complete │ └── index │ │ ├── btwree_a_rand │ │ ├── btwreeolc_a_rand │ │ ├── a_mono.png │ │ ├── a_rand.png │ │ ├── c_mono.png │ │ ├── c_rand.png │ │ ├── e_mono.png │ │ ├── e_rand.png │ │ ├── btreeolc_a_mono │ │ ├── btreeolc_a_rand │ │ ├── btreeolc_c_mono │ │ ├── btreeolc_c_rand │ │ ├── btreeolc_e_mono │ │ ├── btreeolc_e_rand │ │ ├── bwtree_a_mono │ │ ├── bwtree_a_rand │ │ ├── bwtree_c_mono │ │ ├── bwtree_c_rand │ │ ├── bwtree_e_mono │ │ ├── bwtree_e_rand │ │ ├── masstree_a_mono │ │ ├── masstree_a_rand │ │ ├── masstree_c_mono │ │ ├── masstree_c_rand │ │ ├── masstree_e_mono │ │ ├── masstree_e_rand │ │ ├── skiplist_a_mono │ │ ├── skiplist_a_rand │ │ ├── skiplist_c_mono │ │ ├── skiplist_e_mono │ │ ├── skiplist_c_rand │ │ └── skiplist_e_rand ├── 500k │ └── index │ │ ├── a_mono.png │ │ ├── a_rand.png │ │ ├── c_mono.png │ │ ├── c_rand.png │ │ ├── e_mono.png │ │ ├── e_rand.png │ │ ├── btreeolc_a_mono │ │ ├── btreeolc_a_rand │ │ ├── btreeolc_c_mono │ │ ├── btreeolc_c_rand │ │ ├── btreeolc_e_mono │ │ ├── btreeolc_e_rand │ │ ├── bwtree_a_mono │ │ ├── bwtree_a_rand │ │ ├── bwtree_c_mono │ │ ├── bwtree_c_rand │ │ ├── bwtree_e_mono │ │ ├── bwtree_e_rand │ │ ├── masstree_a_mono │ │ ├── masstree_a_rand │ │ ├── masstree_c_mono │ │ ├── masstree_c_rand │ │ ├── masstree_e_mono │ │ ├── skiplist_a_mono │ │ ├── skiplist_a_rand │ │ ├── skiplist_c_mono │ │ ├── skiplist_c_rand │ │ ├── skiplist_e_mono │ │ ├── skiplist_e_rand │ │ └── masstree_e_rand ├── 50k │ └── index │ │ ├── a_mono.png │ │ ├── a_rand.png │ │ ├── c_mono.png │ │ ├── c_rand.png │ │ ├── e_mono.png │ │ ├── e_rand.png │ │ ├── masstree_a_rand │ │ ├── btreeolc_a_mono │ │ ├── btreeolc_a_rand │ │ ├── btreeolc_c_mono │ │ ├── btreeolc_c_rand │ │ ├── btreeolc_e_mono │ │ ├── btreeolc_e_rand │ │ ├── bwtree_a_mono │ │ ├── bwtree_a_rand │ │ ├── bwtree_c_mono │ │ ├── bwtree_c_rand │ │ ├── bwtree_e_mono │ │ ├── bwtree_e_rand │ │ ├── masstree_a_mono │ │ ├── masstree_c_mono │ │ ├── masstree_c_rand │ │ ├── masstree_e_mono │ │ ├── masstree_e_rand │ │ ├── skiplist_a_mono │ │ ├── skiplist_a_rand │ │ ├── skiplist_c_mono │ │ ├── skiplist_c_rand │ │ ├── skiplist_e_mono │ │ └── skiplist_e_rand ├── HOT │ └── index │ │ ├── c_email.png │ │ └── e_email.png ├── art │ └── index │ │ └── e_rand.png ├── temp │ ├── bwtree │ │ ├── a_mono.png │ │ ├── a_rand.png │ │ ├── c_mono.png │ │ ├── c_rand.png │ │ ├── e_mono.png │ │ ├── e_rand.png │ │ ├── bwtree_a_mono │ │ ├── bwtree_a_rand │ │ ├── bwtree_c_mono │ │ ├── bwtree_c_rand │ │ ├── bwtree_e_mono │ │ └── bwtree_e_rand │ ├── btreeolc │ │ ├── a_mono.png │ │ ├── a_rand.png │ │ ├── c_mono.png │ │ ├── c_rand.png │ │ ├── e_mono.png │ │ ├── e_rand.png │ │ ├── btreeolc_a_mono │ │ ├── btreeolc_a_rand │ │ ├── btreeolc_c_mono │ │ ├── btreeolc_c_rand │ │ ├── btreeolc_e_mono │ │ └── btreeolc_e_rand │ ├── masstree │ │ ├── a_mono.png │ │ ├── a_rand.png │ │ ├── c_mono.png │ │ ├── c_rand.png │ │ ├── e_mono.png │ │ ├── e_rand.png │ │ ├── masstree_a_rand │ │ ├── masstree_a_mono │ │ ├── masstree_c_mono │ │ ├── masstree_c_rand │ │ ├── masstree_e_mono │ │ └── masstree_e_rand │ └── skiplist │ │ ├── a_mono.png │ │ ├── a_rand.png │ │ ├── c_mono.png │ │ ├── c_rand.png │ │ ├── e_mono.png │ │ ├── e_rand.png │ │ ├── skiplist_a_mono │ │ ├── skiplist_a_rand │ │ ├── skiplist_c_mono │ │ ├── skiplist_c_rand │ │ ├── skiplist_e_mono │ │ └── skiplist_e_rand ├── string1 │ └── index │ │ ├── a_email.png │ │ └── c_email.png ├── wormholeSL │ └── index │ │ └── c_rand.png └── wh_unsafe_string_100M │ └── index │ └── c_email.png ├── rotate-skiplist ├── .gitignore ├── libskiplist.so ├── atomic_ops │ ├── AUTHORS │ ├── README │ └── standard_ao_double_t.h ├── tm.h ├── background.h ├── ptst.h ├── common.h ├── nohotspot_ops.h ├── intset.h ├── lockfree.h ├── intset.cpp ├── Makefile ├── intset.c └── garbagecoll.h ├── workload_config.inp ├── rotate-skiplist-cpp ├── .gitignore ├── Makefile └── rotate-skiplist.cpp ├── libcuckoo ├── libcuckoo-gdb-printers │ ├── libcuckoo │ │ ├── __init__.py │ │ └── printers.py │ └── README.md ├── tests │ ├── unit-tests │ │ ├── int_int_table.cc │ │ ├── test_runner.cc │ │ ├── unit_test_util.cc │ │ ├── int_int_table.h │ │ ├── CMakeLists.txt │ │ └── test_minimum_load_factor.cc │ ├── Catch │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ └── LICENSE_1_0.txt │ ├── pcg │ │ └── CMakeLists.txt │ ├── stress-tests │ │ └── CMakeLists.txt │ └── CMakeLists.txt ├── libcuckoo-c │ └── CMakeLists.txt ├── libcuckoo │ ├── libcuckoo-config.cmake │ ├── mainpage.dox │ └── cuckoohash_config.hh ├── examples │ ├── int_str_table.cc │ ├── hellohash.cc │ ├── CMakeLists.txt │ ├── int_str_table.h │ ├── blob_blob_table.h │ ├── blob_blob_table.cc │ └── nested_table.cc ├── hooks │ └── pre-commit ├── CMakeLists.txt └── LICENSE ├── hydralist ├── lib │ ├── CMakeLists.txt │ └── ARTROWEX │ │ └── CMakeLists.txt ├── src │ ├── main.cpp │ ├── CMakeLists.txt │ ├── linkedList.h │ ├── WorkerThread.h │ ├── VersionedLock.h │ ├── Oplog.h │ ├── threadData.h │ └── bitset.h ├── tools │ └── get-numa-config.sh ├── tests │ ├── OpLog │ │ └── CMakeLists.txt │ ├── LinkedList │ │ └── CMakeLists.txt │ ├── WorkerThread │ │ ├── CMakeLists.txt │ │ └── test.cpp │ ├── Hydralist │ │ └── CMakeLists.txt │ └── SearchLayer │ │ └── CMakeLists.txt ├── CMakeLists.txt └── include │ ├── common.h │ └── HydraList.h ├── hydralist_string ├── lib │ ├── CMakeLists.txt │ └── ARTROWEX │ │ └── CMakeLists.txt ├── src │ ├── main.cpp │ ├── CMakeLists.txt │ ├── linkedList.h │ ├── WorkerThread.h │ ├── VersionedLock.h │ ├── Oplog.h │ ├── threadData.h │ └── bitset.h ├── tools │ └── get-numa-config.sh ├── tests │ ├── OpLog │ │ └── CMakeLists.txt │ ├── LinkedList │ │ └── CMakeLists.txt │ ├── WorkerThread │ │ ├── CMakeLists.txt │ │ └── test.cpp │ ├── Hydralist │ │ └── CMakeLists.txt │ └── SearchLayer │ │ └── CMakeLists.txt ├── CMakeLists.txt └── include │ └── HydraList.h ├── pcm ├── WinMSRDriver │ └── Win7 │ │ ├── makefile │ │ ├── mymake.bat │ │ └── sources ├── .gitattributes ├── MacMSRDriver │ ├── PcmMsr │ │ ├── en.lproj │ │ │ └── InfoPlist.strings │ │ └── PcmMsr-Prefix.pch │ ├── kextunload.sh │ ├── kextload.sh │ ├── PcmMsr.xcodeproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcuserdata │ │ │ │ ├── aiott.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ │ └── pjkerly.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ │ ├── pjkerly.xcuserdatad │ │ │ └── xcschemes │ │ │ │ └── xcschememanagement.plist │ │ │ └── aiott.xcuserdatad │ │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ └── Makefile ├── KSysGuard HOWTO.docx ├── KSysGuard HOWTO.pdf ├── PCM-Service_Win │ ├── app.ico │ ├── resource.h │ ├── PCM-Service.exe.config │ └── app.rc ├── PCM-IIO_Win │ ├── pcm-iio-win.cpp │ ├── stdafx.cpp │ └── stdafx.h ├── PCM-MSR_Win │ ├── pcm-msr-win.cpp │ ├── stdafx.cpp │ └── stdafx.h ├── PCM-TSX_Win │ ├── pcm-tsx-win.cpp │ ├── stdafx.cpp │ └── stdafx.h ├── daemon │ ├── .gitignore │ └── daemon │ │ └── test │ │ └── Makefile ├── PCM-Core_Win │ ├── pcm-core-win.cpp │ ├── stdafx.cpp │ └── stdafx.h ├── PCM-LSPCI_Win │ ├── pcm-lspci-win.cpp │ ├── stdafx.cpp │ └── stdafx.h ├── PCM-NUMA_Win │ ├── pcm-numa-win.cpp │ ├── stdafx.cpp │ └── stdafx.h ├── PCM-PCIE_Win │ ├── pcm-pcie-win.cpp │ ├── stdafx.cpp │ └── stdafx.h ├── PCM-Power_Win │ ├── pcm-power-win.cpp │ ├── stdafx.cpp │ └── stdafx.h ├── PCM-Memory_Win │ ├── pcm-memory-win.cpp │ ├── stdafx.cpp │ └── stdafx.h ├── PCM-PCICFG_Win │ ├── pcm-pcicfg-win.cpp │ ├── stdafx.cpp │ └── stdafx.h ├── PCM-Latency_Win │ ├── pcm-latency-win.cpp │ ├── stdafx.cpp │ └── stdafx.h ├── TODO ├── .travis.yml ├── .gitignore ├── pcm.so │ └── Makefile ├── .bdsignore.all ├── build_solution.bat ├── readmem.sh ├── freegetopt │ └── ChangeLog └── mutex.h ├── wormhole ├── Makefile └── Makefile.local ├── config.json ├── microbench.h ├── README.md ├── LICENSE ├── generate_all_workloads.sh └── BwTree └── bwtree.cpp /masstree/stamp-h: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /hot/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | -------------------------------------------------------------------------------- /precompute/btree_insertOnly_rand: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /nohotspot-skiplist/.gitignore: -------------------------------------------------------------------------------- 1 | test 2 | -------------------------------------------------------------------------------- /precompute_string/wormhole_e_email: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resutls/complete/index/btwree_a_rand: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rotate-skiplist/.gitignore: -------------------------------------------------------------------------------- 1 | main 2 | -------------------------------------------------------------------------------- /masstree/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | 3 | .deps 4 | -------------------------------------------------------------------------------- /resutls/complete/index/btwreeolc_a_rand: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /workload_config.inp: -------------------------------------------------------------------------------- 1 | workloade 2 | randint 3 | -------------------------------------------------------------------------------- /rotate-skiplist-cpp/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | *.o 3 | main 4 | -------------------------------------------------------------------------------- /libcuckoo/libcuckoo-gdb-printers/libcuckoo/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /hydralist/lib/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(ARTROWEX) 2 | -------------------------------------------------------------------------------- /hot/lib/idx/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY(content-helpers) 2 | -------------------------------------------------------------------------------- /hydralist_string/lib/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(ARTROWEX) 2 | -------------------------------------------------------------------------------- /pcm/WinMSRDriver/Win7/makefile: -------------------------------------------------------------------------------- 1 | !INCLUDE $(NTMAKEENV)\makefile.def -------------------------------------------------------------------------------- /pcm/.gitattributes: -------------------------------------------------------------------------------- 1 | cpucounters.h export-subst 2 | 3 | * text=true 4 | -------------------------------------------------------------------------------- /hot/lib/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY(idx) 2 | ADD_SUBDIRECTORY(hot) 3 | -------------------------------------------------------------------------------- /hydralist/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include "HydraList.h" 2 | 3 | int main() { 4 | return 0; 5 | } 6 | -------------------------------------------------------------------------------- /pcm/MacMSRDriver/PcmMsr/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /hydralist_string/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include "HydraList.h" 2 | 3 | int main() { 4 | return 0; 5 | } 6 | -------------------------------------------------------------------------------- /pcm/KSysGuard HOWTO.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/pcm/KSysGuard HOWTO.docx -------------------------------------------------------------------------------- /pcm/KSysGuard HOWTO.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/pcm/KSysGuard HOWTO.pdf -------------------------------------------------------------------------------- /pcm/PCM-Service_Win/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/pcm/PCM-Service_Win/app.ico -------------------------------------------------------------------------------- /hydralist/tools/get-numa-config.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | python3 cpu-topology.py > ../include/numa-config.h 4 | -------------------------------------------------------------------------------- /resutls/500k/index/a_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/500k/index/a_mono.png -------------------------------------------------------------------------------- /resutls/500k/index/a_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/500k/index/a_rand.png -------------------------------------------------------------------------------- /resutls/500k/index/c_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/500k/index/c_mono.png -------------------------------------------------------------------------------- /resutls/500k/index/c_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/500k/index/c_rand.png -------------------------------------------------------------------------------- /resutls/500k/index/e_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/500k/index/e_mono.png -------------------------------------------------------------------------------- /resutls/500k/index/e_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/500k/index/e_rand.png -------------------------------------------------------------------------------- /resutls/50k/index/a_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/50k/index/a_mono.png -------------------------------------------------------------------------------- /resutls/50k/index/a_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/50k/index/a_rand.png -------------------------------------------------------------------------------- /resutls/50k/index/c_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/50k/index/c_mono.png -------------------------------------------------------------------------------- /resutls/50k/index/c_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/50k/index/c_rand.png -------------------------------------------------------------------------------- /resutls/50k/index/e_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/50k/index/e_mono.png -------------------------------------------------------------------------------- /resutls/50k/index/e_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/50k/index/e_rand.png -------------------------------------------------------------------------------- /resutls/HOT/index/c_email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/HOT/index/c_email.png -------------------------------------------------------------------------------- /resutls/HOT/index/e_email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/HOT/index/e_email.png -------------------------------------------------------------------------------- /resutls/art/index/e_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/art/index/e_rand.png -------------------------------------------------------------------------------- /resutls/temp/bwtree/a_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/bwtree/a_mono.png -------------------------------------------------------------------------------- /resutls/temp/bwtree/a_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/bwtree/a_rand.png -------------------------------------------------------------------------------- /resutls/temp/bwtree/c_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/bwtree/c_mono.png -------------------------------------------------------------------------------- /resutls/temp/bwtree/c_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/bwtree/c_rand.png -------------------------------------------------------------------------------- /resutls/temp/bwtree/e_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/bwtree/e_mono.png -------------------------------------------------------------------------------- /resutls/temp/bwtree/e_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/bwtree/e_rand.png -------------------------------------------------------------------------------- /rotate-skiplist/libskiplist.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/rotate-skiplist/libskiplist.so -------------------------------------------------------------------------------- /hot/lib/hot/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY(commons) 2 | ADD_SUBDIRECTORY(rowex) 3 | ADD_SUBDIRECTORY(single-threaded) 4 | -------------------------------------------------------------------------------- /resutls/temp/btreeolc/a_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/btreeolc/a_mono.png -------------------------------------------------------------------------------- /resutls/temp/btreeolc/a_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/btreeolc/a_rand.png -------------------------------------------------------------------------------- /resutls/temp/btreeolc/c_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/btreeolc/c_mono.png -------------------------------------------------------------------------------- /resutls/temp/btreeolc/c_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/btreeolc/c_rand.png -------------------------------------------------------------------------------- /resutls/temp/btreeolc/e_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/btreeolc/e_mono.png -------------------------------------------------------------------------------- /resutls/temp/btreeolc/e_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/btreeolc/e_rand.png -------------------------------------------------------------------------------- /resutls/temp/masstree/a_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/masstree/a_mono.png -------------------------------------------------------------------------------- /resutls/temp/masstree/a_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/masstree/a_rand.png -------------------------------------------------------------------------------- /resutls/temp/masstree/c_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/masstree/c_mono.png -------------------------------------------------------------------------------- /resutls/temp/masstree/c_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/masstree/c_rand.png -------------------------------------------------------------------------------- /resutls/temp/masstree/e_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/masstree/e_mono.png -------------------------------------------------------------------------------- /resutls/temp/masstree/e_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/masstree/e_rand.png -------------------------------------------------------------------------------- /resutls/temp/skiplist/a_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/skiplist/a_mono.png -------------------------------------------------------------------------------- /resutls/temp/skiplist/a_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/skiplist/a_rand.png -------------------------------------------------------------------------------- /resutls/temp/skiplist/c_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/skiplist/c_mono.png -------------------------------------------------------------------------------- /resutls/temp/skiplist/c_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/skiplist/c_rand.png -------------------------------------------------------------------------------- /resutls/temp/skiplist/e_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/skiplist/e_mono.png -------------------------------------------------------------------------------- /resutls/temp/skiplist/e_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/temp/skiplist/e_rand.png -------------------------------------------------------------------------------- /hydralist_string/tools/get-numa-config.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | python3 cpu-topology.py > ../include/numa-config.h 4 | -------------------------------------------------------------------------------- /nohotspot-skiplist/libskiplist.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/nohotspot-skiplist/libskiplist.so -------------------------------------------------------------------------------- /resutls/50k/index/masstree_a_rand: -------------------------------------------------------------------------------- 1 | 1 4.972462 8.143364 14.34168 22.377816 26.156832 18.0964 13.0103128 7.876192 5.48234200 5.16296 -------------------------------------------------------------------------------- /resutls/complete/index/a_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/complete/index/a_mono.png -------------------------------------------------------------------------------- /resutls/complete/index/a_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/complete/index/a_rand.png -------------------------------------------------------------------------------- /resutls/complete/index/c_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/complete/index/c_mono.png -------------------------------------------------------------------------------- /resutls/complete/index/c_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/complete/index/c_rand.png -------------------------------------------------------------------------------- /resutls/complete/index/e_mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/complete/index/e_mono.png -------------------------------------------------------------------------------- /resutls/complete/index/e_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/complete/index/e_rand.png -------------------------------------------------------------------------------- /resutls/string1/index/a_email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/string1/index/a_email.png -------------------------------------------------------------------------------- /resutls/string1/index/c_email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/string1/index/c_email.png -------------------------------------------------------------------------------- /resutls/wormholeSL/index/c_rand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/wormholeSL/index/c_rand.png -------------------------------------------------------------------------------- /pcm/PCM-Service_Win/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by app.rc 4 | -------------------------------------------------------------------------------- /resutls/500k/index/btreeolc_a_mono: -------------------------------------------------------------------------------- 1 | 1 4.040982 7.521024 14.64158 28.202316 54.445832 53.360764 19.1115128 10.883192 7.05837200 6.64164 -------------------------------------------------------------------------------- /resutls/500k/index/btreeolc_a_rand: -------------------------------------------------------------------------------- 1 | 1 4.213892 7.817924 14.73588 27.605216 50.5632 49.131164 20.0101128 10.8384192 7.69869200 6.39076 -------------------------------------------------------------------------------- /resutls/500k/index/btreeolc_c_mono: -------------------------------------------------------------------------------- 1 | 1 4.220352 8.428824 17.06678 34.593216 70.882832 136.99964 247.511128 332.038192 236.15200 246.299 -------------------------------------------------------------------------------- /resutls/500k/index/btreeolc_c_rand: -------------------------------------------------------------------------------- 1 | 1 4.392872 8.882644 17.75638 34.918416 69.895932 137.28364 246.822128 329.022192 279.157200 256.128 -------------------------------------------------------------------------------- /resutls/500k/index/btreeolc_e_mono: -------------------------------------------------------------------------------- 1 | 1 2.411142 4.856734 9.889398 19.840216 39.504832 64.913964 105.563128 139.975192 133.633200 117.861 -------------------------------------------------------------------------------- /resutls/500k/index/btreeolc_e_rand: -------------------------------------------------------------------------------- 1 | 1 2.506082 5.036134 10.00738 19.319216 37.612732 54.134864 66.3927128 91.8223192 81.0379200 80.4726 -------------------------------------------------------------------------------- /resutls/500k/index/bwtree_a_mono: -------------------------------------------------------------------------------- 1 | 1 2.245782 4.094774 7.488838 13.607816 23.191432 28.548364 11.4838128 6.44896192 4.8784200 4.95653 -------------------------------------------------------------------------------- /resutls/500k/index/bwtree_a_rand: -------------------------------------------------------------------------------- 1 | 1 2.263582 4.06024 7.451718 13.868316 25.281632 25.719864 11.2771128 6.45096192 4.91953200 4.79631 -------------------------------------------------------------------------------- /resutls/500k/index/bwtree_c_mono: -------------------------------------------------------------------------------- 1 | 1 3.522722 6.962574 13.92078 27.225616 54.879332 107.07764 194.258128 260.309192 195.941200 187.14 -------------------------------------------------------------------------------- /resutls/500k/index/bwtree_c_rand: -------------------------------------------------------------------------------- 1 | 1 2.711662 5.3234 11.11798 21.267316 43.273932 84.083264 154.751128 230.165192 170.401200 187.221 -------------------------------------------------------------------------------- /resutls/500k/index/bwtree_e_mono: -------------------------------------------------------------------------------- 1 | 1 1.247422 2.506274 5.080538 9.3836616 18.55332 30.430864 45.5909128 55.9106192 51.7336200 49.3671 -------------------------------------------------------------------------------- /resutls/500k/index/bwtree_e_rand: -------------------------------------------------------------------------------- 1 | 1 0.6282132 1.250334 2.512088 4.9138316 9.6356332 16.637564 27.5683128 42.1397192 39.966200 40.1703 -------------------------------------------------------------------------------- /resutls/500k/index/masstree_a_mono: -------------------------------------------------------------------------------- 1 | 1 4.03772 7.075214 12.99138 21.376316 27.363432 17.808664 9.847128 5.49712192 4.10843200 3.75871 -------------------------------------------------------------------------------- /resutls/500k/index/masstree_a_rand: -------------------------------------------------------------------------------- 1 | 1 3.863422 7.175244 13.18278 22.000216 27.22732 17.510864 12.8651128 5.65232192 5.2525200 4.03102 -------------------------------------------------------------------------------- /resutls/500k/index/masstree_c_mono: -------------------------------------------------------------------------------- 1 | 1 4.766932 9.032474 18.05258 35.785516 71.161732 131.12964 224.88128 267.08192 224.972200 197.305 -------------------------------------------------------------------------------- /resutls/500k/index/masstree_c_rand: -------------------------------------------------------------------------------- 1 | 1 4.521192 9.055994 18.06048 36.049916 64.480332 129.02164 229.922128 286.608192 205.461200 200.932 -------------------------------------------------------------------------------- /resutls/500k/index/masstree_e_mono: -------------------------------------------------------------------------------- 1 | 1 1.016142 1.890864 3.707978 7.387316 14.593532 24.354264 35.7452128 38.6611192 39.4036200 36.7427 -------------------------------------------------------------------------------- /resutls/500k/index/skiplist_a_mono: -------------------------------------------------------------------------------- 1 | 1 0.871122 2.172994 5.051438 11.020916 22.546332 35.392164 62.3127128 88.9996192 95.7551200 74.7099 -------------------------------------------------------------------------------- /resutls/500k/index/skiplist_a_rand: -------------------------------------------------------------------------------- 1 | 1 0.3534812 1.532444 3.089768 6.7970516 11.971932 15.72764 23.1959128 28.3273192 31.6941200 34.809 -------------------------------------------------------------------------------- /resutls/500k/index/skiplist_c_mono: -------------------------------------------------------------------------------- 1 | 1 1.5422 2.810794 7.219258 15.18616 27.881232 50.170364 63.1951128 141.941192 186.199200 129.164 -------------------------------------------------------------------------------- /resutls/500k/index/skiplist_c_rand: -------------------------------------------------------------------------------- 1 | 1 0.8414232 1.66974 4.026978 8.3267616 15.779232 23.164864 29.9572128 43.5411192 55.7669200 35.6898 -------------------------------------------------------------------------------- /resutls/500k/index/skiplist_e_mono: -------------------------------------------------------------------------------- 1 | 1 0.9648972 1.49674 2.867178 5.6218116 10.804632 19.080664 29.4763128 48.4665192 53.9255200 63.6979 -------------------------------------------------------------------------------- /resutls/500k/index/skiplist_e_rand: -------------------------------------------------------------------------------- 1 | 1 0.757372 1.61234 3.304848 6.5870316 10.999732 17.713364 24.3646128 69.7023192 52.4106200 50.02 -------------------------------------------------------------------------------- /resutls/50k/index/btreeolc_a_mono: -------------------------------------------------------------------------------- 1 | 1 6.045152 10.28814 18.76798 34.17616 61.633732 49.158664 19.3071128 11.3618192 7.5855200 6.1992 -------------------------------------------------------------------------------- /resutls/50k/index/btreeolc_a_rand: -------------------------------------------------------------------------------- 1 | 1 6.543342 10.34524 18.71958 33.586616 58.020832 46.306164 16.2993128 9.30968192 8.50605200 6.88076 -------------------------------------------------------------------------------- /resutls/50k/index/btreeolc_c_mono: -------------------------------------------------------------------------------- 1 | 1 6.265072 13.04024 26.02538 51.57416 101.87732 196.8564 329.531128 318.532192 271.378200 275.452 -------------------------------------------------------------------------------- /resutls/50k/index/btreeolc_c_rand: -------------------------------------------------------------------------------- 1 | 1 7.045052 14.0454 28.118 56.319616 112.37532 214.86464 366.046128 314.536192 289.494200 270.731 -------------------------------------------------------------------------------- /resutls/50k/index/btreeolc_e_mono: -------------------------------------------------------------------------------- 1 | 1 2.924752 6.04514 12.82688 25.706716 46.957232 70.072764 107.575128 121.516192 99.5907200 106.559 -------------------------------------------------------------------------------- /resutls/50k/index/btreeolc_e_rand: -------------------------------------------------------------------------------- 1 | 1 2.886352 5.602944 11.28458 21.658616 41.214532 55.786764 64.0558128 76.5057192 69.3381200 68.3784 -------------------------------------------------------------------------------- /resutls/50k/index/bwtree_a_mono: -------------------------------------------------------------------------------- 1 | 1 3.157522 5.044214 8.927418 15.758816 26.899532 27.914964 11.4221128 6.16019192 4.64422200 4.64362 -------------------------------------------------------------------------------- /resutls/50k/index/bwtree_a_rand: -------------------------------------------------------------------------------- 1 | 1 3.227792 5.006794 8.713978 15.453116 26.407532 28.31564 11.3966128 6.43019192 4.52149200 4.50352 -------------------------------------------------------------------------------- /resutls/50k/index/bwtree_c_mono: -------------------------------------------------------------------------------- 1 | 1 5.432322 11.14334 22.94588 43.849316 87.720932 165.42864 288.435128 267.68192 270.738200 232.986 -------------------------------------------------------------------------------- /resutls/50k/index/bwtree_c_rand: -------------------------------------------------------------------------------- 1 | 1 4.089392 8.232214 16.37938 32.571716 63.257532 119.22164 220.546128 252.768192 214.427200 190.673 -------------------------------------------------------------------------------- /resutls/50k/index/bwtree_e_mono: -------------------------------------------------------------------------------- 1 | 1 1.410832 2.763514 5.373398 10.285516 19.345532 30.568564 45.5255128 38.7785192 34.4344200 32.666 -------------------------------------------------------------------------------- /resutls/50k/index/bwtree_e_rand: -------------------------------------------------------------------------------- 1 | 1 0.6684722 1.334664 2.623858 5.1924616 10.218232 17.001464 28.7984128 40.4591192 33.8497200 32.5731 -------------------------------------------------------------------------------- /resutls/50k/index/masstree_a_mono: -------------------------------------------------------------------------------- 1 | 1 5.314232 8.197514 14.00818 21.714616 26.590332 18.133664 10.6912128 7.86894192 3.34289200 5.17834 -------------------------------------------------------------------------------- /resutls/50k/index/masstree_c_mono: -------------------------------------------------------------------------------- 1 | 1 6.585032 12.24784 24.02488 47.621616 94.635132 180.89764 294.734128 297.948192 258.184200 254.208 -------------------------------------------------------------------------------- /resutls/50k/index/masstree_c_rand: -------------------------------------------------------------------------------- 1 | 1 5.964452 12.0384 23.89428 47.786316 94.260432 178.33964 282.222128 310.936192 303.14200 253.209 -------------------------------------------------------------------------------- /resutls/50k/index/masstree_e_mono: -------------------------------------------------------------------------------- 1 | 1 1.090632 2.059944 4.14628 8.3959716 16.526232 26.724264 35.3624128 39.7763192 41.8233200 39.6556 -------------------------------------------------------------------------------- /resutls/50k/index/masstree_e_rand: -------------------------------------------------------------------------------- 1 | 1 0.7171912 1.430564 2.872138 5.6563516 11.297432 20.775764 35.9392128 44.9924192 41.9328200 41.2768 -------------------------------------------------------------------------------- /resutls/50k/index/skiplist_a_mono: -------------------------------------------------------------------------------- 1 | 1 1.313092 3.00994 7.36928 15.839616 33.131332 40.536464 76.7802128 83.7703192 90.0674200 69.3059 -------------------------------------------------------------------------------- /resutls/50k/index/skiplist_a_rand: -------------------------------------------------------------------------------- 1 | 1 0.9778862 2.316094 5.992128 12.234116 26.959832 33.023264 73.1123128 85.946192 99.4144200 95.7295 -------------------------------------------------------------------------------- /resutls/50k/index/skiplist_c_mono: -------------------------------------------------------------------------------- 1 | 1 2.041652 4.420894 9.654938 24.537716 51.335832 87.635564 181.891128 192.141192 185.691200 186.012 -------------------------------------------------------------------------------- /resutls/50k/index/skiplist_c_rand: -------------------------------------------------------------------------------- 1 | 1 1.654772 3.415884 8.737358 18.579816 37.135332 66.890164 136.864128 151.103192 145.789200 143.307 -------------------------------------------------------------------------------- /resutls/50k/index/skiplist_e_mono: -------------------------------------------------------------------------------- 1 | 1 1.436552 2.060984 4.103798 7.6844216 14.617532 25.374964 43.7461128 52.8879192 57.8222200 62.9469 -------------------------------------------------------------------------------- /resutls/50k/index/skiplist_e_rand: -------------------------------------------------------------------------------- 1 | 1 0.9358842 1.654064 2.670358 5.1009516 8.8154732 15.619564 34.6342128 69.9643192 67.034200 69.5589 -------------------------------------------------------------------------------- /resutls/temp/bwtree/bwtree_a_mono: -------------------------------------------------------------------------------- 1 | 1 1.196372 2.270254 4.511278 9.1225916 17.174832 22.319664 20.8604128 10.6766192 8.51122200 7.64177 -------------------------------------------------------------------------------- /resutls/temp/bwtree/bwtree_a_rand: -------------------------------------------------------------------------------- 1 | 1 0.9968222 1.951734 3.843278 7.4399116 14.940832 16.289864 17.3923128 10.7668192 9.38549200 7.76388 -------------------------------------------------------------------------------- /resutls/temp/bwtree/bwtree_c_mono: -------------------------------------------------------------------------------- 1 | 1 1.277632 2.696244 5.559718 10.997716 21.995432 28.833864 32.9801128 36.1712192 20.3585200 19.327 -------------------------------------------------------------------------------- /resutls/temp/bwtree/bwtree_c_rand: -------------------------------------------------------------------------------- 1 | 1 1.067442 2.176294 4.57388 9.0755116 17.995432 24.051764 30.5055128 26.0752192 14.2764200 16.2327 -------------------------------------------------------------------------------- /resutls/temp/bwtree/bwtree_e_mono: -------------------------------------------------------------------------------- 1 | 1 0.6777792 1.298134 2.509978 5.1033516 10.141532 14.892764 15.4805128 15.639192 15.1986200 14.4121 -------------------------------------------------------------------------------- /resutls/temp/masstree/masstree_a_rand: -------------------------------------------------------------------------------- 1 | 1 1.741672 3.360024 6.685258 13.90316 25.047332 19.288564 14.5563128 8.8923192 7.3335200 7.89118 -------------------------------------------------------------------------------- /resutls/500k/index/masstree_e_rand: -------------------------------------------------------------------------------- 1 | 1 0.5661242 1.114714 2.227598 4.4610616 8.2909132 15.031164 24.6693128 35.7421192 35.5232200 34.1085 -------------------------------------------------------------------------------- /resutls/complete/index/btreeolc_a_mono: -------------------------------------------------------------------------------- 1 | 1 1.684772 3.416434 6.728888 13.306716 25.482532 30.769164 22.9686128 10.1659192 7.4801200 7.48817 -------------------------------------------------------------------------------- /resutls/complete/index/btreeolc_a_rand: -------------------------------------------------------------------------------- 1 | 1 1.742792 3.422574 6.672338 13.454416 25.573432 30.319164 21.4328128 10.461192 7.1989200 7.74857 -------------------------------------------------------------------------------- /resutls/complete/index/btreeolc_c_mono: -------------------------------------------------------------------------------- 1 | 1 1.738212 3.629474 7.16878 14.276416 28.014732 39.171364 60.2301128 85.3912192 93.2932200 94.9604 -------------------------------------------------------------------------------- /resutls/complete/index/btreeolc_c_rand: -------------------------------------------------------------------------------- 1 | 1 1.789512 3.633014 7.071618 14.550616 28.254932 39.241764 52.4544128 57.0922192 53.5085200 53.7164 -------------------------------------------------------------------------------- /resutls/complete/index/btreeolc_e_mono: -------------------------------------------------------------------------------- 1 | 1 0.955982 2.013714 3.889558 7.128816 15.60432 22.627864 21.5495128 6.31002192 4.80898200 4.77541 -------------------------------------------------------------------------------- /resutls/complete/index/btreeolc_e_rand: -------------------------------------------------------------------------------- 1 | 1 1.08382 2.129544 4.25178 8.2709516 15.310832 19.744164 19.2485128 21.4486192 4.6393200 6.19064 -------------------------------------------------------------------------------- /resutls/complete/index/bwtree_a_mono: -------------------------------------------------------------------------------- 1 | 1 1.198572 2.251884 4.561638 9.0701516 17.175532 20.352264 12.0574128 6.80809192 4.7196200 4.36466 -------------------------------------------------------------------------------- /resutls/complete/index/bwtree_a_rand: -------------------------------------------------------------------------------- 1 | 1 1.002292 2.018814 3.978628 7.8605916 14.837632 16.864964 12.9361128 6.43655192 4.69206200 4.66236 -------------------------------------------------------------------------------- /resutls/complete/index/bwtree_c_mono: -------------------------------------------------------------------------------- 1 | 1 1.263652 2.703714 5.493928 11.188816 21.831132 33.478764 52.2319128 90.9429192 105.716200 41.9368 -------------------------------------------------------------------------------- /resutls/complete/index/bwtree_c_rand: -------------------------------------------------------------------------------- 1 | 1 1.059212 2.183134 4.532528 8.5215316 17.784432 24.536964 38.0185128 60.1442192 77.1581200 72.7167 -------------------------------------------------------------------------------- /resutls/complete/index/bwtree_e_mono: -------------------------------------------------------------------------------- 1 | 1 0.6642722 1.281284 2.511018 5.0420216 10.001332 14.475964 17.7994128 28.178192 26.5322200 13.3183 -------------------------------------------------------------------------------- /resutls/complete/index/bwtree_e_rand: -------------------------------------------------------------------------------- 1 | 1 0.3989142 0.8287494 1.628638 3.2315716 6.2873932 9.0007164 12.1862128 19.0292192 22.3835200 21.9892 -------------------------------------------------------------------------------- /resutls/complete/index/masstree_a_mono: -------------------------------------------------------------------------------- 1 | 1 1.984992 3.627814 7.020478 13.678516 24.372732 19.549564 14.5315128 7.26867192 6.25103200 5.12096 -------------------------------------------------------------------------------- /resutls/complete/index/masstree_a_rand: -------------------------------------------------------------------------------- 1 | 1 1.725412 3.485624 6.960258 13.8116 24.658932 19.956864 14.0871128 8.35603192 5.91138200 5.26748 -------------------------------------------------------------------------------- /resutls/complete/index/masstree_c_mono: -------------------------------------------------------------------------------- 1 | 1 2.192962 4.100754 8.277198 16.559316 30.361532 47.00264 75.8634128 119.768192 131.088200 56.4764 -------------------------------------------------------------------------------- /resutls/complete/index/masstree_c_rand: -------------------------------------------------------------------------------- 1 | 1 1.873792 3.789354 8.059388 16.198416 32.765732 38.279364 47.5554128 55.8684192 143.666200 107.641 -------------------------------------------------------------------------------- /resutls/complete/index/masstree_e_mono: -------------------------------------------------------------------------------- 1 | 1 0.7014042 1.318244 2.526648 4.939316 9.5802332 11.873764 10.7205128 3.57584192 2.88583200 4.09137 -------------------------------------------------------------------------------- /resutls/complete/index/masstree_e_rand: -------------------------------------------------------------------------------- 1 | 1 0.2793812 0.569454 1.143348 2.2750116 4.4448332 5.6418664 8.38255128 12.0302192 14.4066200 15.7559 -------------------------------------------------------------------------------- /resutls/temp/btreeolc/btreeolc_a_mono: -------------------------------------------------------------------------------- 1 | 1 1.687362 3.452384 6.850698 13.327916 25.592332 29.816464 36.1784128 32.3831192 30.3955200 28.8065 -------------------------------------------------------------------------------- /resutls/temp/btreeolc/btreeolc_a_rand: -------------------------------------------------------------------------------- 1 | 1 1.745682 3.525274 6.613698 13.456416 25.489632 29.01964 32.6963128 29.0817192 27.2577200 28.2758 -------------------------------------------------------------------------------- /resutls/temp/btreeolc/btreeolc_c_mono: -------------------------------------------------------------------------------- 1 | 1 1.765432 3.605134 7.115958 14.411716 27.957332 38.427564 44.775128 42.1558192 37.2052200 45.5597 -------------------------------------------------------------------------------- /resutls/temp/btreeolc/btreeolc_c_rand: -------------------------------------------------------------------------------- 1 | 1 1.779912 3.603964 7.413688 14.533616 28.27432 39.324764 45.4936128 42.6267192 42.0172200 45.7896 -------------------------------------------------------------------------------- /resutls/temp/btreeolc/btreeolc_e_mono: -------------------------------------------------------------------------------- 1 | 1 1.033382 2.019674 3.932448 7.8623416 15.517732 21.840664 24.097128 21.8741192 19.4639200 18.6349 -------------------------------------------------------------------------------- /resutls/temp/btreeolc/btreeolc_e_rand: -------------------------------------------------------------------------------- 1 | 1 1.055322 2.10874 4.201828 8.1379316 15.260732 19.481764 24.397128 20.3359192 16.7054200 16.2006 -------------------------------------------------------------------------------- /resutls/temp/bwtree/bwtree_e_rand: -------------------------------------------------------------------------------- 1 | 1 0.4066242 0.8141694 1.615138 3.2098616 6.3386332 8.9209964 10.0133128 8.93705192 6.93459200 6.07416 -------------------------------------------------------------------------------- /resutls/temp/masstree/masstree_a_mono: -------------------------------------------------------------------------------- 1 | 1 1.968162 3.661164 7.165198 13.816116 24.908132 19.473564 16.9929128 9.96178192 7.59397200 7.66654 -------------------------------------------------------------------------------- /resutls/temp/masstree/masstree_c_mono: -------------------------------------------------------------------------------- 1 | 1 2.202722 4.165214 8.066918 16.428116 33.254132 40.293764 46.8971128 52.1942192 54.1096200 56.2168 -------------------------------------------------------------------------------- /resutls/temp/masstree/masstree_c_rand: -------------------------------------------------------------------------------- 1 | 1 1.91632 4.001734 8.079488 15.569616 33.614732 48.429464 55.5747128 53.135192 55.5219200 49.9935 -------------------------------------------------------------------------------- /resutls/temp/masstree/masstree_e_mono: -------------------------------------------------------------------------------- 1 | 1 0.7127592 1.331924 2.567758 4.9236316 9.4587432 12.145664 10.4557128 8.42875192 6.87403200 6.77092 -------------------------------------------------------------------------------- /resutls/temp/masstree/masstree_e_rand: -------------------------------------------------------------------------------- 1 | 1 0.2783392 0.5626654 1.136498 2.2517816 4.4325132 5.5310364 6.16405128 5.06209192 4.5658200 4.5798 -------------------------------------------------------------------------------- /wormhole/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile 2 | # no builtin rules/vars 3 | MAKEFLAGS += -r -R 4 | include Makefile.local 5 | include Makefile.common 6 | -------------------------------------------------------------------------------- /resutls/complete/index/skiplist_a_mono: -------------------------------------------------------------------------------- 1 | 1 0.3146222 0.5056844 0.8773938 1.2085716 1.665632 2.4919664 2.78934128 8.77034192 0.990457200 4.46161 -------------------------------------------------------------------------------- /resutls/complete/index/skiplist_a_rand: -------------------------------------------------------------------------------- 1 | 1 0.1392 0.3922554 0.8758698 0.89832416 1.133932 0.73786864 1.0056128 0.111765192 0.124647200 0.142652 -------------------------------------------------------------------------------- /resutls/complete/index/skiplist_c_mono: -------------------------------------------------------------------------------- 1 | 1 0.2995922 0.5723484 0.8241028 1.4658516 1.7106432 2.9764164 3.86124128 0.445586192 0.416336200 1.41917 -------------------------------------------------------------------------------- /resutls/complete/index/skiplist_e_mono: -------------------------------------------------------------------------------- 1 | 1 0.1358482 0.2604014 0.4271128 0.68961816 0.86837132 2.2229464 1.65206128 1.29189192 1.95645200 1.07912 -------------------------------------------------------------------------------- /resutls/temp/skiplist/skiplist_a_mono: -------------------------------------------------------------------------------- 1 | 1 0.2703362 0.507074 0.6204858 1.2339416 1.7774932 1.7625564 0.943408128 1.15831192 1.24954200 1.02852 -------------------------------------------------------------------------------- /resutls/temp/skiplist/skiplist_a_rand: -------------------------------------------------------------------------------- 1 | 1 0.1709892 0.3627024 0.7092388 1.0621716 0.6095732 0.89540164 1.49258128 0.821479192 0.610904200 0.946894 -------------------------------------------------------------------------------- /resutls/temp/skiplist/skiplist_c_mono: -------------------------------------------------------------------------------- 1 | 1 0.2726782 0.5264854 0.9490148 1.1756916 2.3862732 3.1610564 1.43093128 2.48463192 0.770295200 1.6517 -------------------------------------------------------------------------------- /resutls/temp/skiplist/skiplist_c_rand: -------------------------------------------------------------------------------- 1 | 1 0.1911032 0.4062114 0.7216498 1.0468516 0.85565132 0.824264 1.55283128 0.535916192 1.39045200 1.11419 -------------------------------------------------------------------------------- /resutls/temp/skiplist/skiplist_e_mono: -------------------------------------------------------------------------------- 1 | 1 0.140012 0.2545394 0.4147198 0.70428316 0.95296832 1.1481664 1.17619128 0.811345192 0.946545200 0.643199 -------------------------------------------------------------------------------- /resutls/temp/skiplist/skiplist_e_rand: -------------------------------------------------------------------------------- 1 | 1 0.2042742 0.3827034 0.8237428 0.99839416 0.97891432 1.5261164 1.41044128 1.27233192 0.628823200 0.713725 -------------------------------------------------------------------------------- /resutls/complete/index/skiplist_c_rand: -------------------------------------------------------------------------------- 1 | 1 0.1614032 0.3774944 0.7755578 1.1242116 0.93036632 2.3127364 0.637278128 0.962833192 0.154665200 0.165748 -------------------------------------------------------------------------------- /resutls/complete/index/skiplist_e_rand: -------------------------------------------------------------------------------- 1 | 1 0.2033132 0.2510824 0.8921498 0.95641916 0.95796732 1.0418264 0.50549128 0.171849192 0.164611200 0.544326 -------------------------------------------------------------------------------- /masstree/AUTHORS: -------------------------------------------------------------------------------- 1 | Eddie Kohler 2 | kohler@seas.harvard.edu 3 | 4 | Yandong Mao 5 | ydmao@csail.mit.edu 6 | 7 | Robert Morris 8 | rtm@csail.mit.edu 9 | -------------------------------------------------------------------------------- /pcm/MacMSRDriver/PcmMsr/PcmMsr-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'PcmMsr' target in the 'PcmMsr' project 3 | // 4 | 5 | -------------------------------------------------------------------------------- /precompute/artolc_a_rand: -------------------------------------------------------------------------------- 1 | 28 22.4516 2 | 56 39.2742 3 | 84 47.8771 4 | 112 48.8458 5 | 140 45.4982 6 | 168 68.6858 7 | 196 74.2407 8 | 224 108.001 9 | -------------------------------------------------------------------------------- /precompute/artolc_b_rand: -------------------------------------------------------------------------------- 1 | 28 21.1775 2 | 56 36.8602 3 | 84 49.8445 4 | 112 57.5097 5 | 140 82.5388 6 | 168 56.2183 7 | 196 63.6722 8 | 224 90.2081 9 | -------------------------------------------------------------------------------- /precompute/hydralist_a_rand: -------------------------------------------------------------------------------- 1 | 28 41.6849 2 | 56 61.0906 3 | 84 81.6909 4 | 112 103.677 5 | 140 119.905 6 | 168 139.273 7 | 196 153.269 8 | 224 166.919 9 | -------------------------------------------------------------------------------- /precompute/hydralist_c_rand: -------------------------------------------------------------------------------- 1 | 28 53.8266 2 | 56 72.7291 3 | 84 113.447 4 | 112 146.929 5 | 140 168.5 6 | 168 177.47 7 | 196 215.291 8 | 224 229.062 9 | -------------------------------------------------------------------------------- /resutls/wh_unsafe_string_100M/index/c_email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/resutls/wh_unsafe_string_100M/index/c_email.png -------------------------------------------------------------------------------- /libcuckoo/tests/unit-tests/int_int_table.cc: -------------------------------------------------------------------------------- 1 | extern "C" { 2 | #include "int_int_table.h" 3 | } 4 | 5 | #include 6 | -------------------------------------------------------------------------------- /libcuckoo/tests/unit-tests/test_runner.cc: -------------------------------------------------------------------------------- 1 | // This file will be the entry point for the test runner 2 | #define CATCH_CONFIG_MAIN 3 | #include 4 | -------------------------------------------------------------------------------- /precompute_string/artolc_a_email: -------------------------------------------------------------------------------- 1 | 28 9.06746 2 | 56 13.8553 3 | 84 17.9284 4 | 112 19.9437 5 | 140 20.6362 6 | 168 23.0981 7 | 196 27.465 8 | 224 28.4244 9 | -------------------------------------------------------------------------------- /precompute_string/artolc_b_email: -------------------------------------------------------------------------------- 1 | 28 10.601 2 | 56 17.7801 3 | 84 23.8696 4 | 112 28.4268 5 | 140 33.1754 6 | 168 37.4493 7 | 196 42.3113 8 | 224 45.356 9 | -------------------------------------------------------------------------------- /precompute_string/artolc_c_email: -------------------------------------------------------------------------------- 1 | 28 23.4587 2 | 56 38.7655 3 | 84 53.3198 4 | 112 65.4851 5 | 140 73.9474 6 | 168 91.6179 7 | 196 104.543 8 | 224 113.41 9 | -------------------------------------------------------------------------------- /precompute_string/artolc_d_email: -------------------------------------------------------------------------------- 1 | 28 22.0115 2 | 56 35.3522 3 | 84 47.7819 4 | 112 57.6107 5 | 140 66.4759 6 | 168 79.8151 7 | 196 89.6068 8 | 224 98.1801 9 | -------------------------------------------------------------------------------- /precompute_string/artolc_e_email: -------------------------------------------------------------------------------- 1 | 28 3.43202 2 | 56 5.78832 3 | 84 7.97674 4 | 112 10.5008 5 | 140 12.059 6 | 168 14.2297 7 | 196 15.607 8 | 224 18.6532 9 | -------------------------------------------------------------------------------- /precompute_string/btreeolc_a_email: -------------------------------------------------------------------------------- 1 | 28 18.6404 2 | 56 15.069 3 | 84 14.9315 4 | 112 2.27564 5 | 140 3.94325 6 | 168 4.16653 7 | 196 2.65824 8 | 224 3.02613 9 | -------------------------------------------------------------------------------- /precompute_string/btreeolc_b_email: -------------------------------------------------------------------------------- 1 | 28 24.9546 2 | 56 23.6816 3 | 84 22.2343 4 | 112 33.1559 5 | 140 19.083 6 | 168 22.7367 7 | 196 7.82083 8 | 224 7.66722 9 | -------------------------------------------------------------------------------- /precompute_string/btreeolc_d_email: -------------------------------------------------------------------------------- 1 | 28 23.4343 2 | 56 21.509 3 | 84 20.2059 4 | 112 28.9088 5 | 140 9.98937 6 | 168 11.3592 7 | 196 4.58763 8 | 224 4.81235 9 | -------------------------------------------------------------------------------- /precompute_string/bwtree_a_email: -------------------------------------------------------------------------------- 1 | 28 9.39659 2 | 56 10.1766 3 | 84 9.19795 4 | 112 12.4178 5 | 140 12.1652 6 | 168 15.0063 7 | 196 11.7961 8 | 224 8.89908 9 | -------------------------------------------------------------------------------- /precompute_string/bwtree_b_email: -------------------------------------------------------------------------------- 1 | 28 17.5084 2 | 56 21.6193 3 | 84 19.3957 4 | 112 29.7497 5 | 140 24.5158 6 | 168 28.6464 7 | 196 30.2451 8 | 224 31.5593 9 | -------------------------------------------------------------------------------- /precompute_string/bwtree_c_email: -------------------------------------------------------------------------------- 1 | 28 16.3259 2 | 56 20.0377 3 | 84 18.3526 4 | 112 29.072 5 | 140 29.9315 6 | 168 38.3747 7 | 196 40.4721 8 | 224 44.705 9 | -------------------------------------------------------------------------------- /precompute_string/bwtree_d_email: -------------------------------------------------------------------------------- 1 | 28 15.0658 2 | 56 17.3877 3 | 84 14.872 4 | 112 24.1763 5 | 140 24.6789 6 | 168 31.5705 7 | 196 33.4987 8 | 224 30.7747 9 | -------------------------------------------------------------------------------- /precompute_string/bwtree_e_email: -------------------------------------------------------------------------------- 1 | 28 4.95464 2 | 56 6.63457 3 | 84 5.99687 4 | 112 9.58371 5 | 140 9.78902 6 | 168 12.303 7 | 196 9.55042 8 | 224 4.91468 9 | -------------------------------------------------------------------------------- /precompute_string/hydralist_d_email: -------------------------------------------------------------------------------- 1 | 28 20.1393 2 | 56 32.038 3 | 84 43.32 4 | 112 54.8537 5 | 140 62.5146 6 | 168 72.2191 7 | 196 84.248 8 | 224 93.1253 9 | -------------------------------------------------------------------------------- /precompute_string/masstree_b_email: -------------------------------------------------------------------------------- 1 | 28 6.83528 2 | 56 44.3315 3 | 84 53.1703 4 | 112 65.892 5 | 140 69.1836 6 | 168 65.989 7 | 196 66.142 8 | 224 40.8367 9 | -------------------------------------------------------------------------------- /precompute_string/masstree_e_email: -------------------------------------------------------------------------------- 1 | 28 2.67492 2 | 56 6.15477 3 | 84 5.97848 4 | 112 8.8173 5 | 140 9.40006 6 | 168 11.9636 7 | 196 12.5971 8 | 224 14.7179 9 | -------------------------------------------------------------------------------- /precompute_string/wormhole_b_email: -------------------------------------------------------------------------------- 1 | 28 32.8982 2 | 56 39.5359 3 | 84 38.522 4 | 112 28.7498 5 | 140 24.6183 6 | 168 22.2766 7 | 196 20.1107 8 | 224 19.0025 9 | -------------------------------------------------------------------------------- /pcm/MacMSRDriver/kextunload.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | kextunload /Library/Extensions/PcmMsrDriver.kext 4 | rm -rf /Library/Extensions/PcmMsrDriver.kext 5 | -------------------------------------------------------------------------------- /precompute/hydralist_insertOnly_rand: -------------------------------------------------------------------------------- 1 | 28 30.9868 2 | 56 49.2442 3 | 84 61.8713 4 | 112 71.3929 5 | 140 75.5035 6 | 168 77.7374 7 | 196 79.0126 8 | 224 75.0099 9 | -------------------------------------------------------------------------------- /precompute/wormhole_insertOnly_rand: -------------------------------------------------------------------------------- 1 | 28 6.03475 2 | 56 4.27365 3 | 84 3.92726 4 | 112 3.66054 5 | 140 3.30941 6 | 168 2.94317 7 | 196 2.9054 8 | 224 3.07531 9 | -------------------------------------------------------------------------------- /precompute_string/btreeolc_c_email: -------------------------------------------------------------------------------- 1 | 28 25.7263 2 | 56 24.7035 3 | 84 23.1098 4 | 112 35.4391 5 | 140 15.6149 6 | 168 17.2559 7 | 196 5.72705 8 | 224 6.27175 9 | -------------------------------------------------------------------------------- /precompute_string/btreeolc_e_email: -------------------------------------------------------------------------------- 1 | 28 12.5705 2 | 56 10.2258 3 | 84 9.84964 4 | 112 10.9986 5 | 140 2.79771 6 | 168 2.55242 7 | 196 1.94349 8 | 224 2.25336 9 | -------------------------------------------------------------------------------- /precompute_string/hydralist_a_email: -------------------------------------------------------------------------------- 1 | 28 17.6479 2 | 56 27.6663 3 | 84 33.8421 4 | 112 40.0063 5 | 140 52.7349 6 | 168 58.0023 7 | 196 63.448 8 | 224 66.5932 9 | -------------------------------------------------------------------------------- /precompute_string/hydralist_b_email: -------------------------------------------------------------------------------- 1 | 28 20.5311 2 | 56 34.0146 3 | 84 46.741 4 | 112 56.6249 5 | 140 70.8143 6 | 168 76.4808 7 | 196 83.0594 8 | 224 92.1487 9 | -------------------------------------------------------------------------------- /precompute_string/hydralist_c_email: -------------------------------------------------------------------------------- 1 | 28 21.5752 2 | 56 34.7552 3 | 84 47.6897 4 | 112 59.7309 5 | 140 71.8052 6 | 168 79.735 7 | 196 86.3166 8 | 224 97.3278 9 | -------------------------------------------------------------------------------- /precompute_string/hydralist_e_email: -------------------------------------------------------------------------------- 1 | 28 9.45715 2 | 56 12.5144 3 | 84 12.3863 4 | 112 17.8567 5 | 140 18.3688 6 | 168 21.9949 7 | 196 16.7084 8 | 224 12.3231 9 | -------------------------------------------------------------------------------- /precompute_string/masstree_a_email: -------------------------------------------------------------------------------- 1 | 28 6.36098 2 | 56 15.0428 3 | 84 15.5797 4 | 112 14.3199 5 | 140 14.3873 6 | 168 14.5359 7 | 196 14.7105 8 | 224 14.5543 9 | -------------------------------------------------------------------------------- /precompute_string/masstree_c_email: -------------------------------------------------------------------------------- 1 | 28 8.27959 2 | 56 46.4853 3 | 84 54.6771 4 | 112 72.2431 5 | 140 82.7458 6 | 168 96.1287 7 | 196 101.484 8 | 224 102.425 9 | -------------------------------------------------------------------------------- /precompute_string/masstree_d_email: -------------------------------------------------------------------------------- 1 | 28 7.75301 2 | 56 42.1446 3 | 84 48.2135 4 | 112 61.8617 5 | 140 70.4596 6 | 168 78.6297 7 | 196 82.2328 8 | 224 87.3035 9 | -------------------------------------------------------------------------------- /precompute_string/wormhole_a_email: -------------------------------------------------------------------------------- 1 | 28 21.5804 2 | 56 24.8592 3 | 84 23.5616 4 | 112 33.0326 5 | 140 34.2556 6 | 168 37.8756 7 | 196 43.1607 8 | 224 36.2568 9 | -------------------------------------------------------------------------------- /precompute_string/wormhole_c_email: -------------------------------------------------------------------------------- 1 | 28 34.3367 2 | 56 41.9039 3 | 84 50.1893 4 | 112 56.5412 5 | 140 53.9248 6 | 168 62.7315 7 | 196 66.1727 8 | 224 74.1299 9 | -------------------------------------------------------------------------------- /precompute_string/wormhole_d_email: -------------------------------------------------------------------------------- 1 | 28 33.1819 2 | 56 40.9493 3 | 84 41.5247 4 | 112 54.0815 5 | 140 70.3772 6 | 168 76.7129 7 | 196 75.9911 8 | 224 84.3567 9 | -------------------------------------------------------------------------------- /precompute_string/artolc_insertOnly_email: -------------------------------------------------------------------------------- 1 | 28 20.8677 2 | 56 26.2429 3 | 84 30.7904 4 | 112 32.4707 5 | 140 33.1931 6 | 168 34.542 7 | 196 32.3948 8 | 224 31.9268 9 | -------------------------------------------------------------------------------- /precompute_string/btreeolc_insertOnly_email: -------------------------------------------------------------------------------- 1 | 28 13.3057 2 | 56 10.227 3 | 84 9.74291 4 | 112 6.56249 5 | 140 2.67758 6 | 168 2.94602 7 | 196 2.09796 8 | 224 1.83255 9 | -------------------------------------------------------------------------------- /precompute_string/bwtree_insertOnly_email: -------------------------------------------------------------------------------- 1 | 28 10.8234 2 | 56 11.6043 3 | 84 11.0441 4 | 112 14.9761 5 | 140 15.3141 6 | 168 17.5986 7 | 196 16.9263 8 | 224 17.9435 9 | -------------------------------------------------------------------------------- /precompute_string/wormhole_insertOnly_email: -------------------------------------------------------------------------------- 1 | 28 4.75729 2 | 56 3.43876 3 | 84 3.2754 4 | 112 2.98105 5 | 140 2.7018 6 | 168 2.55549 7 | 196 2.54747 8 | 224 2.57519 9 | -------------------------------------------------------------------------------- /precompute_string/hydralist_insertOnly_email: -------------------------------------------------------------------------------- 1 | 28 14.8187 2 | 56 23.7661 3 | 84 31.8223 4 | 112 39.4639 5 | 140 42.6218 6 | 168 45.4663 7 | 196 45.8195 8 | 224 44.9801 9 | -------------------------------------------------------------------------------- /precompute_string/masstree_insertOnly_email: -------------------------------------------------------------------------------- 1 | 28 0.765348 2 | 56 11.7247 3 | 84 11.6075 4 | 112 11.8412 5 | 140 11.6014 6 | 168 11.8456 7 | 196 12.1151 8 | 224 11.7914 9 | -------------------------------------------------------------------------------- /masstree/doc/.gitignore: -------------------------------------------------------------------------------- 1 | *.aux 2 | *.bbl 3 | *.blg 4 | *.dvi 5 | *.log 6 | *.mpx 7 | *_[0-9]*.eps 8 | *_[0-9]*.pdf 9 | !GNUmakefile 10 | mpxerr.tex 11 | spec.pdf 12 | -------------------------------------------------------------------------------- /pcm/PCM-IIO_Win/pcm-iio-win.cpp: -------------------------------------------------------------------------------- 1 | // pcm-iio-win.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | #include "../pcm-iio.cpp" 7 | -------------------------------------------------------------------------------- /pcm/PCM-MSR_Win/pcm-msr-win.cpp: -------------------------------------------------------------------------------- 1 | // pcm-msr-win.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | #include "../pcm-msr.cpp" 7 | -------------------------------------------------------------------------------- /pcm/PCM-Service_Win/PCM-Service.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /pcm/PCM-TSX_Win/pcm-tsx-win.cpp: -------------------------------------------------------------------------------- 1 | // pcm-tsx-win.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | #include "../pcm-tsx.cpp" 7 | -------------------------------------------------------------------------------- /pcm/daemon/.gitignore: -------------------------------------------------------------------------------- 1 | .project 2 | client/.project 3 | client/.cproject 4 | client/Debug/client 5 | daemon/.project 6 | daemon/.cproject 7 | daemon/Debug/daemon 8 | daemon/test/test -------------------------------------------------------------------------------- /libcuckoo/tests/Catch/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(catch INTERFACE) 2 | target_include_directories(catch INTERFACE 3 | $ 4 | ) -------------------------------------------------------------------------------- /pcm/PCM-Core_Win/pcm-core-win.cpp: -------------------------------------------------------------------------------- 1 | // pcm-core-win.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | #include "../pcm-core.cpp" 7 | -------------------------------------------------------------------------------- /pcm/PCM-LSPCI_Win/pcm-lspci-win.cpp: -------------------------------------------------------------------------------- 1 | // pcm-lspci-win.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | #include "../pcm-lspci.cpp" 7 | -------------------------------------------------------------------------------- /pcm/PCM-NUMA_Win/pcm-numa-win.cpp: -------------------------------------------------------------------------------- 1 | // pcm-numa-win.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | #include "../pcm-numa.cpp" 7 | -------------------------------------------------------------------------------- /pcm/PCM-PCIE_Win/pcm-pcie-win.cpp: -------------------------------------------------------------------------------- 1 | // pcm-pcie-win.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | #include "../pcm-pcie.cpp" 7 | -------------------------------------------------------------------------------- /pcm/PCM-Power_Win/pcm-power-win.cpp: -------------------------------------------------------------------------------- 1 | // pcm-power-win.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | #include "../pcm-power.cpp" 7 | -------------------------------------------------------------------------------- /pcm/PCM-Memory_Win/pcm-memory-win.cpp: -------------------------------------------------------------------------------- 1 | // pcm-memory-win.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | #include "../pcm-memory.cpp" 7 | -------------------------------------------------------------------------------- /pcm/PCM-PCICFG_Win/pcm-pcicfg-win.cpp: -------------------------------------------------------------------------------- 1 | // pcm-pcicfg-win.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | #include "../pcm-pcicfg.cpp" 7 | -------------------------------------------------------------------------------- /libcuckoo/libcuckoo-c/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install( 2 | FILES 3 | cuckoo_table_template.h 4 | cuckoo_table_template.cc 5 | DESTINATION 6 | ${CMAKE_INSTALL_PREFIX}/include/libcuckoo-c 7 | ) 8 | -------------------------------------------------------------------------------- /pcm/PCM-Latency_Win/pcm-latency-win.cpp: -------------------------------------------------------------------------------- 1 | // pcm-latency-win.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "stdafx.h" 5 | 6 | #include "../pcm-latency.cpp" 7 | -------------------------------------------------------------------------------- /pcm/TODO: -------------------------------------------------------------------------------- 1 | 2 | TODO 3 | 4 | * Support non-zero invert and cmask fields for custom events 5 | * Remember and handle properly the PMU program mode globally on the box/system 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /rotate-skiplist/atomic_ops/AUTHORS: -------------------------------------------------------------------------------- 1 | Originally written by Hans Boehm, with some platform-dependent code 2 | imported from the Boehm-Demers-Weiser GC, where it was contributed 3 | by many others. 4 | 5 | -------------------------------------------------------------------------------- /nohotspot-skiplist/atomic_ops/AUTHORS: -------------------------------------------------------------------------------- 1 | Originally written by Hans Boehm, with some platform-dependent code 2 | imported from the Boehm-Demers-Weiser GC, where it was contributed 3 | by many others. 4 | 5 | -------------------------------------------------------------------------------- /pcm/WinMSRDriver/Win7/mymake.bat: -------------------------------------------------------------------------------- 1 | set BUILD_PATH= 2 | 3 | rmdir /S /Q objfre_win7_amd64 4 | nmake 5 | 6 | rem chdir objfre_win7_amd64\amd64 7 | rem copy msr.sys c:\ 8 | rem chdir .. 9 | rem chdir .. -------------------------------------------------------------------------------- /precompute/wormhole_a_rand: -------------------------------------------------------------------------------- 1 | 28 27.1213 2 | 56 30.6242 3 | 84 29.5609 4 | 112 39.2857 5 | 140 48.4793 6 | 168 45.1663 7 | 196 52.357 8 | 224 12.8176 9 | 252 11.7397 10 | 280 13.976 11 | 308 8.35923 12 | -------------------------------------------------------------------------------- /precompute/wormhole_b_rand: -------------------------------------------------------------------------------- 1 | 28 27.1561 2 | 56 30.2024 3 | 84 31.7539 4 | 112 39.8654 5 | 140 45.0683 6 | 168 36.4127 7 | 196 25.029 8 | 224 6.21983 9 | 252 8.69176 10 | 280 19.0966 11 | 308 8.86818 12 | -------------------------------------------------------------------------------- /precompute/wormhole_c_rand: -------------------------------------------------------------------------------- 1 | 28 44.0084 2 | 56 51.7617 3 | 84 61.5965 4 | 112 70.1704 5 | 140 78.0974 6 | 168 84.2335 7 | 196 83.0389 8 | 224 88.4827 9 | 252 76.211 10 | 280 75.1463 11 | 308 69.6571 12 | -------------------------------------------------------------------------------- /precompute/wormhole_d_rand: -------------------------------------------------------------------------------- 1 | 28 34.0069 2 | 56 48.3112 3 | 84 63.7883 4 | 112 73.9261 5 | 140 78.2022 6 | 168 84.1463 7 | 196 92.6777 8 | 224 98.529 9 | 252 89.1493 10 | 280 90.5076 11 | 308 70.0396 12 | -------------------------------------------------------------------------------- /libcuckoo/tests/pcg/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(pcg INTERFACE) 2 | 3 | # Include relative to the base directory 4 | target_include_directories(pcg INTERFACE 5 | $ 6 | ) 7 | 8 | -------------------------------------------------------------------------------- /libcuckoo/tests/unit-tests/unit_test_util.cc: -------------------------------------------------------------------------------- 1 | #include "unit_test_util.hh" 2 | 3 | std::atomic &get_unfreed_bytes() { 4 | static std::atomic unfreed_bytes(0L); 5 | return unfreed_bytes; 6 | } 7 | -------------------------------------------------------------------------------- /hot/lib/hot/single-threaded/include/hot/singlethreaded/.HOTSingleThreaded.hpp.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/hot/lib/hot/single-threaded/include/hot/singlethreaded/.HOTSingleThreaded.hpp.swp -------------------------------------------------------------------------------- /nohotspot-skiplist/atomic_ops/README: -------------------------------------------------------------------------------- 1 | This directory contains a stripped-down (support only gcc) version of libatomic_ops by Hans Boehm. 2 | The official release is available from http://www.hpl.hp.com/research/linux/atomic_ops/. 3 | -------------------------------------------------------------------------------- /rotate-skiplist/atomic_ops/README: -------------------------------------------------------------------------------- 1 | This directory contains a stripped-down (support only gcc) version of libatomic_ops by Hans Boehm. 2 | The official release is available from http://www.hpl.hp.com/research/linux/atomic_ops/. 3 | -------------------------------------------------------------------------------- /pcm/MacMSRDriver/kextload.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | cp -R build/Release/PcmMsrDriver.kext /Library/Extensions/. 4 | chown -R root:wheel /Library/Extensions/PcmMsrDriver.kext 5 | kextload /Library/Extensions/PcmMsrDriver.kext 6 | -------------------------------------------------------------------------------- /pcm/MacMSRDriver/PcmMsr.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /libcuckoo/libcuckoo/libcuckoo-config.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # libcuckoo-config.cmake 3 | # 4 | 5 | include (CMakeFindDependencyMacro) 6 | 7 | set(THREADS_PREFER_PTHREAD_FLAG ON) 8 | find_dependency(Threads) 9 | 10 | include ("${CMAKE_CURRENT_LIST_DIR}/libcuckoo-targets.cmake") 11 | -------------------------------------------------------------------------------- /pcm/MacMSRDriver/PcmMsr.xcodeproj/project.xcworkspace/xcuserdata/aiott.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/pcm/MacMSRDriver/PcmMsr.xcodeproj/project.xcworkspace/xcuserdata/aiott.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /pcm/MacMSRDriver/PcmMsr.xcodeproj/project.xcworkspace/xcuserdata/pjkerly.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmoss-jigu/hydralist/HEAD/pcm/MacMSRDriver/PcmMsr.xcodeproj/project.xcworkspace/xcuserdata/pjkerly.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /pcm/.travis.yml: -------------------------------------------------------------------------------- 1 | language: cpp 2 | 3 | dist: trusty 4 | 5 | script: 6 | - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cd MacMSRDriver && make kext library && cd ..; fi 7 | - make 8 | 9 | os: 10 | - linux 11 | - osx 12 | 13 | compiler: 14 | - gcc 15 | - clang 16 | 17 | -------------------------------------------------------------------------------- /precompute/artolc_c_rand: -------------------------------------------------------------------------------- 1 | 28 55.3891 2 | 56 95.0258 3 | 84 129.277 4 | 112 166.986 5 | 140 201.721 6 | 168 216.226 7 | 196 241.881 8 | 224 260.486 9 | 252 267.475 10 | 280 268.226 11 | 308 258.977 12 | 336 275.993 13 | 364 268.269 14 | 392 246.045 15 | 420 241.39 16 | 448 228.005 17 | -------------------------------------------------------------------------------- /precompute/artolc_e_rand: -------------------------------------------------------------------------------- 1 | 28 7.66678 2 | 56 12.5312 3 | 84 17.6813 4 | 112 21.8895 5 | 140 26.0561 6 | 168 29.3156 7 | 196 31.9943 8 | 224 35.375 9 | 252 32.2513 10 | 280 34.0115 11 | 308 35.2954 12 | 336 36.0331 13 | 364 35.4606 14 | 392 36.3681 15 | 420 34.6365 16 | 448 35.1978 17 | -------------------------------------------------------------------------------- /precompute/btreeolc_b_rand: -------------------------------------------------------------------------------- 1 | 28 32.7181 2 | 56 20.7699 3 | 84 13.5216 4 | 112 3.14554 5 | 140 2.35802 6 | 168 2.44675 7 | 196 2.18995 8 | 224 2.5215 9 | 252 1.91252 10 | 280 1.98957 11 | 308 2.2534 12 | 336 2.3481 13 | 364 2.30124 14 | 392 2.4588 15 | 420 2.46141 16 | 448 2.56456 17 | -------------------------------------------------------------------------------- /precompute/btreeolc_e_rand: -------------------------------------------------------------------------------- 1 | 28 25.4742 2 | 56 18.4812 3 | 84 17.3426 4 | 112 7.34954 5 | 140 3.42655 6 | 168 3.75857 7 | 196 3.206 8 | 224 3.69883 9 | 252 2.62694 10 | 280 2.64445 11 | 308 2.98688 12 | 336 3.0622 13 | 364 3.33217 14 | 392 3.53706 15 | 420 3.84446 16 | 448 4.02679 17 | -------------------------------------------------------------------------------- /precompute/bwtree_a_rand: -------------------------------------------------------------------------------- 1 | 28 17.1691 2 | 56 17.6505 3 | 84 15.6302 4 | 112 22.1031 5 | 140 22.0515 6 | 168 25.37 7 | 196 25.864 8 | 224 26.2625 9 | 252 15.9009 10 | 280 4.61193 11 | 308 4.07181 12 | 336 3.83049 13 | 364 4.74522 14 | 392 6.02289 15 | 420 7.17786 16 | 448 5.41459 17 | -------------------------------------------------------------------------------- /precompute/bwtree_b_rand: -------------------------------------------------------------------------------- 1 | 28 16.9787 2 | 56 17.7985 3 | 84 15.636 4 | 112 22.0477 5 | 140 22.8595 6 | 168 25.5494 7 | 196 26.0149 8 | 224 25.5793 9 | 252 12.1289 10 | 280 4.36982 11 | 308 4.09955 12 | 336 3.8049 13 | 364 4.71841 14 | 392 6.64844 15 | 420 7.99456 16 | 448 4.83681 17 | -------------------------------------------------------------------------------- /precompute/bwtree_c_rand: -------------------------------------------------------------------------------- 1 | 28 28.5831 2 | 56 36.4473 3 | 84 34.2244 4 | 112 54.7579 5 | 140 56.5526 6 | 168 74.48 7 | 196 78.6648 8 | 224 88.5051 9 | 252 22.513 10 | 280 16.5682 11 | 308 9.49635 12 | 336 8.414 13 | 364 11.3208 14 | 392 14.5374 15 | 420 14.2212 16 | 448 11.1724 17 | -------------------------------------------------------------------------------- /precompute/bwtree_d_rand: -------------------------------------------------------------------------------- 1 | 28 32.5233 2 | 56 40.022 3 | 84 37.9309 4 | 112 55.5551 5 | 140 45.0301 6 | 168 51.3399 7 | 196 53.8568 8 | 224 55.2886 9 | 252 34.0756 10 | 280 14.2619 11 | 308 9.39058 12 | 336 8.95887 13 | 364 11.2772 14 | 392 14.7471 15 | 420 15.3597 16 | 448 15.2397 17 | -------------------------------------------------------------------------------- /precompute/bwtree_e_rand: -------------------------------------------------------------------------------- 1 | 28 11.2032 2 | 56 13.9494 3 | 84 12.7239 4 | 112 19.8276 5 | 140 21.3293 6 | 168 25.2042 7 | 196 24.8125 8 | 224 26.0602 9 | 252 6.53095 10 | 280 4.47014 11 | 308 3.22945 12 | 336 3.16414 13 | 364 4.38237 14 | 392 4.97909 15 | 420 5.4737 16 | 448 4.63209 17 | -------------------------------------------------------------------------------- /precompute/artolc_d_rand: -------------------------------------------------------------------------------- 1 | 28 49.9872 2 | 56 80.3846 3 | 84 112.558 4 | 112 137.694 5 | 140 159.366 6 | 168 170.464 7 | 196 183.243 8 | 224 193.522 9 | 252 194.173 10 | 280 195.507 11 | 308 197.455 12 | 336 201.238 13 | 364 190.885 14 | 392 182.967 15 | 420 186.211 16 | 448 187.431 17 | -------------------------------------------------------------------------------- /precompute/btreeolc_a_rand: -------------------------------------------------------------------------------- 1 | 28 32.7407 2 | 56 20.8356 3 | 84 13.5445 4 | 112 3.21166 5 | 140 2.38101 6 | 168 2.43182 7 | 196 2.23117 8 | 224 2.54827 9 | 252 1.89972 10 | 280 1.98799 11 | 308 2.12712 12 | 336 2.28998 13 | 364 2.33234 14 | 392 2.44655 15 | 420 2.42607 16 | 448 2.57514 17 | -------------------------------------------------------------------------------- /precompute/btreeolc_c_rand: -------------------------------------------------------------------------------- 1 | 28 48.1295 2 | 56 46.5387 3 | 84 43.9929 4 | 112 67.5304 5 | 140 39.4613 6 | 168 38.5893 7 | 196 12.3292 8 | 224 11.0497 9 | 252 6.95364 10 | 280 7.67578 11 | 308 7.13035 12 | 336 7.38257 13 | 364 7.9866 14 | 392 9.18804 15 | 420 10.535 16 | 448 10.1155 17 | -------------------------------------------------------------------------------- /precompute/btreeolc_d_rand: -------------------------------------------------------------------------------- 1 | 28 41.6036 2 | 56 35.6007 3 | 84 33.6698 4 | 112 40.2928 5 | 140 11.6448 6 | 168 9.02807 7 | 196 6.15866 8 | 224 5.91348 9 | 252 4.32044 10 | 280 4.67938 11 | 308 5.22125 12 | 336 5.35696 13 | 364 6.10019 14 | 392 6.75819 15 | 420 8.36672 16 | 448 8.0566 17 | -------------------------------------------------------------------------------- /precompute/hydralist_b_rand: -------------------------------------------------------------------------------- 1 | 28 42.6627 2 | 56 61.0487 3 | 84 81.6768 4 | 112 93.1135 5 | 140 118.692 6 | 168 139.225 7 | 196 89.5509 8 | 224 167.176 9 | 252 173.641 10 | 280 125.925 11 | 308 184.749 12 | 336 71.6847 13 | 364 9.22227 14 | 392 191.482 15 | 420 190.924 16 | 448 181.76 17 | -------------------------------------------------------------------------------- /precompute/hydralist_d_rand: -------------------------------------------------------------------------------- 1 | 28 48.7541 2 | 56 75.7256 3 | 84 100.232 4 | 112 130.824 5 | 140 152.398 6 | 168 172.455 7 | 196 188.984 8 | 224 196.406 9 | 252 188.767 10 | 280 194.734 11 | 308 165.576 12 | 336 142.127 13 | 364 149.93 14 | 392 150.565 15 | 420 153.585 16 | 448 106.956 17 | -------------------------------------------------------------------------------- /precompute/hydralist_e_rand: -------------------------------------------------------------------------------- 1 | 28 9.22028 2 | 56 16.1129 3 | 84 22.3624 4 | 112 30.2877 5 | 140 36.8802 6 | 168 42.9021 7 | 196 48.899 8 | 224 50.6937 9 | 252 50.0528 10 | 280 53.9206 11 | 308 57.3897 12 | 336 60.5303 13 | 364 64.2371 14 | 392 62.4004 15 | 420 68.2125 16 | 448 66.2309 17 | -------------------------------------------------------------------------------- /precompute/masstree_a_rand: -------------------------------------------------------------------------------- 1 | 28 30.7372 2 | 56 17.6797 3 | 84 17.4838 4 | 112 18.2268 5 | 140 18.3527 6 | 168 18.0708 7 | 196 17.1593 8 | 224 17.5289 9 | 252 18.813 10 | 280 20.1529 11 | 308 20.1431 12 | 336 20.9346 13 | 364 21.4226 14 | 392 21.648 15 | 420 21.9048 16 | 448 21.5957 17 | -------------------------------------------------------------------------------- /precompute/masstree_b_rand: -------------------------------------------------------------------------------- 1 | 28 30.5847 2 | 56 18.5406 3 | 84 17.5035 4 | 112 18.0184 5 | 140 18.3918 6 | 168 18.1138 7 | 196 17.4633 8 | 224 17.7474 9 | 252 18.6187 10 | 280 19.5783 11 | 308 20.6103 12 | 336 20.9728 13 | 364 21.6989 14 | 392 20.8922 15 | 420 21.1915 16 | 448 20.6602 17 | -------------------------------------------------------------------------------- /precompute/masstree_c_rand: -------------------------------------------------------------------------------- 1 | 28 54.6795 2 | 56 77.6407 3 | 84 101.105 4 | 112 129.519 5 | 140 144.368 6 | 168 168.633 7 | 196 181.171 8 | 224 198.177 9 | 252 198.771 10 | 280 199.269 11 | 308 188.358 12 | 336 188.794 13 | 364 195.373 14 | 392 192.232 15 | 420 201.658 16 | 448 172.45 17 | -------------------------------------------------------------------------------- /precompute/masstree_d_rand: -------------------------------------------------------------------------------- 1 | 28 17.1922 2 | 56 70.7417 3 | 84 89.0662 4 | 112 105.404 5 | 140 110.922 6 | 168 117.387 7 | 196 115.074 8 | 224 116.267 9 | 252 114.58 10 | 280 111.572 11 | 308 107.002 12 | 336 103.282 13 | 364 98.0081 14 | 392 96.1198 15 | 420 89.5823 16 | 448 87.0983 17 | -------------------------------------------------------------------------------- /precompute/masstree_e_rand: -------------------------------------------------------------------------------- 1 | 28 6.00506 2 | 56 8.19544 3 | 84 8.32806 4 | 112 12.1299 5 | 140 12.9965 6 | 168 16.4943 7 | 196 17.2614 8 | 224 20.2412 9 | 252 16.3893 10 | 280 3.0009 11 | 308 3.83166 12 | 336 4.0789 13 | 364 5.28391 14 | 392 6.26307 15 | 420 7.03745 16 | 448 6.90596 17 | -------------------------------------------------------------------------------- /precompute/artolc_insertOnly_rand: -------------------------------------------------------------------------------- 1 | 28 44.8631 2 | 56 37.4511 3 | 84 38.5832 4 | 112 39.8715 5 | 140 40.8841 6 | 168 38.6689 7 | 196 38.2725 8 | 224 37.0199 9 | 252 39.2622 10 | 280 40.2383 11 | 308 40.2999 12 | 336 40.6614 13 | 364 41.0919 14 | 392 41.4194 15 | 420 39.0963 16 | 448 39.0687 17 | -------------------------------------------------------------------------------- /precompute/btreeolc_insertOnly_rand: -------------------------------------------------------------------------------- 1 | 28 17.9936 2 | 56 11.9206 3 | 84 7.7266 4 | 112 2.12825 5 | 140 1.80139 6 | 168 1.71805 7 | 196 1.1534 8 | 224 1.16442 9 | 252 0.938863 10 | 280 1.09324 11 | 308 1.08509 12 | 336 1.19607 13 | 364 1.14559 14 | 392 1.07331 15 | 420 1.1352 16 | 448 1.0894 17 | -------------------------------------------------------------------------------- /precompute/bwtree_insertOnly_rand: -------------------------------------------------------------------------------- 1 | 28 17.341 2 | 56 17.317 3 | 84 16.0878 4 | 112 22.0411 5 | 140 22.8104 6 | 168 26.4085 7 | 196 26.4448 8 | 224 26.7035 9 | 252 22.7915 10 | 280 10.9364 11 | 308 8.8866 12 | 336 8.21077 13 | 364 8.82262 14 | 392 8.76796 15 | 420 8.44406 16 | 448 9.30503 17 | -------------------------------------------------------------------------------- /hydralist/tests/OpLog/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB SRCS *.cpp) 2 | ADD_EXECUTABLE(opLogTest ${SRCS}) 3 | 4 | TARGET_LINK_LIBRARIES( 5 | opLogTest 6 | hydraList 7 | gtest 8 | numa 9 | art 10 | tbb 11 | ) 12 | 13 | add_test(NAME opLogTest 14 | COMMAND opLogTest) 15 | -------------------------------------------------------------------------------- /precompute/masstree_insertOnly_rand: -------------------------------------------------------------------------------- 1 | 28 6.73476 2 | 56 11.9584 3 | 84 11.7319 4 | 112 12.3059 5 | 140 12.4926 6 | 168 12.5002 7 | 196 12.2507 8 | 224 12.4897 9 | 252 13.5394 10 | 280 14.1795 11 | 308 14.0817 12 | 336 14.3267 13 | 364 14.3666 14 | 392 14.0531 15 | 420 14.0877 16 | 448 13.6171 17 | -------------------------------------------------------------------------------- /hydralist_string/tests/OpLog/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB SRCS *.cpp) 2 | ADD_EXECUTABLE(opLogTest ${SRCS}) 3 | 4 | TARGET_LINK_LIBRARIES( 5 | opLogTest 6 | hydraList 7 | gtest 8 | numa 9 | art 10 | tbb 11 | ) 12 | 13 | add_test(NAME opLogTest 14 | COMMAND opLogTest) 15 | -------------------------------------------------------------------------------- /libcuckoo/tests/unit-tests/int_int_table.h: -------------------------------------------------------------------------------- 1 | #ifndef INT_INT_TABLE_H 2 | #define INT_INT_TABLE_H 3 | 4 | #define CUCKOO_TABLE_NAME int_int_table 5 | #define CUCKOO_KEY_TYPE int 6 | #define CUCKOO_MAPPED_TYPE int 7 | 8 | #include 9 | 10 | #endif // INT_INT_TABLE_H 11 | -------------------------------------------------------------------------------- /hydralist/tests/LinkedList/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB SRCS *.cpp) 2 | ADD_EXECUTABLE(linkedListTest ${SRCS}) 3 | 4 | TARGET_LINK_LIBRARIES( 5 | linkedListTest 6 | hydraList 7 | gtest 8 | numa 9 | art 10 | tbb 11 | ) 12 | add_test(NAME linkedListTest 13 | COMMAND linkedListTest) 14 | -------------------------------------------------------------------------------- /hydralist_string/tests/LinkedList/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB SRCS *.cpp) 2 | ADD_EXECUTABLE(linkedListTest ${SRCS}) 3 | 4 | TARGET_LINK_LIBRARIES( 5 | linkedListTest 6 | hydraList 7 | gtest 8 | numa 9 | art 10 | tbb 11 | ) 12 | add_test(NAME linkedListTest 13 | COMMAND linkedListTest) 14 | -------------------------------------------------------------------------------- /hydralist/tests/WorkerThread/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB SRCS *.cpp) 2 | ADD_EXECUTABLE(workerThreadTest ${SRCS}) 3 | 4 | TARGET_LINK_LIBRARIES( 5 | workerThreadTest 6 | hydraList 7 | gtest 8 | numa 9 | art 10 | tbb 11 | ) 12 | 13 | add_test(NAME workerThreadTest 14 | COMMAND workerThreadTest) 15 | -------------------------------------------------------------------------------- /pcm/PCM-Core_Win/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // pcm.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /pcm/PCM-IIO_Win/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // pcm.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /pcm/PCM-LSPCI_Win/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // pcm.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /pcm/PCM-MSR_Win/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // pcm.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /pcm/PCM-Memory_Win/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // pcm.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /pcm/PCM-NUMA_Win/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // pcm.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /pcm/PCM-PCICFG_Win/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // pcm.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /pcm/PCM-PCIE_Win/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // pcm.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /pcm/PCM-Power_Win/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // pcm.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /pcm/PCM-TSX_Win/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // pcm.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /hydralist_string/tests/WorkerThread/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB SRCS *.cpp) 2 | ADD_EXECUTABLE(workerThreadTest ${SRCS}) 3 | 4 | TARGET_LINK_LIBRARIES( 5 | workerThreadTest 6 | hydraList 7 | gtest 8 | numa 9 | art 10 | tbb 11 | ) 12 | 13 | add_test(NAME workerThreadTest 14 | COMMAND workerThreadTest) 15 | -------------------------------------------------------------------------------- /pcm/PCM-Latency_Win/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // pcm.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /hydralist/lib/ARTROWEX/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(CMAKE_CXX_FLAGS_RELEASE "-O3") 2 | file(GLOB artsrc "*.cpp" "*.h") 3 | 4 | add_library(art STATIC ${artsrc}) 5 | 6 | target_include_directories(art PUBLIC 7 | ${CMAKE_CURRENT_SOURCE_DIR} 8 | ) 9 | INSTALL(TARGETS art 10 | ARCHIVE DESTINATION ${CMAKE_SOURCE_DIR} 11 | ) 12 | 13 | -------------------------------------------------------------------------------- /hydralist_string/lib/ARTROWEX/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(CMAKE_CXX_FLAGS_RELEASE "-O3") 2 | file(GLOB artsrc "*.cpp" "*.h") 3 | 4 | add_library(art STATIC ${artsrc}) 5 | 6 | target_include_directories(art PUBLIC 7 | ${CMAKE_CURRENT_SOURCE_DIR} 8 | ) 9 | INSTALL(TARGETS art 10 | ARCHIVE DESTINATION ${CMAKE_SOURCE_DIR} 11 | ) 12 | 13 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "index": [ 3 | { 4 | 5 | "index": ["hydralist", "masstree", "btreeolc", "bwtree", "artolc", "artrowex","bwtree"], 6 | "workloads": ["c"], 7 | "key_type": [ "rand"], 8 | "threads": [112] 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /hydralist/tests/Hydralist/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB SRCS *.cpp) 2 | MESSAGE($SRCS) 3 | ADD_EXECUTABLE(hydraListTest ${SRCS}) 4 | 5 | TARGET_LINK_LIBRARIES( 6 | hydraListTest 7 | tbb 8 | hydraList 9 | gtest 10 | numa 11 | art 12 | tbb 13 | ) 14 | 15 | add_test(NAME hydraListTest 16 | COMMAND hydraListTest) 17 | -------------------------------------------------------------------------------- /hydralist_string/tests/Hydralist/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB SRCS *.cpp) 2 | MESSAGE($SRCS) 3 | ADD_EXECUTABLE(hydraListTest ${SRCS}) 4 | 5 | TARGET_LINK_LIBRARIES( 6 | hydraListTest 7 | tbb 8 | hydraList 9 | gtest 10 | numa 11 | art 12 | tbb 13 | ) 14 | 15 | add_test(NAME hydraListTest 16 | COMMAND hydraListTest) 17 | -------------------------------------------------------------------------------- /pcm/WinMSRDriver/Win7/sources: -------------------------------------------------------------------------------- 1 | TARGETNAME=msr 2 | TARGETTYPE=DRIVER 3 | NTDDI_VERSION=NTDDI_WIN7 4 | 5 | MSC_WARNING_LEVEL=/W3 /WX 6 | 7 | 8 | INCLUDES=\ 9 | $(DDK_INC_PATH); 10 | 11 | TARGETLIBS=\ 12 | $(DDK_LIB_PATH)\ntoskrnl.lib 13 | 14 | 15 | SOURCES=msrmain.c 16 | 17 | PRECOMPILED_INCLUDE=msr.h 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /hydralist/tests/SearchLayer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB SRCS *.cpp) 2 | MESSAGE($SRCS) 3 | ADD_EXECUTABLE(searchLayerTest ${SRCS}) 4 | 5 | TARGET_LINK_LIBRARIES( 6 | searchLayerTest 7 | tbb 8 | hydraList 9 | gtest 10 | numa 11 | art 12 | tbb 13 | ) 14 | 15 | add_test(NAME searchLayerTest 16 | COMMAND searchLayerTest) 17 | -------------------------------------------------------------------------------- /hydralist_string/tests/SearchLayer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB SRCS *.cpp) 2 | MESSAGE($SRCS) 3 | ADD_EXECUTABLE(searchLayerTest ${SRCS}) 4 | 5 | TARGET_LINK_LIBRARIES( 6 | searchLayerTest 7 | tbb 8 | hydraList 9 | gtest 10 | numa 11 | art 12 | tbb 13 | ) 14 | 15 | add_test(NAME searchLayerTest 16 | COMMAND searchLayerTest) 17 | -------------------------------------------------------------------------------- /pcm/.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.x 3 | *.d 4 | *.a 5 | *.xml 6 | /.project 7 | *.XML 8 | *.htm 9 | *.html 10 | *.dll 11 | *.txt 12 | *.patch 13 | *.orig 14 | *.out 15 | *.log 16 | *.sys 17 | *.vxd 18 | *.exe 19 | *.tgz 20 | .metadata/ 21 | *.sdf 22 | *.suo 23 | Debug 24 | Release 25 | Debug64 26 | Release64 27 | .metadata/ 28 | html/ 29 | latex/ 30 | *.swp 31 | *.vcxproj.user 32 | .vs/ 33 | .idea/ 34 | -------------------------------------------------------------------------------- /pcm/daemon/daemon/test/Makefile: -------------------------------------------------------------------------------- 1 | CC=g++ 2 | CFLAGS=-c -Wall -std=c++11 3 | LDFLAGS= 4 | SOURCES=main.cpp 5 | OBJECTS=$(SOURCES:.cpp=.o) 6 | EXECUTABLE=test 7 | RM=rm 8 | 9 | all: $(SOURCES) $(EXECUTABLE) 10 | 11 | $(EXECUTABLE): $(OBJECTS) 12 | $(CC) $(LDFLAGS) $(OBJECTS) -o $@ 13 | 14 | .cpp.o: 15 | $(CC) $(CFLAGS) $< -o $@ 16 | 17 | clean: 18 | -$(RM) $(OBJECTS) $(EXECUTABLE) 19 | -@echo ' ' -------------------------------------------------------------------------------- /rotate-skiplist-cpp/Makefile: -------------------------------------------------------------------------------- 1 | 2 | # This is the basic set of compiler flags 3 | # We also add more for different options 4 | CXX_FLAGS=-std=c++11 -pthread -Wall -Wextra 5 | 6 | ifdef DEBUG 7 | CXX_FLAGS += -O1 -g 8 | else 9 | CXX_FLAGS += -O3 10 | endif 11 | 12 | all: rotate-skiplist.cpp rotate-skiplist.h 13 | g++ $(CXX_FLAGS) $(LD_FLAGS) rotate-skiplist.cpp main.cpp -o ./main 14 | 15 | -------------------------------------------------------------------------------- /hydralist/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file (GLOB HydraList_SRCS "*.h" "*.cpp") 2 | add_library(hydraList STATIC 3 | ${HydraList_SRCS} 4 | ) 5 | target_include_directories(hydraList PUBLIC 6 | ${CMAKE_CURRENT_SOURCE_DIR} 7 | ) 8 | add_executable (main main.cpp) 9 | target_link_libraries (main hydraList numa jemalloc art) 10 | INSTALL(TARGETS hydraList 11 | ARCHIVE DESTINATION ${CMAKE_SOURCE_DIR} 12 | ) 13 | -------------------------------------------------------------------------------- /hydralist_string/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file (GLOB HydraList_SRCS "*.h" "*.cpp") 2 | add_library(hydraList STATIC 3 | ${HydraList_SRCS} 4 | ) 5 | target_include_directories(hydraList PUBLIC 6 | ${CMAKE_CURRENT_SOURCE_DIR} 7 | ) 8 | add_executable (main main.cpp) 9 | target_link_libraries (main hydraList numa jemalloc art) 10 | INSTALL(TARGETS hydraList 11 | ARCHIVE DESTINATION ${CMAKE_SOURCE_DIR} 12 | ) 13 | -------------------------------------------------------------------------------- /hydralist/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.11) 2 | project(Hydralist) 3 | 4 | set(CMAKE_CXX_STANDARD 14) 5 | set(CMAKE_CXX_FLAGS "-pthread -Wall -Wextra -march=native") 6 | set(CMAKE_CXX_FLAGS_DEBUG "-g") 7 | set(CMAKE_CXX_FLAGS_RELEASE "-O3 -g") 8 | 9 | include_directories(${CMAKE_SOURCE_DIR}/include) 10 | enable_testing() 11 | 12 | add_subdirectory(lib/ARTROWEX) 13 | add_subdirectory(src) 14 | add_subdirectory(tests) 15 | -------------------------------------------------------------------------------- /hydralist_string/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.11) 2 | project(Hydralist) 3 | 4 | set(CMAKE_CXX_STANDARD 14) 5 | set(CMAKE_CXX_FLAGS "-pthread -Wall -Wextra -march=native") 6 | set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") 7 | set(CMAKE_CXX_FLAGS_RELEASE "-O3 -g") 8 | 9 | include_directories(${CMAKE_SOURCE_DIR}/include) 10 | enable_testing() 11 | 12 | add_subdirectory(lib/ARTROWEX) 13 | add_subdirectory(src) 14 | add_subdirectory(tests) 15 | -------------------------------------------------------------------------------- /rotate-skiplist/tm.h: -------------------------------------------------------------------------------- 1 | 2 | #ifdef ESTM 3 | # include "estm.h" 4 | #elif defined(TINY100) || defined(TINY10B) || defined(TINY099) || defined(TINY098) 5 | # include "tinystm.h" 6 | #elif defined WPLDSTM 7 | # include "wlpdstm.h" 8 | #elif defined LOCKFREE 9 | # include "lockfree.h" 10 | #elif defined TL2 11 | # include "tl2-mbench.h" 12 | #elif defined ICC 13 | # include "icc.h" 14 | #elif defined SEQUENTIAL 15 | # include "sequential.h" 16 | #endif 17 | -------------------------------------------------------------------------------- /nohotspot-skiplist/tm.h: -------------------------------------------------------------------------------- 1 | 2 | #ifdef ESTM 3 | # include "estm.h" 4 | #elif defined(TINY100) || defined(TINY10B) || defined(TINY099) || defined(TINY098) 5 | # include "tinystm.h" 6 | #elif defined WPLDSTM 7 | # include "wlpdstm.h" 8 | #elif defined LOCKFREE 9 | # include "lockfree.h" 10 | #elif defined TL2 11 | # include "tl2-mbench.h" 12 | #elif defined ICC 13 | # include "icc.h" 14 | #elif defined SEQUENTIAL 15 | # include "sequential.h" 16 | #endif 17 | -------------------------------------------------------------------------------- /pcm/pcm.so/Makefile: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2014 Intel Corporation 2 | 3 | all: libpcm.so 4 | 5 | OPT= -g -O3 6 | CXXFLAGS+= -Wall -fPIC $(OPT) -std=c++0x -DPCM_SILENT 7 | vpath %.cpp .. 8 | 9 | libpcm.so: msr.o cpucounters.o pci.o mmio.o client_bw.o utils.o pcm-core.o 10 | $(CXX) $(CXXFLAGS) -shared $^ -lpthread -o $@ 11 | 12 | c_example.x: c_example.o 13 | gcc $^ -ldl -L./ -lpcm -Wl,-rpath=$(shell pwd) -o $@ 14 | 15 | clean: 16 | rm -rf *.x *.o *~ *.so 17 | 18 | 19 | -------------------------------------------------------------------------------- /microbench.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include "allocatortracker.h" 13 | 14 | #ifndef _MICROBENCH_H 15 | #define _MICROBENCH_H 16 | 17 | #define INIT_LIMIT 100000000 18 | #define LIMIT 50000000 19 | 20 | //#define PAPI_IPC 1 21 | //#define PAPI_CACHE 1 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /libcuckoo/libcuckoo-gdb-printers/README.md: -------------------------------------------------------------------------------- 1 | # GDB Printers 2 | 3 | This directory contains a python module that allows pretty-printing a 4 | cuckoohash map. 5 | 6 | ## Usage 7 | 8 | In order to use the libcuckoo pretty printers, add the following to your 9 | `~/.gdbinit`: 10 | 11 | ``` 12 | python 13 | import sys 14 | sys.path.insert(0, '/path/to/libcuckoo/libcuckoo-gdb-printers') 15 | from libcuckoo.printers import register_libcuckoo_printers 16 | register_libcuckoo_printers (None) 17 | end 18 | ``` 19 | -------------------------------------------------------------------------------- /pcm/.bdsignore.all: -------------------------------------------------------------------------------- 1 | .bdsignore.all 2 | Makefile 3 | license.txt 4 | Doxyfile 5 | LICENSE 6 | README 7 | ChangeLog 8 | TODO 9 | Debug 10 | Release 11 | Release64 12 | Backup 13 | Intel_SSA 14 | .vs 15 | My Inspector XE Results - pcm 16 | .gitignore 17 | .gitattributes 18 | .*\.txt 19 | .*\.pdf 20 | .*\.docx 21 | .*\.rtf 22 | .*\.vcproj 23 | .*\.xcodeproj 24 | .*\.sh 25 | .*\.htm 26 | .*\.bat 27 | .*\.strings 28 | .*\.vcxproj 29 | .*\.sln 30 | .*\.sdf 31 | .*\.vcxproj.user 32 | .*\.log 33 | .*\.vcxproj.filters 34 | -------------------------------------------------------------------------------- /libcuckoo/tests/stress-tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(stress_checked stress_checked.cc) 2 | target_link_libraries(stress_checked 3 | PRIVATE test_util 4 | PRIVATE pcg 5 | PRIVATE libcuckoo 6 | ) 7 | 8 | add_executable(stress_unchecked stress_unchecked.cc) 9 | target_link_libraries(stress_unchecked 10 | PRIVATE test_util 11 | PRIVATE pcg 12 | PRIVATE libcuckoo 13 | ) 14 | 15 | add_test(NAME stress_checked COMMAND stress_checked) 16 | add_test(NAME stress_unchecked COMMAND stress_unchecked) 17 | -------------------------------------------------------------------------------- /hot/lib/hot/rowex/include/hot/rowex/HOTRowexIteratorBufferStates.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__ROWEX__FILL_BUFFER_STATES__ 2 | #define __HOT__ROWEX__FILL_BUFFER_STATES__ 3 | 4 | namespace hot { namespace rowex { 5 | constexpr int32_t ITERATOR_FILL_BUFFER_STATE_DESCEND = 0; 6 | constexpr int32_t ITERATOR_FILL_BUFFER_STATE_STORE = 1; 7 | constexpr int32_t ITERATOR_FILL_BUFFER_STATE_ADVANCE = 2; 8 | constexpr int32_t ITERATOR_FILL_BUFFER_STATE_ASCEND = 3; 9 | constexpr int32_t ITERATOR_FILL_BUFFER_STATE_END = 4; 10 | }} 11 | 12 | #endif -------------------------------------------------------------------------------- /hot/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | #add_executable(sample "main.cpp") 2 | #target_link_libraries(sample hot-rowex-lib content-helpers-lib) 3 | add_library(hot-rowex STATIC main.cpp) 4 | target_link_libraries(hot-rowex hot-rowex-lib content-helpers-lib) 5 | target_include_directories(hot-rowex 6 | PUBLIC ${CMAKE_SOURCE_DIR}/src 7 | PUBLIC hot/rowex 8 | PUBLIC idx/contenthelpers 9 | ) 10 | INSTALL(TARGETS hot-rowex 11 | ARCHIVE DESTINATION ${CMAKE_SOURCE_DIR} 12 | PUBLIC_HEADER DESTINATION ${CMAKE_SOURCE_DIR}/include 13 | ) 14 | 15 | -------------------------------------------------------------------------------- /libcuckoo/examples/int_str_table.cc: -------------------------------------------------------------------------------- 1 | // Include the header file with "C" linkage 2 | extern "C" { 3 | #include "int_str_table.h" 4 | } 5 | 6 | // Include the implementation template, which uses the constants defined in 7 | // `int_str_table.h`. The implementation file defines all functions under "C" 8 | // linkage, and should be linked with the corresponding header to generate a 9 | // linkable library. See `CMakeLists.txt` for an example of how this is done to 10 | // create `c_hash`. 11 | #include 12 | -------------------------------------------------------------------------------- /libcuckoo/examples/hellohash.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include 5 | 6 | int main() { 7 | cuckoohash_map Table; 8 | 9 | for (int i = 0; i < 100; i++) { 10 | Table.insert(i, "hello"); 11 | } 12 | 13 | for (int i = 0; i < 101; i++) { 14 | std::string out; 15 | 16 | if (Table.find(i, out)) { 17 | std::cout << i << " " << out << std::endl; 18 | } else { 19 | std::cout << i << " NOT FOUND" << std::endl; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /nohotspot-skiplist/background.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This is the interface for the background thread functions. 3 | * 4 | * Author: Ian Dick, 2013. 5 | */ 6 | #ifndef BACKGROUND_H_ 7 | #define BACKGROUND_H_ 8 | 9 | #include "skiplist.h" 10 | #include "ptst.h" 11 | 12 | void bg_init(set_t *s); 13 | void bg_start(int sleep_time); 14 | void bg_stop(void); 15 | void bg_print_stats(void); 16 | void bg_remove(node_t *prev, node_t *node, ptst_t *ptst); 17 | void bg_help_remove(node_t *prev, node_t *node, ptst_t *ptst); 18 | 19 | #endif /* BACKGROUND_H_ */ 20 | -------------------------------------------------------------------------------- /rotate-skiplist/background.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This is the interface for the background thread functions. 3 | * 4 | * Author: Ian Dick, 2013. 5 | */ 6 | #ifndef BACKGROUND_H_ 7 | #define BACKGROUND_H_ 8 | 9 | #include "skiplist.h" 10 | #include "ptst.h" 11 | 12 | void bg_init(set_t *s); 13 | void bg_start(int sleep_time); 14 | void bg_stop(void); 15 | void bg_print_stats(void); 16 | void bg_remove(node_t *prev, node_t *node, ptst_t *ptst); 17 | void bg_help_remove(node_t *prev, node_t *node, ptst_t *ptst); 18 | 19 | #endif /* BACKGROUND_H_ */ 20 | -------------------------------------------------------------------------------- /pcm/PCM-Core_Win/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 9 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 10 | #endif 11 | 12 | #include 13 | #include 14 | 15 | 16 | // TODO: reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /pcm/PCM-IIO_Win/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 9 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 10 | #endif 11 | 12 | #include 13 | #include 14 | 15 | 16 | // TODO: reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /pcm/PCM-MSR_Win/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 9 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 10 | #endif 11 | 12 | #include 13 | #include 14 | 15 | 16 | // TODO: reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /pcm/PCM-NUMA_Win/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 9 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 10 | #endif 11 | 12 | #include 13 | #include 14 | 15 | 16 | // TODO: reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /pcm/PCM-PCIE_Win/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 9 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 10 | #endif 11 | 12 | #include 13 | #include 14 | 15 | 16 | // TODO: reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /pcm/PCM-TSX_Win/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 9 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 10 | #endif 11 | 12 | #include 13 | #include 14 | 15 | 16 | // TODO: reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /hot/lib/hot/rowex/include/hot/rowex/SpinLock.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__ROWEX__SPIN_LOCK__ 2 | #define __HOT__ROWEX__SPIN_LOCK__ 3 | 4 | #include 5 | 6 | namespace hot { namespace rowex { 7 | 8 | class SpinLock { 9 | std::atomic_flag mFlag; 10 | 11 | public: 12 | SpinLock() : mFlag(ATOMIC_FLAG_INIT) { 13 | } 14 | 15 | void lock() { 16 | bool wasSetBefore; 17 | while((wasSetBefore = mFlag.test_and_set())) { 18 | _mm_pause(); 19 | } 20 | } 21 | 22 | void unlock() { 23 | mFlag.clear(std::memory_order_release); 24 | } 25 | 26 | }; 27 | 28 | }} 29 | 30 | #endif -------------------------------------------------------------------------------- /pcm/PCM-LSPCI_Win/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 9 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 10 | #endif 11 | 12 | #include 13 | #include 14 | 15 | 16 | // TODO: reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /pcm/PCM-Latency_Win/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 9 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 10 | #endif 11 | 12 | #include 13 | #include 14 | 15 | 16 | // TODO: reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /pcm/PCM-Memory_Win/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 9 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 10 | #endif 11 | 12 | #include 13 | #include 14 | 15 | 16 | // TODO: reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /pcm/PCM-PCICFG_Win/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 9 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 10 | #endif 11 | 12 | #include 13 | #include 14 | 15 | 16 | // TODO: reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /pcm/PCM-Power_Win/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 9 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 10 | #endif 11 | 12 | #include 13 | #include 14 | 15 | 16 | // TODO: reference additional headers your program requires here 17 | -------------------------------------------------------------------------------- /pcm/build_solution.bat: -------------------------------------------------------------------------------- 1 | 2 | REM change path to your VCVARS.BAT 3 | CALL "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\vcvarsx86_amd64.bat" 4 | SET "PATH=C:\Program Files (x86)\MSBuild\14.0\Bin\amd64;%PATH%" 5 | REM CALL "c:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsamd64_x86.bat" 6 | REM SET "PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\amd64;%PATH%" 7 | 8 | msbuild pcm-all.sln /p:Configuration=Release;Platform=x64 /t:Clean,Build /m 9 | 10 | exit 11 | 12 | 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | HydraList: A Scalable In-Memory Index Using Asynchronous Updates and Partial Replication 2 | ======================================================================================== 3 | 4 | This repository contains the code for HydraList, a scalable in-memory sorted 5 | index. HydraList has been tested in Linux with Intel Xeon processors. 6 | 7 | 8 | ## Other resources 9 | - [VLDB 2020 paper](http://www.vldb.org/pvldb/vol13/p1332-mathew.pdf) 10 | 11 | ## Authors 12 | - Ajit Mathew [ajitm@vt.edu](mailto:ajitm@vt.edu) 13 | - Changwoo Min [changwoo@vt.edu](mailto:changwoo@vt.edu) 14 | -------------------------------------------------------------------------------- /hot/lib/hot/rowex/include/hot/rowex/HOTRowexIteratorEndToken.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__ROWEX__ITERATOR_END_TOKEN__ 2 | #define __HOT__ROWEX__ITERATOR_END_TOKEN__ 3 | 4 | #include "HOTRowexChildPointer.hpp" 5 | 6 | namespace hot { namespace rowex { 7 | 8 | template 9 | struct HOTRowexIteratorEndTokenWorkaround { 10 | static HOTRowexChildPointer END_TOKEN; 11 | }; 12 | template HOTRowexChildPointer HOTRowexIteratorEndTokenWorkaround::END_TOKEN = {}; 13 | 14 | using HOTRowexIteratorEndToken = HOTRowexIteratorEndTokenWorkaround<0>; 15 | 16 | }} 17 | 18 | #endif 19 | 20 | -------------------------------------------------------------------------------- /hot/lib/idx/content-helpers/include/idx/contenthelpers/CStringComparator.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __IDX__CONTENTHELPERS__C_STRING_COMPARATOR__HPP__ 2 | #define __IDX__CONTENTHELPERS__C_STRING_COMPARATOR__HPP__ 3 | 4 | /** @author robert.binna@uibk.ac.at */ 5 | 6 | namespace idx { namespace contenthelpers { 7 | 8 | /** 9 | * Comparator which lexicographically compares two c-strings 10 | */ 11 | class CStringComparator { 12 | public: 13 | inline bool operator()(const char* first, const char* second) const { 14 | return strcmp(first, second) < 0; 15 | }; 16 | }; 17 | 18 | } } 19 | 20 | #endif 21 | 22 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2018-2020 Virginia Tech 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /libcuckoo/hooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # clang-format pre-commit hook 3 | # 4 | # To use, store as .git/hooks/pre-commit inside your repository and make sure 5 | # it has execute permissions. 6 | # 7 | # This script does not handle file names that contain spaces. 8 | 9 | cfiles=$(git diff --name-only HEAD --diff-filter=d | grep '\.\(cc\|hh\|c\|h\)$') 10 | numerrors=0 11 | for f in $cfiles; do 12 | diffoutput=$(clang-format $f | diff $f -) 13 | if [ -n "$diffoutput" ]; then 14 | [ $numerrors -eq 0 ] && echo >&2 "Unformatted files:"; 15 | echo >&2 "$f"; 16 | ((numerrors++)) 17 | fi 18 | done 19 | exit $numerrors 20 | -------------------------------------------------------------------------------- /hot/lib/hot/commons/include/hot/commons/NodeAllocationInformation.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__ROWEX__NODE_ALLOCATION_INFORMATION__ 2 | #define __HOT__ROWEX__NODE_ALLOCATION_INFORMATION__ 3 | 4 | namespace hot { namespace commons { 5 | 6 | struct NodeAllocationInformation { 7 | uint32_t const mEntriesMask; 8 | uint16_t const mTotalSizeInBytes; 9 | uint16_t const mPointerOffset; 10 | 11 | NodeAllocationInformation(uint32_t entriesMask, uint16_t totalSizeInBytes, uint16_t pointerOffset) 12 | : mEntriesMask(entriesMask), mTotalSizeInBytes(totalSizeInBytes), mPointerOffset(pointerOffset) 13 | { 14 | } 15 | }; 16 | 17 | }} 18 | 19 | #endif -------------------------------------------------------------------------------- /hot/lib/hot/commons/include/hot/commons/PartialKeyConversionInformation.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__COMMONS__GENERIC_MASK_CONVERSION_INFORMATION___ 2 | #define __HOT__COMMONS__GENERIC_MASK_CONVERSION_INFORMATION___ 3 | 4 | namespace hot { namespace commons { 5 | 6 | template struct PartialKeyConversionInformation { 7 | PartialKeyType const mAdditionalMask; 8 | PartialKeyType const mConversionMask; 9 | 10 | PartialKeyConversionInformation(PartialKeyType const additionalMask, PartialKeyType const conversionMask) : mAdditionalMask(additionalMask), mConversionMask(conversionMask) { 11 | } 12 | }; 13 | 14 | } } 15 | 16 | #endif -------------------------------------------------------------------------------- /hydralist/include/common.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by ajit on 3/7/19. 3 | // 4 | 5 | #ifndef HYDRALIST_COMMON_H 6 | #define HYDRALIST_COMMON_H 7 | #include 8 | typedef uint64_t Key_t; 9 | typedef uint64_t Val_t; 10 | #define MAX_NUMA 8 11 | #define WORKER_THREAD_PER_NUMA 1 12 | //#define HYDRALIST_ENABLE_STATS 13 | 14 | class OpStruct { 15 | public: 16 | enum Operation {insert, remove}; 17 | Operation op; 18 | Key_t key; 19 | uint8_t hash; 20 | void* listNodePtr; 21 | uint64_t ts; 22 | bool operator< (const OpStruct& ops) const { 23 | return (ts < ops.ts); 24 | } 25 | }; 26 | 27 | #endif //HYDRALIST_COMMON_H 28 | -------------------------------------------------------------------------------- /wormhole/Makefile.local: -------------------------------------------------------------------------------- 1 | # Makefile 2 | # rules: 3 | # SRC-X.out += abc # extra source: abc.c 4 | # MOD-X.out += abc # extra module: abc.c abc.h 5 | # FLG-X.out += -finline # extra flags 6 | # LIB-X.out += abc # extra -labc options 7 | 8 | # X.out : xyz.h xyz.c # for extra dependences that are to be compiled/linked. 9 | 10 | # X => X.out 11 | TARGETS += demo1 12 | # X => X.c only 13 | SOURCES += 14 | # X => X.c X.h 15 | MODULES += wh 16 | 17 | # EXTERNSRC/EXTERNDEP do not belong to this repo. 18 | # extern-src will be linked 19 | EXTERNSRC += 20 | # extern-dep will not be linked 21 | EXTERNDEP += 22 | 23 | FLG += 24 | LIB += rt m 25 | -------------------------------------------------------------------------------- /hot/src/main.h: -------------------------------------------------------------------------------- 1 | #ifndef __MAIN_H__ 2 | #define __MAIN_H__ 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | class HOTidx { 11 | public: 12 | bool insert( uint64_t key, uint64_t val); 13 | 14 | bool remove( uint64_t key); 15 | 16 | bool lookup( uint64_t key); 17 | 18 | void scan (uint64_t key, uint64_t range); 19 | 20 | }; 21 | 22 | class HOTidxString { 23 | public: 24 | bool insert( char* key, size_t keylen, uint64_t val); 25 | 26 | bool remove(char* key); 27 | 28 | bool lookup(char* key); 29 | 30 | void scan (char* key, uint64_t range); 31 | 32 | }; 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /hot/lib/idx/content-helpers/include/idx/contenthelpers/IdentityKeyExtractor.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __IDX__CONTENTHELPERS__IDENTITY_KEY_EXTRACTOR__ 2 | #define __IDX__CONTENTHELPERS__IDENTITY_KEY_EXTRACTOR__ 3 | 4 | /** @author robert.binna@uibk.ac.at */ 5 | 6 | namespace idx { namespace contenthelpers { 7 | 8 | /** 9 | * A trivial key Extractor which returns the value itself as the extracted key 10 | * 11 | * @tparam ValueType 12 | */ 13 | template 14 | struct IdentityKeyExtractor { 15 | typedef ValueType KeyType; 16 | 17 | inline KeyType operator()(ValueType const &value) const { 18 | return value; 19 | } 20 | }; 21 | 22 | } } 23 | 24 | #endif -------------------------------------------------------------------------------- /pcm/readmem.sh: -------------------------------------------------------------------------------- 1 | 2 | 3 | numactl --cpunodebind=0 --membind=0 ./readmem 10 & 4 | numactl --cpunodebind=1 --membind=1 ./readmem 10 & 5 | numactl --cpunodebind=0 --membind=0 ./readmem 10 & 6 | numactl --cpunodebind=1 --membind=1 ./readmem 10 & 7 | numactl --cpunodebind=0 --membind=0 ./readmem 10 & 8 | numactl --cpunodebind=1 --membind=1 ./readmem 10 & 9 | numactl --cpunodebind=0 --membind=0 ./readmem 10 & 10 | numactl --cpunodebind=1 --membind=1 ./readmem 10 & 11 | numactl --cpunodebind=0 --membind=0 ./readmem 10 & 12 | numactl --cpunodebind=1 --membind=1 ./readmem 10 & 13 | numactl --cpunodebind=0 --membind=0 ./readmem 10 & 14 | numactl --cpunodebind=1 --membind=1 ./readmem 10 & 15 | 16 | -------------------------------------------------------------------------------- /libcuckoo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.1.0) 2 | project(libcuckoo LANGUAGES C CXX) 3 | 4 | set(libcuckoo_VERSION_MAJOR 0) 5 | set(libcuckoo_VERSION_MINOR 2) 6 | set(libcuckoo_VERSION_PATCH 0) 7 | 8 | # put these in the cache so they show up in ccmake 9 | option (BUILD_EXAMPLES "build example libcuckoo programs") 10 | 11 | # Add the libcuckoo interface target 12 | add_subdirectory(libcuckoo) 13 | 14 | # Add C interface target 15 | add_subdirectory(libcuckoo-c) 16 | 17 | # Build examples 18 | if(BUILD_EXAMPLES) 19 | add_subdirectory(examples) 20 | endif() 21 | 22 | # Build tests -- this only builds tests that were specified 23 | enable_testing() 24 | add_subdirectory(tests) 25 | -------------------------------------------------------------------------------- /libcuckoo/examples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(nested_table nested_table.cc) 2 | target_link_libraries(nested_table libcuckoo) 3 | 4 | add_executable(hellohash hellohash.cc) 5 | target_link_libraries(hellohash libcuckoo) 6 | 7 | add_executable(count_freq count_freq.cc) 8 | target_link_libraries(count_freq libcuckoo) 9 | 10 | add_library(int_str_table STATIC int_str_table.cc) 11 | target_link_libraries(int_str_table libcuckoo) 12 | 13 | add_library(blob_blob_table STATIC blob_blob_table.cc) 14 | target_link_libraries(blob_blob_table libcuckoo) 15 | 16 | add_executable(c_hash c_hash.c) 17 | target_link_libraries(c_hash int_str_table blob_blob_table) 18 | 19 | set_property(TARGET c_hash PROPERTY C_STANDARD 99) 20 | -------------------------------------------------------------------------------- /hot/lib/idx/content-helpers/include/idx/contenthelpers/KeyComparator.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __IDX__CONTENTHELPERS__KEY_COMPARATOR__HPP__ 2 | #define __IDX__CONTENTHELPERS__KEY_COMPARATOR__HPP__ 3 | 4 | /** @author robert.binna@uibk.ac.at */ 5 | 6 | #include "idx/contenthelpers/CStringComparator.hpp" 7 | 8 | namespace idx { namespace contenthelpers { 9 | 10 | /** 11 | * Helper template which allows to derive a comparator function for a given KeyType 12 | * 13 | * @tparam the type of the key to compare 14 | */ 15 | template struct KeyComparator { 16 | using type = std::less; 17 | }; 18 | 19 | template<> struct KeyComparator { 20 | using type = idx::contenthelpers::CStringComparator; 21 | }; 22 | 23 | } } 24 | 25 | #endif -------------------------------------------------------------------------------- /hot/lib/idx/content-helpers/include/idx/contenthelpers/PairPointerKeyExtractor.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __IDX__CONTENTHELPERS__PAIR_POINTER_KEY_EXTRACTOR__ 2 | #define __IDX__CONTENTHELPERS__PAIR_POINTER_KEY_EXTRACTOR__ 3 | 4 | /** @author robert.binna@uibk.ac.at */ 5 | 6 | namespace idx { namespace contenthelpers { 7 | 8 | /** 9 | * Key Extractor for a pointer to a pair like type. 10 | * A pair like 11 | * 12 | * @tparam PointerPairLikeType 13 | */ 14 | template struct PairPointerKeyExtractor { 15 | using KeyType = decltype(std::declval()->first); 16 | 17 | inline KeyType operator()(PointerPairLikeType const & value) const { 18 | return value->first; 19 | } 20 | }; 21 | 22 | } } 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /libcuckoo/libcuckoo/mainpage.dox: -------------------------------------------------------------------------------- 1 | /*! \mainpage libcuckoo Documentation 2 | * 3 | * libcuckoo is a high-performance, memory efficient hash table that 4 | * supports concurrent reads and writes. 5 | * 6 | * \ref cuckoohash_map is the class of the hash table. Its interface 7 | * resembles that of STL's unordered_map but does contain some 8 | * important differences. 9 | * 10 | * Internally, the hash table is partitioned into an array of 11 | * buckets, each of which contains \c SLOT_PER_BUCKET slots to 12 | * store items. 13 | * 14 | * Each bucket has a lock to ensure multiple threads don't modify the 15 | * same elements. Most operations will lock no more than two buckets 16 | * at a time, thereby allowing for concurrent reads and writes. 17 | */ 18 | -------------------------------------------------------------------------------- /hot/lib/hot/commons/include/hot/commons/EntriesRange.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__COMMONS__ENTRIES_RANGE__ 2 | #define __HOT__COMMONS__ENTRIES_RANGE__ 3 | 4 | #include 5 | 6 | namespace hot { namespace commons { 7 | 8 | /** 9 | * Describes a range of entries by its start index and the number of entries contained. 10 | */ 11 | struct EntriesRange { 12 | uint32_t const mFirstIndexInRange; 13 | uint32_t const mNumberEntriesInRange; 14 | 15 | EntriesRange(uint32_t firstIndexInRange, uint32_t numberEntriesInRange) 16 | : mFirstIndexInRange(firstIndexInRange), mNumberEntriesInRange(numberEntriesInRange) 17 | { 18 | } 19 | 20 | uint32_t inline getLastIndexInRange() const { 21 | return mFirstIndexInRange + mNumberEntriesInRange - 1; 22 | } 23 | }; 24 | 25 | }} 26 | 27 | #endif -------------------------------------------------------------------------------- /hot/lib/hot/rowex/include/hot/rowex/HOTRowexFirstInsertLevel.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__ROWEX__FIRST_INSERT_LEVEL__ 2 | #define __HOT__ROWEX__FIRST_INSERT_LEVEL__ 3 | 4 | #include 5 | 6 | namespace hot { namespace rowex { 7 | 8 | template 9 | struct HOTRowexFirstInsertLevel { 10 | InsertStackEntryType *mFirstEntry; 11 | hot::commons::InsertInformation mInsertInformation; 12 | bool mIsLeafNodePushdown; 13 | 14 | HOTRowexFirstInsertLevel(InsertStackEntryType *firstEntry, hot::commons::InsertInformation const &insertInformation, 15 | bool isLeafNodePushdown) 16 | : mFirstEntry(firstEntry), mInsertInformation(insertInformation), mIsLeafNodePushdown(isLeafNodePushdown) { 17 | } 18 | }; 19 | 20 | } } 21 | 22 | #endif -------------------------------------------------------------------------------- /hydralist/src/linkedList.h: -------------------------------------------------------------------------------- 1 | #ifndef _LINKEDLIST_H 2 | #define _LINKEDLIST_H 3 | #include "listNode.h" 4 | 5 | enum Operation {lt, gt}; 6 | 7 | class LinkedList { 8 | private: 9 | ListNode* head; 10 | 11 | public: 12 | ListNode* initialize(); 13 | bool insert(Key_t key, Val_t value, ListNode* head); 14 | bool update(Key_t key, Val_t value, ListNode* head); 15 | bool remove(Key_t key, ListNode* head); 16 | bool probe(Key_t key, ListNode* head); 17 | bool lookup(Key_t key, Val_t &value, ListNode* head); 18 | uint64_t scan(Key_t startKey, int range, std::vector &rangeVector, ListNode *head); 19 | void print(ListNode *head); 20 | uint32_t size(ListNode* head); 21 | ListNode* getHead(); 22 | 23 | }; 24 | 25 | 26 | #endif //_LINKEDLIST_H 27 | -------------------------------------------------------------------------------- /hot/lib/hot/rowex/include/hot/rowex/MemoryGuard.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__ROWEX__MEMORY_GUARD__ 2 | #define __HOT__ROWEX__MEMORY_GUARD__ 3 | 4 | #include "hot/rowex/EpochBasedMemoryReclamationStrategy.hpp" 5 | 6 | namespace hot { namespace rowex { 7 | 8 | class MemoryGuard { 9 | EpochBasedMemoryReclamationStrategy* mMemoryReclamation; 10 | 11 | public: 12 | MemoryGuard(EpochBasedMemoryReclamationStrategy* memoryReclamation) : mMemoryReclamation(memoryReclamation) { 13 | mMemoryReclamation->enterCriticalSection(); 14 | } 15 | 16 | ~MemoryGuard() { 17 | mMemoryReclamation->leaveCriticialSection(); 18 | } 19 | 20 | MemoryGuard(MemoryGuard const & other) = delete; 21 | MemoryGuard &operator=(MemoryGuard const & other) = delete; 22 | }; 23 | 24 | }} 25 | 26 | #endif // __HOT_MEMORY_GUARD__ -------------------------------------------------------------------------------- /libcuckoo/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2013, Carnegie Mellon University and Intel Corporation 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | 15 | --------------------------- 16 | 17 | The third-party libraries have their own licenses, as detailed in their source 18 | files. 19 | -------------------------------------------------------------------------------- /hydralist_string/src/linkedList.h: -------------------------------------------------------------------------------- 1 | #ifndef _LINKEDLIST_H 2 | #define _LINKEDLIST_H 3 | #include "listNode.h" 4 | 5 | enum Operation {lt, gt}; 6 | 7 | class LinkedList { 8 | private: 9 | ListNode* head; 10 | 11 | public: 12 | ListNode* initialize(); 13 | bool insert(Key_t &key, Val_t value, ListNode* head); 14 | bool update(Key_t &key, Val_t value, ListNode* head); 15 | bool remove(Key_t &key, ListNode* head); 16 | bool probe(Key_t &key, ListNode* head); 17 | bool lookup(Key_t &key, Val_t &value, ListNode* head); 18 | uint64_t scan(Key_t &startKey, int range, std::vector &rangeVector, ListNode *head); 19 | void print(ListNode *head); 20 | uint32_t size(ListNode* head); 21 | ListNode* getHead(); 22 | 23 | }; 24 | 25 | 26 | #endif //_LINKEDLIST_H 27 | -------------------------------------------------------------------------------- /libcuckoo/examples/int_str_table.h: -------------------------------------------------------------------------------- 1 | // Include guard 2 | #ifndef INT_STR_TABLE_H 3 | #define INT_STR_TABLE_H 4 | 5 | // Below we define the constants the table template uses to fill in the 6 | // interface. 7 | // 8 | // All table functions will be prefixed with `int_str_table` 9 | #define CUCKOO_TABLE_NAME int_str_table 10 | // The type of the key is `int` 11 | #define CUCKOO_KEY_TYPE int 12 | // The type of the mapped value is `const char *` 13 | #define CUCKOO_MAPPED_TYPE const char * 14 | 15 | // Including the header after filling in the constants will populate the 16 | // interface. See the template file itself for specific function names; most of 17 | // them correspond to methods in the C++ implementation. 18 | #include 19 | 20 | #endif // INT_STR_TABLE_H 21 | -------------------------------------------------------------------------------- /hot/lib/idx/content-helpers/include/idx/contenthelpers/ValueToKeyTypeMapper.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __IDX__CONTENTHELPERS__VALUE_TO_KEY_TYPE_MAPPER__HPP__ 2 | #define __IDX__CONTENTHELPERS__VALUE_TO_KEY_TYPE_MAPPER__HPP__ 3 | 4 | /** @author robert.binna@uibk.ac.at */ 5 | 6 | #include 7 | 8 | namespace idx { namespace contenthelpers { 9 | 10 | /** 11 | * Helper Template, given a value type and key extractor type it is able to determine the corresponding key type. 12 | * 13 | * @tparam ValueType the type of the value 14 | * @tparam KeyExtractor the key extractor to consider 15 | */ 16 | template typename KeyExtractor> struct ValueToKeyTypeMapper { 17 | using KeyType = decltype(std::declval>()(std::declval())); 18 | }; 19 | 20 | }} 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /libcuckoo/tests/unit-tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(int_int_table STATIC int_int_table.cc) 2 | target_link_libraries(int_int_table libcuckoo) 3 | 4 | add_executable(unit_tests 5 | test_constructor.cc 6 | test_hash_properties.cc 7 | test_heterogeneous_compare.cc 8 | test_iterator.cc 9 | test_maximum_hashpower.cc 10 | test_minimum_load_factor.cc 11 | test_noncopyable_types.cc 12 | test_resize.cc 13 | test_runner.cc 14 | test_user_exceptions.cc 15 | test_locked_table.cc 16 | test_c_interface.cc 17 | test_libcuckoo_bucket_container.cc 18 | unit_test_util.cc 19 | unit_test_util.hh 20 | ) 21 | 22 | target_link_libraries(unit_tests 23 | PRIVATE catch 24 | PRIVATE libcuckoo 25 | PRIVATE int_int_table 26 | ) 27 | 28 | add_test(NAME unit_tests COMMAND unit_tests) 29 | -------------------------------------------------------------------------------- /hot/lib/idx/content-helpers/include/idx/contenthelpers/PairKeyExtractor.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __IDX__CONTENTHELPERS__PAIR_KEY_EXTRACTOR__ 2 | #define __IDX__CONTENTHELPERS__PAIR_KEY_EXTRACTOR__ 3 | 4 | /** @author robert.binna@uibk.ac.at */ 5 | 6 | namespace idx { namespace contenthelpers { 7 | 8 | /** 9 | * For pair like types the PairKeyExtractor returns the key part of the pair 10 | * 11 | * @tparam PairLikeType a pair like type having at least 'first' and 'second' field with the 'first' field pointing to the key part and the 'second' field pointing to the value part 12 | */ 13 | template 14 | struct PairKeyExtractor { 15 | using KeyType = decltype(std::declval().first); 16 | 17 | inline KeyType operator()(PairLikeType const &value) const { 18 | return value.first; 19 | } 20 | }; 21 | 22 | } } 23 | 24 | #endif -------------------------------------------------------------------------------- /hydralist/src/WorkerThread.h: -------------------------------------------------------------------------------- 1 | #ifndef HYDRALIST_WORKERTHREAD_H 2 | #define HYDRALIST_WORKERTHREAD_H 3 | #include "common.h" 4 | #include "Oplog.h" 5 | #include 6 | 7 | class WorkerThread { 8 | private: 9 | boost::lockfree::spsc_queue*, boost::lockfree::capacity<10000>> *workQueue; 10 | int workerThreadId; 11 | int activeNuma; 12 | unsigned long logDoneCount; 13 | std::queue> *freeQueue; 14 | public: 15 | unsigned long opcount; 16 | WorkerThread(int id, int activeNuma); 17 | bool applyOperation(); 18 | bool isWorkQueueEmpty(); 19 | unsigned long getLogDoneCount() {return logDoneCount;} 20 | void freeListNodes(uint64_t removeCount); 21 | }; 22 | extern std::vector g_WorkerThreadInst; 23 | 24 | 25 | #endif //HYDRALIST_WORKERTHREAD_H 26 | -------------------------------------------------------------------------------- /hydralist_string/src/WorkerThread.h: -------------------------------------------------------------------------------- 1 | #ifndef HYDRALIST_WORKERTHREAD_H 2 | #define HYDRALIST_WORKERTHREAD_H 3 | #include "common.h" 4 | #include "Oplog.h" 5 | #include 6 | 7 | class WorkerThread { 8 | private: 9 | boost::lockfree::spsc_queue*, boost::lockfree::capacity<10000>> *workQueue; 10 | int workerThreadId; 11 | int activeNuma; 12 | unsigned long logDoneCount; 13 | std::queue> *freeQueue; 14 | public: 15 | unsigned long opcount; 16 | WorkerThread(int id, int activeNuma); 17 | bool applyOperation(); 18 | bool isWorkQueueEmpty(); 19 | unsigned long getLogDoneCount() {return logDoneCount;} 20 | void freeListNodes(uint64_t removeCount); 21 | }; 22 | extern std::vector g_WorkerThreadInst; 23 | 24 | #endif //HYDRALIST_WORKERTHREAD_H 25 | -------------------------------------------------------------------------------- /hot/lib/idx/content-helpers/include/idx/contenthelpers/ContentEquals.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __IDX__CONTENTHELPERS__CONTENT_EQUALS__ 2 | #define __IDX__CONTENTHELPERS__CONTENT_EQUALS__ 3 | 4 | /** @author robert.binna@uibk.ac.at */ 5 | 6 | #include 7 | 8 | namespace idx { namespace contenthelpers { 9 | 10 | /** 11 | * checks value equality for two given values 12 | * template specializations allow to adapt its behaviour for specific types. 13 | * For instance a specialization exist which compares two c-strings by using strcmp. 14 | */ 15 | template __attribute__((always_inline)) inline bool contentEquals(Value value1, Value value2) { 16 | return value1 == value2; 17 | } 18 | 19 | template<> __attribute__((always_inline)) inline bool contentEquals(char const* value1, char const* value2) { 20 | return strcmp(value1, value2) == 0; 21 | } 22 | 23 | } } 24 | 25 | #endif -------------------------------------------------------------------------------- /libcuckoo/examples/blob_blob_table.h: -------------------------------------------------------------------------------- 1 | // This table was created to illustrate usage of the table with untyped blobs. 2 | // See `int_str_table.h` for more comments regarding the semantics of creating 3 | // header files for use with C programs. 4 | 5 | #ifndef BLOB_BLOB_TABLE_H 6 | #define BLOB_BLOB_TABLE_H 7 | 8 | // In C, assignment is not defined for raw arrays, but it is defined for all 9 | // structs, including those containing arrays. Thus, since the hashtable 10 | // requires that assignment is defined for key and mapped types, we wrap the 11 | // blobs in a struct. 12 | typedef struct { char blob[8]; } key_blob; 13 | 14 | typedef struct { char blob[255]; } mapped_blob; 15 | 16 | #define CUCKOO_TABLE_NAME blob_blob_table 17 | #define CUCKOO_KEY_TYPE key_blob 18 | #define CUCKOO_MAPPED_TYPE mapped_blob 19 | 20 | #include 21 | 22 | #endif // BLOB_BLOB_TABLE_H 23 | -------------------------------------------------------------------------------- /pcm/MacMSRDriver/PcmMsr.xcodeproj/xcuserdata/pjkerly.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | PcmMsrDriver.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | PcmMsrLibrary.xcscheme 13 | 14 | orderHint 15 | 1 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | 81ADBF11156EEB93006D9B47 21 | 22 | primary 23 | 24 | 25 | 81F91BBB156D9BF8007DD788 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /masstree/string_slice.cc: -------------------------------------------------------------------------------- 1 | /* Masstree 2 | * Eddie Kohler, Yandong Mao, Robert Morris 3 | * Copyright (c) 2012-2013 President and Fellows of Harvard College 4 | * Copyright (c) 2012-2013 Massachusetts Institute of Technology 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a 7 | * copy of this software and associated documentation files (the "Software"), 8 | * to deal in the Software without restriction, subject to the conditions 9 | * listed in the Masstree LICENSE file. These conditions include: you must 10 | * preserve this copyright notice, and you cannot mention the copyright 11 | * holders in advertising related to the Software without their permission. 12 | * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This 13 | * notice is a summary of the Masstree LICENSE file; the license in that file 14 | * is legally binding. 15 | */ 16 | #include "string_slice.hh" 17 | -------------------------------------------------------------------------------- /pcm/MacMSRDriver/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2012 Intel Corporation 3 | # written by Austen Ott 4 | # 5 | # Build and install the PcmMsr kext and dynamically linked library. 6 | 7 | clean: 8 | xcodebuild clean 9 | 10 | kext: 11 | xcodebuild -configuration Release -target PcmMsrDriver build 12 | 13 | library: 14 | xcodebuild -configuration Release -target PcmMsrLibrary build 15 | 16 | install: clean kext library 17 | sudo sh ./kextload.sh 18 | sudo mkdir -p /usr/include /usr/lib 19 | sudo cp build/Release/libPcmMsr.dylib /usr/lib/ 20 | sudo cp MSRAccessorPublic.h /usr/include/MSRAccessor.h 21 | sudo cp MSRKernel.h /usr/include/MSRKernel.h 22 | sudo cp PCIDriverInterface.h /usr/include/PCIDriverInterface.h 23 | 24 | uninstall: 25 | sudo sh ./kextunload.sh 26 | sudo rm /usr/include/MSRKernel.h 27 | sudo rm /usr/include/MSRAccessor.h 28 | sudo rm /usr/lib/libPcmMsr.dylib 29 | sudo rm /usr/include/PCIDriverInterface.h 30 | -------------------------------------------------------------------------------- /hot/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8) 2 | 3 | PROJECT(HOT_ROOT) 4 | 5 | option(USEAVX2 "USEAVX2" OFF) 6 | option(USETRAVIS "USETRAVIS" OFF) 7 | option(USEAVX512 "USEAVX512" ON) 8 | option(USE_COUNTERS "USE_COUNTERS" OFF) 9 | option(COVERAGE "COVERAGE" OFF) 10 | set(CMAKE_CXX_STANDARD 14) 11 | set(CMAKE_CXX_FLAGS "-pthread -Wall -Wextra -march=native") 12 | set(CMAKE_CXX_FLAGS_RELEASE "-O3 -g") 13 | 14 | if(NOT CMAKE_BUILD_TYPE) 15 | set(CMAKE_BUILD_TYPE Release) 16 | endif() 17 | 18 | if(USEAVX512) 19 | SET(CMAKE_CXX_FLAGS "-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd ${CMAKE_CXX_FLAGS}") 20 | add_definitions(-DUSE_AVX512) 21 | endif() 22 | 23 | SET(TBB_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/third-party/tbb") 24 | include(${TBB_ROOT}/cmake/TBBBuild.cmake) 25 | tbb_build(TBB_ROOT ${TBB_ROOT} CONFIG_DIR TBB_DIR MAKE_ARGS) 26 | find_package(TBB REQUIRED) 27 | 28 | 29 | ADD_SUBDIRECTORY(lib) 30 | ADD_SUBDIRECTORY(src) 31 | -------------------------------------------------------------------------------- /hot/lib/hot/commons/include/hot/commons/BiNodeInterface.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__COMMONS__BI_NODE_INTERFACE___ 2 | #define __HOT__COMMONS__BI_NODE_INTERFACE___ 3 | 4 | namespace hot { namespace commons { 5 | 6 | template struct BiNode { 7 | uint16_t mDiscriminativeBitIndex; 8 | uint16_t mHeight; 9 | ChildPointerType mLeft; 10 | ChildPointerType mRight; 11 | 12 | inline BiNode() { 13 | //is intentionally left undefined for performance reasons!! 14 | } 15 | 16 | inline BiNode(BiNode const & other) = default; 17 | inline BiNode & operator=(BiNode const & other) = default; 18 | 19 | inline BiNode(uint16_t const discriminativeBitIndex, uint16_t const height, ChildPointerType const & left, ChildPointerType const & right); 20 | inline static BiNode createFromExistingAndNewEntry(DiscriminativeBit const & discriminativeBit, ChildPointerType const & existingNode, ChildPointerType const & newEntry); 21 | }; 22 | 23 | }} 24 | 25 | #endif -------------------------------------------------------------------------------- /hot/lib/hot/single-threaded/include/hot/singlethreaded/HOTSingleThreadedInsertStackEntry.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__SINGLE_THREADED__HOT_SINGLE_THREADED_INSERT_STACK_ENTRY___ 2 | #define __HOT__SINGLE_THREADED__HOT_SINGLE_THREADED_INSERT_STACK_ENTRY___ 3 | 4 | #include 5 | 6 | #include "HOTSingleThreadedChildPointer.hpp" 7 | 8 | namespace hot { namespace singlethreaded { 9 | 10 | struct HOTSingleThreadedInsertStackEntry { 11 | HOTSingleThreadedChildPointer *mChildPointer; 12 | hot::commons::SearchResultForInsert mSearchResultForInsert; 13 | 14 | inline void initLeaf(HOTSingleThreadedChildPointer * childPointer) { 15 | mChildPointer = childPointer; 16 | //important for finding the correct depth!! 17 | mSearchResultForInsert.mMostSignificantBitIndex = UINT16_MAX; 18 | } 19 | 20 | //PERFORMANCE this must be uninitialized 21 | inline HOTSingleThreadedInsertStackEntry() { 22 | } 23 | }; 24 | 25 | } } 26 | 27 | #endif -------------------------------------------------------------------------------- /rotate-skiplist/atomic_ops/standard_ao_double_t.h: -------------------------------------------------------------------------------- 1 | /* NEC LE-IT: For 64Bit OS we extend the double type to hold two int64's 2 | * 3 | * x86-64: __m128 serves as placeholder which also requires the compiler 4 | * to align it on 16 byte boundary (as required by cmpxchg16. 5 | * Similar things could be done for PowerPC 64bit using a VMX data type... */ 6 | 7 | #if (defined(__x86_64__) && defined(__GNUC__)) || defined(_WIN64) 8 | # include 9 | typedef __m128 double_ptr_storage; 10 | #elif defined(_WIN32) && !defined(__GNUC__) 11 | typedef unsigned __int64 double_ptr_storage; 12 | #else 13 | typedef unsigned long long double_ptr_storage; 14 | #endif 15 | 16 | # define AO_HAVE_DOUBLE_PTR_STORAGE 17 | 18 | typedef union { 19 | double_ptr_storage AO_whole; 20 | struct {AO_t AO_v1; AO_t AO_v2;} AO_parts; 21 | } AO_double_t; 22 | 23 | #define AO_HAVE_double_t 24 | #define AO_val1 AO_parts.AO_v1 25 | #define AO_val2 AO_parts.AO_v2 26 | -------------------------------------------------------------------------------- /rotate-skiplist/ptst.h: -------------------------------------------------------------------------------- 1 | /* 2 | * the per-thread state interface 3 | */ 4 | #ifndef PTST_H_ 5 | #define PTST_H_ 6 | 7 | #include 8 | 9 | typedef struct sl_ptst ptst_t; 10 | struct sl_ptst { 11 | /* thread id */ 12 | unsigned int id; 13 | 14 | /* state management */ 15 | ptst_t *next; 16 | unsigned int count; 17 | 18 | /* utility structures */ 19 | struct gc_st *gc; 20 | }; 21 | 22 | extern pthread_key_t ptst_key; 23 | 24 | /* 25 | * enter/leave a critical section - a thread gets a state handle for 26 | * use during critical regions 27 | */ 28 | ptst_t* ptst_critical_enter(void); 29 | #define ptst_critical_exit(_p) gc_exit(_p); 30 | 31 | /* Iterators */ 32 | extern ptst_t *ptst_list; 33 | #define ptst_first() (ptst_list) 34 | #define ptst_next(_p) ((_p)->next) 35 | 36 | /* Called once at the beginning of the application */ 37 | void ptst_subsystem_init(void); 38 | 39 | #endif /* PTST_H_ */ 40 | -------------------------------------------------------------------------------- /nohotspot-skiplist/atomic_ops/standard_ao_double_t.h: -------------------------------------------------------------------------------- 1 | /* NEC LE-IT: For 64Bit OS we extend the double type to hold two int64's 2 | * 3 | * x86-64: __m128 serves as placeholder which also requires the compiler 4 | * to align it on 16 byte boundary (as required by cmpxchg16. 5 | * Similar things could be done for PowerPC 64bit using a VMX data type... */ 6 | 7 | #if (defined(__x86_64__) && defined(__GNUC__)) || defined(_WIN64) 8 | # include 9 | typedef __m128 double_ptr_storage; 10 | #elif defined(_WIN32) && !defined(__GNUC__) 11 | typedef unsigned __int64 double_ptr_storage; 12 | #else 13 | typedef unsigned long long double_ptr_storage; 14 | #endif 15 | 16 | # define AO_HAVE_DOUBLE_PTR_STORAGE 17 | 18 | typedef union { 19 | double_ptr_storage AO_whole; 20 | struct {AO_t AO_v1; AO_t AO_v2;} AO_parts; 21 | } AO_double_t; 22 | 23 | #define AO_HAVE_double_t 24 | #define AO_val1 AO_parts.AO_v1 25 | #define AO_val2 AO_parts.AO_v2 26 | -------------------------------------------------------------------------------- /masstree/value_string.cc: -------------------------------------------------------------------------------- 1 | /* Masstree 2 | * Eddie Kohler, Yandong Mao, Robert Morris 3 | * Copyright (c) 2012-2014 President and Fellows of Harvard College 4 | * Copyright (c) 2012-2014 Massachusetts Institute of Technology 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a 7 | * copy of this software and associated documentation files (the "Software"), 8 | * to deal in the Software without restriction, subject to the conditions 9 | * listed in the Masstree LICENSE file. These conditions include: you must 10 | * preserve this copyright notice, and you cannot mention the copyright 11 | * holders in advertising related to the Software without their permission. 12 | * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This 13 | * notice is a summary of the Masstree LICENSE file; the license in that file 14 | * is legally binding. 15 | */ 16 | #include "kvrow.hh" 17 | #include "value_string.hh" 18 | #include 19 | -------------------------------------------------------------------------------- /hot/lib/hot/commons/include/hot/commons/SearchResultForInsert.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__COMMONS__SEARCH_RESULT_FOR_INSERT___ 2 | #define __HOT__COMMONS__SEARCH_RESULT_FOR_INSERT___ 3 | 4 | #include 5 | 6 | namespace hot { namespace commons { 7 | 8 | /** 9 | * A Helper Function for storing additional result information: 10 | * - the index of the return entry 11 | * - the most significant bit index of the containing node 12 | */ 13 | struct SearchResultForInsert { 14 | uint32_t mEntryIndex; 15 | uint16_t mMostSignificantBitIndex; 16 | 17 | inline SearchResultForInsert(uint32_t entryIndex, uint16_t mostSignificantBitIndex) 18 | : mEntryIndex(entryIndex), mMostSignificantBitIndex(mostSignificantBitIndex) { 19 | } 20 | 21 | inline SearchResultForInsert() { 22 | } 23 | 24 | inline void init(uint32_t entryIndex, uint16_t mostSignificantBitIndex) { 25 | mEntryIndex = entryIndex; 26 | mMostSignificantBitIndex = mostSignificantBitIndex; 27 | } 28 | }; 29 | 30 | }} 31 | 32 | #endif -------------------------------------------------------------------------------- /rotate-skiplist/common.h: -------------------------------------------------------------------------------- 1 | /* 2 | * common definitions shared by all modules 3 | */ 4 | #ifndef COMMON_H_ 5 | #define COMMON_H_ 6 | 7 | #include "./atomic_ops/atomic_ops.h" 8 | 9 | #define VOLATILE /* volatile */ 10 | #define BARRIER() asm volatile("" ::: "memory") 11 | 12 | #define CAS(_m, _o, _n) AO_compare_and_swap_full(((VOLATILE AO_t*) _m), ((AO_t) _o), ((AO_t) _n)) 13 | 14 | #define FAI(a) AO_fetch_and_add_full((VOLATILE AO_t*) (a), 1) 15 | #define FAD(a) AO_fetch_and_add_full((VOLATILE AO_t*) (a), -1) 16 | 17 | /* 18 | * Allow us to efficiently align and pad structures so that shared fields 19 | * don't cause contention on thread-local or read-only fields. 20 | */ 21 | #define CACHE_PAD(_n) char __pad ## _n [CACHE_LINE_SIZE] 22 | #define ALIGNED_ALLOC(_s) \ 23 | ((void *)(((unsigned long)malloc((_s)+CACHE_LINE_SIZE*2) + \ 24 | CACHE_LINE_SIZE - 1) & ~(CACHE_LINE_SIZE-1))) 25 | 26 | #define CACHE_LINE_SIZE 64 27 | 28 | #endif /* COMMON_H_ */ 29 | -------------------------------------------------------------------------------- /nohotspot-skiplist/common.h: -------------------------------------------------------------------------------- 1 | /* 2 | * common definitions shared by all modules 3 | */ 4 | #ifndef COMMON_H_ 5 | #define COMMON_H_ 6 | 7 | #include "./atomic_ops/atomic_ops.h" 8 | 9 | #define VOLATILE /* volatile */ 10 | #define BARRIER() asm volatile("" ::: "memory"); 11 | 12 | #define CAS(_m, _o, _n) \ 13 | AO_compare_and_swap_full(((volatile AO_t*) _m), ((AO_t) _o), ((AO_t) _n)) 14 | 15 | #define FAI(a) AO_fetch_and_add_full((volatile AO_t*) (a), 1) 16 | #define FAD(a) AO_fetch_and_add_full((volatile AO_t*) (a), -1) 17 | 18 | /* 19 | * Allow us to efficiently align and pad structures so that shared fields 20 | * don't cause contention on thread-local or read-only fields. 21 | */ 22 | #define CACHE_PAD(_n) char __pad ## _n [CACHE_LINE_SIZE] 23 | #define ALIGNED_ALLOC(_s) \ 24 | ((void *)(((unsigned long)malloc((_s)+CACHE_LINE_SIZE*2) + \ 25 | CACHE_LINE_SIZE - 1) & ~(CACHE_LINE_SIZE-1))) 26 | 27 | #define CACHE_LINE_SIZE 64 28 | 29 | 30 | 31 | #endif /* COMMON_H_ */ 32 | -------------------------------------------------------------------------------- /rotate-skiplist/nohotspot_ops.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Interface for the No Hot Spot Non-Blocking Skip List 3 | * operations. 4 | * 5 | * Author: Ian Dick, 2013. 6 | */ 7 | 8 | #ifndef NOHOTSPOT_OPS_H_ 9 | #define NOHOTSPOT_OPS_H_ 10 | 11 | #include "skiplist.h" 12 | 13 | enum sl_optype { 14 | CONTAINS, 15 | DELETE, 16 | INSERT, 17 | SCAN, 18 | }; 19 | 20 | typedef enum sl_optype sl_optype_t; 21 | 22 | int sl_do_operation(set_t *set, sl_optype_t optype, 23 | sl_key_type key, sl_value_type val); 24 | 25 | /* these are macros instead of functions to improve performance */ 26 | #define sl_contains(a, b) sl_do_operation((a), CONTAINS, (b), NULL); 27 | #define sl_delete(a, b) sl_do_operation((a), DELETE, (b), NULL); 28 | #define sl_insert(a, b, c) sl_do_operation((a), INSERT, (b), (c)); 29 | // Note that the range must keep valid before this function returns 30 | #define sl_scan(a, start_key, range) sl_do_operation((a), SCAN, (start_key), (void *)&(range)) 31 | 32 | #endif /* NOHOTSPOT_OPS_H_ */ 33 | -------------------------------------------------------------------------------- /nohotspot-skiplist/ptst.h: -------------------------------------------------------------------------------- 1 | /* 2 | * the per-thread state interface 3 | */ 4 | #ifndef PTST_H_ 5 | #define PTST_H_ 6 | 7 | #include 8 | 9 | typedef struct sl_ptst ptst_t; 10 | 11 | #include "garbagecoll.h" 12 | 13 | struct sl_ptst { 14 | /* thread id */ 15 | unsigned int id; 16 | 17 | /* state management */ 18 | struct sl_ptst *next; 19 | unsigned int count; 20 | 21 | /* utility structures */ 22 | gc_st *gc; 23 | unsigned long rand; 24 | }; 25 | 26 | extern pthread_key_t ptst_key; 27 | 28 | /* 29 | * enter/leave a critical section - a thread gets a state handle for 30 | * use during critical regions 31 | */ 32 | ptst_t* ptst_critical_enter(void); 33 | #define ptst_critical_exit(_p) gc_exit(_p); 34 | 35 | /* Iterators */ 36 | extern ptst_t *ptst_list; 37 | #define ptst_first() (ptst_list) 38 | #define ptst_next(_p) ((_p)->next) 39 | 40 | /* Called once at the beginning of the application */ 41 | void ptst_subsystem_init(void); 42 | 43 | #endif /* PTST_H_ */ 44 | -------------------------------------------------------------------------------- /pcm/MacMSRDriver/PcmMsr.xcodeproj/xcuserdata/aiott.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | PcmMsr.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | PcmMsrLibrary.xcscheme 13 | 14 | orderHint 15 | 1 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | 81ADBF11156EEB93006D9B47 21 | 22 | primary 23 | 24 | 25 | 81DEAF55157008B7005E8EC6 26 | 27 | primary 28 | 29 | 30 | 81F91BBB156D9BF8007DD788 31 | 32 | primary 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /nohotspot-skiplist/nohotspot_ops.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Interface for the No Hot Spot Non-Blocking Skip List 3 | * operations. 4 | * 5 | * Author: Ian Dick, 2013. 6 | */ 7 | 8 | #ifndef NOHOTSPOT_OPS_H_ 9 | #define NOHOTSPOT_OPS_H_ 10 | 11 | #include "skiplist.h" 12 | 13 | enum sl_optype { 14 | CONTAINS, 15 | DELETE, 16 | INSERT, 17 | SCAN, 18 | }; 19 | typedef enum sl_optype sl_optype_t; 20 | 21 | int sl_do_operation(long *steps, set_t *set, sl_optype_t optype, sl_key_t key, val_t val); 22 | 23 | /* these are macros instead of functions to improve performance */ 24 | #define sl_contains(steps, a, b) sl_do_operation((steps), (a), CONTAINS, (b), NULL); 25 | #define sl_delete(steps, a, b) sl_do_operation((steps), (a), DELETE, (b), NULL); 26 | #define sl_insert(steps, a, b, c) sl_do_operation((steps), (a), INSERT, (b), (c)); 27 | // Note that the range must keep valid before this function returns 28 | #define sl_scan(steps, a, start_key, range) sl_do_operation((steps), (a), SCAN, (start_key), (void *)&(range)) 29 | 30 | #endif /* NOHOTSPOT_OPS_H_ */ 31 | -------------------------------------------------------------------------------- /libcuckoo/examples/blob_blob_table.cc: -------------------------------------------------------------------------------- 1 | // This table was created to illustrate usage of the table with untyped blobs. 2 | // See `int_str_table.cc` for more comments regarding the semantics of creating 3 | // implementation files for use with C programs. 4 | 5 | extern "C" { 6 | #include "blob_blob_table.h" 7 | } 8 | 9 | // The hashtable uses the generic std::hash template wrapper as the hash 10 | // function and std::equal_to as the equality function for key hashing and 11 | // comparison. Since neither of these templates are specialized for our custom 12 | // key_blob type, we must create our own specializations. 13 | 14 | #include 15 | #include 16 | 17 | namespace std { 18 | template <> struct hash { 19 | size_t operator()(const key_blob &kb) const { return *(size_t *)kb.blob; } 20 | }; 21 | 22 | template <> struct equal_to { 23 | bool operator()(const key_blob &lhs, const key_blob &rhs) const { 24 | return memcmp(lhs.blob, rhs.blob, sizeof(lhs.blob)) == 0; 25 | } 26 | }; 27 | } 28 | 29 | #include 30 | -------------------------------------------------------------------------------- /rotate-skiplist-cpp/rotate-skiplist.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "rotate-skiplist.h" 3 | 4 | using namespace rotate_skiplist; 5 | 6 | ///////////////////////////////////////////////////////////////////// 7 | // Global varialbes: GCGlobalState 8 | ///////////////////////////////////////////////////////////////////// 9 | 10 | // Initialized once on Init() call of class GCGlobalState 11 | GCGlobalState *GCGlobalState::global_state_p = nullptr; 12 | 13 | ///////////////////////////////////////////////////////////////////// 14 | // Global varialbes: ThreadState 15 | ///////////////////////////////////////////////////////////////////// 16 | 17 | // Three global variables defined within thread state object 18 | // which mains the global linked list of thread objects 19 | pthread_key_t ThreadState::thread_state_key{}; 20 | 21 | // Will initialize these two in the global initializer 22 | std::atomic ThreadState::next_id{0U}; 23 | std::atomic ThreadState::thread_state_head_p{nullptr}; 24 | 25 | // Has not been initialized yet 26 | bool ThreadState::inited = false; -------------------------------------------------------------------------------- /libcuckoo/tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(test_util INTERFACE) 2 | target_include_directories(test_util INTERFACE 3 | $ 4 | $ 5 | ) 6 | 7 | # put these in the cache so they show up in ccmake 8 | option (BUILD_TESTS "build all libcuckoo tests") 9 | option (BUILD_STRESS_TESTS "build the stress tests") 10 | option (BUILD_UNIT_TESTS "build the unit tests") 11 | option (BUILD_UNIVERSAL_BENCHMARK "build the universal benchmark and associated tests") 12 | 13 | # Add pcg if we're doing stress tests or universal benchmark 14 | if (BUILD_TESTS OR 15 | BUILD_STRESS_TESTS OR 16 | BUILD_UNIVERSAL_BENCHMARK) 17 | add_subdirectory(pcg) 18 | endif() 19 | 20 | # Add catch for unit tests 21 | if (BUILD_TESTS OR BUILD_UNIT_TESTS) 22 | add_subdirectory(Catch) 23 | add_subdirectory(unit-tests) 24 | endif() 25 | 26 | if (BUILD_TESTS OR BUILD_STRESS_TESTS) 27 | add_subdirectory(stress-tests) 28 | endif() 29 | 30 | if (BUILD_TESTS OR BUILD_UNIVERSAL_BENCHMARK) 31 | add_subdirectory(universal-benchmark) 32 | endif() 33 | -------------------------------------------------------------------------------- /nohotspot-skiplist/intset.h: -------------------------------------------------------------------------------- 1 | /* 2 | * File: 3 | * intset.h 4 | * Author(s): 5 | * Vincent Gramoli 6 | * Description: 7 | * Skip list integer set operations 8 | * 9 | * Copyright (c) 2009-2010. 10 | * 11 | * intset.h is part of Synchrobench 12 | * 13 | * Synchrobench is free software: you can redistribute it and/or 14 | * modify it under the terms of the GNU General Public License 15 | * as published by the Free Software Foundation, version 2 16 | * of the License. 17 | * 18 | * This program is distributed in the hope that it will be useful, 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | * GNU General Public License for more details. 22 | */ 23 | 24 | #ifndef INTSET_H_ 25 | #define INTSET_T_ 26 | 27 | #include "skiplist.h" 28 | 29 | int sl_contains_old(set_t *set, unsigned int key, int transactional); 30 | int sl_add_old(set_t *set, unsigned int key, int transactional); 31 | int sl_remove_old(set_t *set, unsigned int key, int transactional); 32 | 33 | #endif /* INTSET_H_ */ 34 | -------------------------------------------------------------------------------- /rotate-skiplist/intset.h: -------------------------------------------------------------------------------- 1 | /* 2 | * File: 3 | * intset.h 4 | * Author(s): 5 | * Vincent Gramoli 6 | * Description: 7 | * Skip list integer set operations 8 | * 9 | * Copyright (c) 2009-2010. 10 | * 11 | * intset.h is part of Synchrobench 12 | * 13 | * Synchrobench is free software: you can redistribute it and/or 14 | * modify it under the terms of the GNU General Public License 15 | * as published by the Free Software Foundation, version 2 16 | * of the License. 17 | * 18 | * This program is distributed in the hope that it will be useful, 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | * GNU General Public License for more details. 22 | */ 23 | 24 | #ifndef INTSET_H_ 25 | #define INTSET_T_ 26 | 27 | #include "skiplist.h" 28 | 29 | int sl_contains_old(set_t *set, unsigned long key, int transactional); 30 | int sl_add_old(set_t *set, unsigned long key, int transactional); 31 | int sl_remove_old(set_t *set, unsigned long key, int transactional); 32 | 33 | #endif /* INTSET_H_ */ 34 | -------------------------------------------------------------------------------- /hydralist/include/HydraList.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by ajit on 3/25/19. 3 | // 4 | 5 | #ifndef HYDRALIST_HYDRALISTAPI_H 6 | #define HYDRALIST_HYDRALISTAPI_H 7 | #include "HydraListImpl.h" 8 | #include "common.h" 9 | class HydraList { 10 | private: 11 | HydraListImpl *hl; 12 | public: 13 | HydraList(int numa) { 14 | hl = new HydraListImpl(numa); 15 | } 16 | ~HydraList() { 17 | delete hl; 18 | } 19 | bool insert(Key_t key, Val_t val) { 20 | return hl->insert(key, val); 21 | } 22 | bool update(Key_t key, Val_t val) { 23 | return hl->update(key, val); 24 | } 25 | Val_t lookup(Key_t key) { 26 | return hl->lookup(key); 27 | } 28 | Val_t remove(Key_t key) { 29 | return hl->remove(key); 30 | } 31 | uint64_t scan(Key_t startKey, int range, std::vector &result) { 32 | return hl->scan(startKey, range, result); 33 | } 34 | void registerThread() { 35 | hl->registerThread(); 36 | } 37 | void unregisterThread() { 38 | hl->unregisterThread(); 39 | } 40 | }; 41 | 42 | #endif //HYDRALIST_HYDRALISTAPI_H 43 | -------------------------------------------------------------------------------- /hydralist_string/include/HydraList.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by ajit on 3/25/19. 3 | // 4 | 5 | #ifndef HYDRALIST_HYDRALISTAPI_H 6 | #define HYDRALIST_HYDRALISTAPI_H 7 | #include "HydraListImpl.h" 8 | #include "common.h" 9 | class HydraList { 10 | private: 11 | HydraListImpl *hl; 12 | public: 13 | HydraList(int numa) { 14 | hl = new HydraListImpl(numa); 15 | } 16 | ~HydraList() { 17 | delete hl; 18 | } 19 | bool insert(Key_t key, Val_t val) { 20 | return hl->insert(key, val); 21 | } 22 | bool update(Key_t key, Val_t val) { 23 | return hl->update(key, val); 24 | } 25 | Val_t lookup(Key_t key) { 26 | return hl->lookup(key); 27 | } 28 | bool remove(Key_t key) { 29 | return hl->remove(key); 30 | } 31 | uint64_t scan(Key_t startKey, int range, std::vector &result) { 32 | return hl->scan(startKey, range, result); 33 | } 34 | void registerThread() { 35 | hl->registerThread(); 36 | } 37 | void unregisterThread() { 38 | hl->unregisterThread(); 39 | } 40 | }; 41 | 42 | #endif //HYDRALIST_HYDRALISTAPI_H 43 | -------------------------------------------------------------------------------- /nohotspot-skiplist/lockfree.h: -------------------------------------------------------------------------------- 1 | 2 | # define NL 1 3 | # define EL 0 4 | # define TX_START(type) /* nothing */ 5 | # define TX_LOAD(addr) (*(addr)) 6 | # define TX_STORE(addr, val) (*(addr) = (val)) 7 | # define TX_END /* nothing */ 8 | # define FREE(addr, size) free(addr) 9 | # define MALLOC(size) malloc(size) 10 | # define TM_CALLABLE /* nothing */ 11 | # define TM_ARGDECL_ALONE /* nothing */ 12 | # define TM_ARGDECL /* nothing */ 13 | # define TM_ARG /* nothing */ 14 | # define TM_ARG_ALONE /* nothing */ 15 | # define TM_ARG_LAST /* nothing */ 16 | # define TM_STARTUP() /* nothing */ 17 | # define TM_SHUTDOWN() /* nothing */ 18 | # define TM_STARTUP() /* nothing */ 19 | # define TM_SHUTDOWN() /* nothing */ 20 | # define TM_THREAD_ENTER() /* nothing */ 21 | # define TM_THREAD_EXIT() /* nothing */ 22 | -------------------------------------------------------------------------------- /rotate-skiplist/lockfree.h: -------------------------------------------------------------------------------- 1 | 2 | # define NL 1 3 | # define EL 0 4 | # define TX_START(type) /* nothing */ 5 | # define TX_LOAD(addr) (*(addr)) 6 | # define TX_STORE(addr, val) (*(addr) = (val)) 7 | # define TX_END /* nothing */ 8 | # define FREE(addr, size) free(addr) 9 | # define MALLOC(size) malloc(size) 10 | # define TM_CALLABLE /* nothing */ 11 | # define TM_ARGDECL_ALONE /* nothing */ 12 | # define TM_ARGDECL /* nothing */ 13 | # define TM_ARG /* nothing */ 14 | # define TM_ARG_ALONE /* nothing */ 15 | # define TM_ARG_LAST /* nothing */ 16 | # define TM_STARTUP() /* nothing */ 17 | # define TM_SHUTDOWN() /* nothing */ 18 | # define TM_STARTUP() /* nothing */ 19 | # define TM_SHUTDOWN() /* nothing */ 20 | # define TM_THREAD_ENTER() /* nothing */ 21 | # define TM_THREAD_EXIT() /* nothing */ 22 | -------------------------------------------------------------------------------- /hot/lib/hot/commons/include/hot/commons/BiNode.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__COMMONS__BI_NODE___ 2 | #define __HOT__COMMONS__BI_NODE___ 3 | 4 | #include 5 | 6 | #include 7 | 8 | namespace hot { namespace commons { 9 | 10 | template inline BiNode::BiNode(uint16_t const discriminativeBitIndex, uint16_t const height, ChildPointerType const & left, ChildPointerType const & right) : mDiscriminativeBitIndex(discriminativeBitIndex), mHeight(height), mLeft(left), mRight(right) { 11 | } 12 | 13 | template inline BiNode BiNode::createFromExistingAndNewEntry(DiscriminativeBit const & discriminativeBit, ChildPointerType const & existingNode, ChildPointerType const & newEntry) { 14 | uint16_t newHeight = existingNode.getHeight() + 1u; 15 | return discriminativeBit.mValue 16 | ? BiNode { discriminativeBit.mAbsoluteBitIndex, newHeight, existingNode, newEntry } 17 | : BiNode { discriminativeBit.mAbsoluteBitIndex, newHeight, newEntry, existingNode }; 18 | } 19 | 20 | }} 21 | 22 | #endif -------------------------------------------------------------------------------- /nohotspot-skiplist/garbagecoll.h: -------------------------------------------------------------------------------- 1 | /* 2 | * interface for garbage collection 3 | */ 4 | 5 | #ifndef GARBAGECOLL_H_ 6 | #define GARBAGECOLL_H_ 7 | 8 | /* comment out to disable garbage collection */ 9 | #define USE_GC 10 | 11 | #include "ptst.h" 12 | 13 | typedef struct gc_st gc_st; 14 | 15 | /* Initialise GC section of per-thread state */ 16 | gc_st* gc_init(void); 17 | 18 | int gc_add_allocator(int alloc_size); 19 | void gc_remove_allocator(int alloc_id); 20 | 21 | void* gc_alloc(ptst_t *ptst, int alloc_id); 22 | void gc_free(ptst_t *ptst, void *p, int alloc_id); 23 | void gc_free_unsafe(ptst_t *ptst, void *p, int alloc_id); 24 | 25 | /* Hook registry - allows users to hook in their own epoch-delay lists */ 26 | typedef void (*gc_hookfn)(ptst_t*, void*); 27 | int gc_add_hook(gc_hookfn hookfn); 28 | void gc_remove_hook(int hookid); 29 | void gc_hooklist_addptr(ptst_t *ptst, void *ptr, int hookid); 30 | 31 | /* Per-thread entry/exit from critical regions */ 32 | void gc_enter(ptst_t* ptst); 33 | void gc_exit(ptst_t* ptst); 34 | 35 | /* Initialisation of GC */ 36 | void gc_subsystem_init(void); 37 | void gc_subsystem_destroy(void); 38 | 39 | #endif /* GARBAGECOLL_H_ */ 40 | -------------------------------------------------------------------------------- /pcm/freegetopt/ChangeLog: -------------------------------------------------------------------------------- 1 | 2003-10-25 Mark K. Kim {getopt*cbreak.org} 2 | 3 | * *: freegetopt 0.11 released. 4 | 5 | 2003-10-25 Mark K. Kim {getopt*cbreak.org} 6 | 7 | * ChangeLog: ChangeLog file added. 8 | 9 | * LICENSE: License file added. License is now officially BSD. 10 | 11 | * README: Updated to reflect the new license. CVS tracking data 12 | added. 13 | 14 | * getopt.h, getopt.c: License text added to the beginning of 15 | each file. CVS tracking data added. 16 | 17 | * test.c: License text added to the beginning of the file. 18 | CVS tracking data added. 19 | 20 | 2003-10-20 Mark K. Kim {getopt*cbreak.org} 21 | 22 | * *: Sourceforge project approval. Name changed to freegetopt. 23 | License is now officially BSD. 24 | 25 | 2003-09-29 Jon Higdon {jhigdon*nni.com} 26 | 27 | * test.c: GCC 3.x gives compound statement warning. Fixed. 28 | 29 | 2003.01.12 Mark K. Kim {getopt*cbreak.org} 30 | 31 | * *: Getopt 1.0 released! Supports only short options, but 32 | I think it's fully compatible with GNU getopt except for the 33 | value of optind while getopt is still running. The value 34 | of optind is same after getopt finishes running, however. 35 | 36 | -------------------------------------------------------------------------------- /hot/lib/hot/commons/include/hot/commons/TwoEntriesNode.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__COMMONS__TWO_ENTRIES_NODE__ 2 | #define __HOT__COMMONS__TWO_ENTRIES_NODE__ 3 | 4 | #include 5 | 6 | #include 7 | #include 8 | 9 | namespace hot { namespace commons { 10 | 11 | template typename NodeTemplate> inline NodeTemplate* createTwoEntriesNode(BiNode const & binaryNode) { 12 | constexpr uint16_t NUMBER_ENTRIES_IN_TWO_ENTRIES_NODE = 2u; 13 | NodeTemplate* node = 14 | new (NUMBER_ENTRIES_IN_TWO_ENTRIES_NODE) NodeTemplate( 15 | binaryNode.mHeight, 16 | NUMBER_ENTRIES_IN_TWO_ENTRIES_NODE, 17 | SingleMaskPartialKeyMapping { DiscriminativeBit { binaryNode.mDiscriminativeBitIndex } } 18 | ); 19 | 20 | node->mPartialKeys.mEntries[0] = 0; 21 | node->mPartialKeys.mEntries[1] = 1; 22 | ChildPointerType* pointers = node->getPointers(); 23 | pointers[0] = binaryNode.mLeft; 24 | pointers[1] = binaryNode.mRight; 25 | return node; 26 | }; 27 | 28 | } } 29 | 30 | #endif -------------------------------------------------------------------------------- /libcuckoo/tests/Catch/README.md: -------------------------------------------------------------------------------- 1 | ![catch logo](catch-logo-small.png) 2 | 3 | *v1.5.9* 4 | 5 | Build status (on Travis CI) [![Build Status](https://travis-ci.org/philsquared/Catch.png)](https://travis-ci.org/philsquared/Catch) 6 | 7 | The latest, single header, version can be downloaded directly using this link 8 | 9 | ## What's the Catch? 10 | 11 | Catch stands for C++ Automated Test Cases in Headers and is a multi-paradigm automated test framework for C++ and Objective-C (and, maybe, C). It is implemented entirely in a set of header files, but is packaged up as a single header for extra convenience. 12 | 13 | ## How to use it 14 | This documentation comprises these three parts: 15 | 16 | * [Why do we need yet another C++ Test Framework?](docs/why-catch.md) 17 | * [Tutorial](docs/tutorial.md) - getting started 18 | * [Reference section](docs/Readme.md) - all the details 19 | 20 | ## More 21 | * Issues and bugs can be raised on the [Issue tracker on GitHub](https://github.com/philsquared/Catch/issues) 22 | * For discussion or questions please use [the dedicated Google Groups forum](https://groups.google.com/forum/?fromgroups#!forum/catch-forum) 23 | -------------------------------------------------------------------------------- /libcuckoo/libcuckoo/cuckoohash_config.hh: -------------------------------------------------------------------------------- 1 | /** \file */ 2 | 3 | #ifndef _CUCKOOHASH_CONFIG_HH 4 | #define _CUCKOOHASH_CONFIG_HH 5 | 6 | #include 7 | #include 8 | 9 | //! The default maximum number of keys per bucket 10 | constexpr size_t LIBCUCKOO_DEFAULT_SLOT_PER_BUCKET = 4; 11 | 12 | //! The default number of elements in an empty hash table 13 | constexpr size_t LIBCUCKOO_DEFAULT_SIZE = 14 | (1U << 16) * LIBCUCKOO_DEFAULT_SLOT_PER_BUCKET; 15 | 16 | //! The default minimum load factor that the table allows for automatic 17 | //! expansion. It must be a number between 0.0 and 1.0. The table will throw 18 | //! libcuckoo_load_factor_too_low if the load factor falls below this value 19 | //! during an automatic expansion. 20 | constexpr double LIBCUCKOO_DEFAULT_MINIMUM_LOAD_FACTOR = 0.05; 21 | 22 | //! An alias for the value that sets no limit on the maximum hashpower. If this 23 | //! value is set as the maximum hashpower limit, there will be no limit. This 24 | //! is also the default initial value for the maximum hashpower in a table. 25 | constexpr size_t LIBCUCKOO_NO_MAXIMUM_HASHPOWER = 26 | std::numeric_limits::max(); 27 | 28 | //! set LIBCUCKOO_DEBUG to 1 to enable debug output 29 | #define LIBCUCKOO_DEBUG 0 30 | 31 | #endif // _CUCKOOHASH_CONFIG_HH 32 | -------------------------------------------------------------------------------- /rotate-skiplist/intset.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * File: 3 | * intset.c 4 | * Author(s): 5 | * Vincent Gramoli 6 | * Description: 7 | * Skip list integer set operations 8 | * 9 | * Copyright (c) 2009-2010. 10 | * 11 | * intset.c is part of Synchrobench 12 | * 13 | * Synchrobench is free software: you can redistribute it and/or 14 | * modify it under the terms of the GNU General Public License 15 | * as published by the Free Software Foundation, version 2 16 | * of the License. 17 | * 18 | * This program is distributed in the hope that it will be useful, 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | * GNU General Public License for more details. 22 | */ 23 | 24 | #include "intset.h" 25 | #include "skiplist.h" 26 | #include "nohotspot_ops.h" 27 | 28 | #define MAXLEVEL 32 29 | 30 | int sl_contains_old(set_t *set, sl_key_type key, int transactional) 31 | { 32 | return sl_contains(set, key); 33 | } 34 | 35 | int sl_add_old(set_t *set, sl_key_type key, int transactional) 36 | { 37 | return sl_insert(set, key, (void*)&key); 38 | } 39 | 40 | int sl_remove_old(set_t *set, sl_key_type key, int transactional) 41 | { 42 | return sl_delete(set, key); 43 | } 44 | -------------------------------------------------------------------------------- /hydralist/tests/WorkerThread/test.cpp: -------------------------------------------------------------------------------- 1 | #include "Oplog.h" 2 | #include "WorkerThread.h" 3 | #include 4 | #include 5 | 6 | TEST(workerThreadTest, sanityTest) { 7 | WorkerThread wt(0); 8 | int MAX_THREADS = 4; 9 | Oplog log[MAX_THREADS]; 10 | for (int i = 0; i < MAX_THREADS; i++) { 11 | g_perThreadLog.insert(&log[i]); 12 | } 13 | std::vector ops = {OpStruct::insert, OpStruct::insert, OpStruct::remove}; 14 | for(int i = 0; i < MAX_THREADS; i++) { 15 | for (auto op : ops) { 16 | log[i].enq(op, i*100, nullptr); 17 | } 18 | } 19 | 20 | CombinerThread combinerThread; 21 | auto mergedLog = combinerThread.combineLogs(); 22 | 23 | int count = 0; 24 | for(auto i = mergedLog->begin(); i != mergedLog->end(); ++i) { 25 | OpStruct testops = *i; 26 | ASSERT_EQ(ops[count % ops.size()], testops.op); 27 | ASSERT_EQ(count/ops.size()*100, testops.key); 28 | count++; 29 | } 30 | ASSERT_EQ(true, wt.isWorkQueueEmpty()); 31 | combinerThread.broadcastMergedLog(mergedLog, 1); 32 | ASSERT_EQ(false, wt.isWorkQueueEmpty()); 33 | } 34 | 35 | int main(int argc, char **argv) { 36 | testing::InitGoogleTest(&argc, argv); 37 | return RUN_ALL_TESTS(); 38 | } 39 | 40 | -------------------------------------------------------------------------------- /hydralist/src/VersionedLock.h: -------------------------------------------------------------------------------- 1 | #ifndef _VERSIONEDLOCK_H 2 | #define _VERSIONEDLOCK_H 3 | #include 4 | #include 5 | 6 | #define PAUSE asm volatile("pause\n": : :"memory"); 7 | typedef unsigned long version_t; 8 | 9 | class VersionedLock { 10 | private: 11 | std::atomic version; 12 | 13 | public: 14 | VersionedLock() : version(2) {} 15 | 16 | version_t read_lock() { 17 | version_t ver = version.load(std::memory_order_acquire); 18 | if ((ver & 1) != 0) { 19 | return 0; 20 | } 21 | return ver; 22 | } 23 | 24 | version_t write_lock() { 25 | version_t ver = version.load(std::memory_order_acquire); 26 | if((ver & 1) == 0 && version.compare_exchange_weak(ver, ver+1)) { 27 | return ver; 28 | }else { 29 | return 0; 30 | } 31 | } 32 | 33 | bool read_unlock(version_t old_version) { 34 | std::atomic_thread_fence(std::memory_order_acquire); 35 | version_t new_version = version.load(std::memory_order_acquire); 36 | 37 | return new_version == old_version; 38 | } 39 | 40 | void write_unlock() { 41 | version.fetch_add(1, std::memory_order_release); 42 | return; 43 | } 44 | }; 45 | #endif //_VERSIONEDLOCK_H 46 | -------------------------------------------------------------------------------- /hot/lib/hot/rowex/include/hot/rowex/HOTRowexIteratorStackState.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__ROWEX__ITERATE_STACK_STATE__ 2 | #define __HOT__ROWEX__ITERATE_STACK_STATE__ 3 | 4 | #include "hot/rowex/HOTRowexIteratorBufferStates.hpp" 5 | #include "hot/rowex/HOTRowexIteratorEndToken.hpp" 6 | 7 | #include 8 | 9 | namespace hot { namespace rowex { 10 | 11 | template struct HOTRowexIteratorStackState { 12 | StackEntryType *mRootEntry; 13 | StackEntryType *mStackEntry; 14 | int32_t mBufferState; 15 | 16 | HOTRowexIteratorStackState(StackEntryType *rootEntry, int32_t bufferState, StackEntryType *stackEntry) 17 | : mRootEntry(rootEntry), mStackEntry(stackEntry), mBufferState(bufferState) { 18 | } 19 | 20 | HOTRowexIteratorStackState(StackEntryType *rootEntry) : mRootEntry(rootEntry), mStackEntry(rootEntry), 21 | mBufferState(ITERATOR_FILL_BUFFER_STATE_END) { 22 | mStackEntry->init(&HOTRowexIteratorEndToken::END_TOKEN, &HOTRowexIteratorEndToken::END_TOKEN + 1); 23 | } 24 | 25 | HOTRowexIteratorStackState(HOTRowexIteratorStackState const &mOther) = default; 26 | 27 | void end() { 28 | mStackEntry->init(&HOTRowexIteratorEndToken::END_TOKEN, &HOTRowexIteratorEndToken::END_TOKEN + 1); 29 | mBufferState = ITERATOR_FILL_BUFFER_STATE_END; 30 | } 31 | }; 32 | 33 | }} 34 | 35 | #endif -------------------------------------------------------------------------------- /hydralist_string/tests/WorkerThread/test.cpp: -------------------------------------------------------------------------------- 1 | #include "Oplog.h" 2 | #include "WorkerThread.h" 3 | #include 4 | #include 5 | 6 | TEST(workerThreadTest, sanityTest) { 7 | WorkerThread wt(0); 8 | int MAX_THREADS = 4; 9 | Oplog log[MAX_THREADS]; 10 | for (int i = 0; i < MAX_THREADS; i++) { 11 | g_perThreadLog.insert(&log[i]); 12 | } 13 | std::vector ops = {OpStruct::insert, OpStruct::insert, OpStruct::remove}; 14 | for(int i = 0; i < MAX_THREADS; i++) { 15 | for (auto op : ops) { 16 | log[i].enq(op, i*100, nullptr); 17 | } 18 | } 19 | 20 | CombinerThread combinerThread; 21 | auto mergedLog = combinerThread.combineLogs(); 22 | 23 | int count = 0; 24 | for(auto i = mergedLog->begin(); i != mergedLog->end(); ++i) { 25 | OpStruct testops = *i; 26 | ASSERT_EQ(ops[count % ops.size()], testops.op); 27 | ASSERT_EQ(count/ops.size()*100, testops.key); 28 | count++; 29 | } 30 | ASSERT_EQ(true, wt.isWorkQueueEmpty()); 31 | combinerThread.broadcastMergedLog(mergedLog, 1); 32 | ASSERT_EQ(false, wt.isWorkQueueEmpty()); 33 | } 34 | 35 | int main(int argc, char **argv) { 36 | testing::InitGoogleTest(&argc, argv); 37 | return RUN_ALL_TESTS(); 38 | } 39 | 40 | -------------------------------------------------------------------------------- /hydralist_string/src/VersionedLock.h: -------------------------------------------------------------------------------- 1 | #ifndef _VERSIONEDLOCK_H 2 | #define _VERSIONEDLOCK_H 3 | #include 4 | #include 5 | 6 | #define PAUSE asm volatile("pause\n": : :"memory"); 7 | typedef unsigned long version_t; 8 | 9 | class VersionedLock { 10 | private: 11 | std::atomic version; 12 | 13 | public: 14 | VersionedLock() : version(2) {} 15 | 16 | version_t read_lock() { 17 | version_t ver = version.load(std::memory_order_acquire); 18 | if ((ver & 1) != 0) { 19 | return 0; 20 | } 21 | return ver; 22 | } 23 | 24 | version_t write_lock() { 25 | version_t ver = version.load(std::memory_order_acquire); 26 | if((ver & 1) == 0 && version.compare_exchange_weak(ver, ver+1)) { 27 | return ver; 28 | }else { 29 | return 0; 30 | } 31 | } 32 | 33 | bool read_unlock(version_t old_version) { 34 | std::atomic_thread_fence(std::memory_order_acquire); 35 | version_t new_version = version.load(std::memory_order_acquire); 36 | 37 | return new_version == old_version; 38 | } 39 | 40 | void write_unlock() { 41 | version.fetch_add(1, std::memory_order_release); 42 | return; 43 | } 44 | }; 45 | #endif //_VERSIONEDLOCK_H 46 | -------------------------------------------------------------------------------- /rotate-skiplist/Makefile: -------------------------------------------------------------------------------- 1 | #-include Makefile.common 2 | 3 | CXX=g++-5 4 | CXX_FLAGS=-std=c++11 -pthread -O3 -g 5 | 6 | .PHONY: all clean 7 | 8 | all: main 9 | 10 | ptst.o: ptst.h common.h 11 | $(CXX) $(CFLAGS) $(CXX_FLAGS) -std=c++11 -c -o ./ptst.o ptst.cpp 12 | 13 | garbagecoll.o: garbagecoll.h ptst.h common.h 14 | $(CXX) $(CFLAGS) $(CXX_FLAGS) -std=c++11 -c -o ./garbagecoll.o garbagecoll.cpp 15 | 16 | nohotspot_ops.o: skiplist.h background.h nohotspot_ops.h common.h 17 | $(CXX) $(CFLAGS) $(CXX_FLAGS) -std=c++11 -c -o ./nohotspot_ops.o nohotspot_ops.cpp 18 | 19 | skiplist.o: skiplist.h background.h common.h 20 | $(CXX) $(CFLAGS) $(CXX_FLAGS) -std=c++11 -c -o ./skiplist.o skiplist.cpp 21 | 22 | background.o: background.h skiplist.h common.h 23 | $(CXX) $(CFLAGS) $(CXX_FLAGS) -std=c++11 -c -o ./background.o background.cpp 24 | 25 | intset.o: intset.h nohotspot_ops.h skiplist.h 26 | $(CXX) $(CFLAGS) $(CXX_FLAGS) -std=c++11 -c -o ./intset.o intset.cpp 27 | 28 | test.o: intset.h test.c 29 | $(CXX) $(CFLAGS) $(CXX_FLAGS) -std=c++11 -c -o ./test.o test.c 30 | 31 | main: intset.o background.o skiplist.o nohotspot_ops.o test.o ptst.o garbagecoll.o 32 | $(CXX) $(CFLAGS) $(CXX_FLAGS) garbagecoll.o ptst.o skiplist.o nohotspot_ops.o intset.o background.o test.o -o ./main $(LDFLAGS) 33 | 34 | clean: 35 | -rm -rf *.o 36 | -rm -f ./main 37 | -------------------------------------------------------------------------------- /rotate-skiplist/intset.c: -------------------------------------------------------------------------------- 1 | /* 2 | * File: 3 | * intset.c 4 | * Author(s): 5 | * Vincent Gramoli 6 | * Description: 7 | * Skip list integer set operations 8 | * 9 | * Copyright (c) 2009-2010. 10 | * 11 | * intset.c is part of Synchrobench 12 | * 13 | * Synchrobench is free software: you can redistribute it and/or 14 | * modify it under the terms of the GNU General Public License 15 | * as published by the Free Software Foundation, version 2 16 | * of the License. 17 | * 18 | * This program is distributed in the hope that it will be useful, 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | * GNU General Public License for more details. 22 | */ 23 | 24 | #include "intset.h" 25 | #include "skiplist.h" 26 | #include "nohotspot_ops.h" 27 | 28 | #define MAXLEVEL 32 29 | 30 | int sl_contains_old(set_t *set, unsigned long key, int transactional) 31 | { 32 | return sl_contains(set, key); 33 | } 34 | 35 | int sl_add_old(set_t *set, unsigned long key, int transactional) 36 | { 37 | return sl_insert(set, key, (void*) key); 38 | } 39 | 40 | int sl_remove_old(set_t *set, unsigned long key, int transactional) 41 | { 42 | return sl_delete(set, key); 43 | } 44 | -------------------------------------------------------------------------------- /libcuckoo/tests/unit-tests/test_minimum_load_factor.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | 5 | #include "unit_test_util.hh" 6 | #include 7 | #include 8 | 9 | TEST_CASE("minimum load factor initialized to default", 10 | "[minimum load factor]") { 11 | IntIntTable tbl; 12 | REQUIRE(tbl.minimum_load_factor() == LIBCUCKOO_DEFAULT_MINIMUM_LOAD_FACTOR); 13 | } 14 | 15 | class BadHashFunction { 16 | public: 17 | size_t operator()(int) { return 0; } 18 | }; 19 | 20 | TEST_CASE("caps automatic expansion", "[minimum load fator]") { 21 | const size_t slot_per_bucket = 4; 22 | cuckoohash_map, 23 | std::allocator>, slot_per_bucket> 24 | tbl(16); 25 | tbl.minimum_load_factor(0.6); 26 | 27 | for (size_t i = 0; i < 2 * slot_per_bucket; ++i) { 28 | tbl.insert(i, i); 29 | } 30 | 31 | REQUIRE_THROWS_AS(tbl.insert(2 * slot_per_bucket, 0), 32 | libcuckoo_load_factor_too_low); 33 | } 34 | 35 | TEST_CASE("invalid minimum load factor", "[minimum load factor]") { 36 | IntIntTable tbl; 37 | REQUIRE_THROWS_AS(tbl.minimum_load_factor(-0.01), std::invalid_argument); 38 | REQUIRE_THROWS_AS(tbl.minimum_load_factor(1.01), std::invalid_argument); 39 | } 40 | -------------------------------------------------------------------------------- /nohotspot-skiplist/Makefile: -------------------------------------------------------------------------------- 1 | 2 | include Makefile.common 3 | 4 | BINS = . 5 | INCLUDE_DIR=./atomic_ops 6 | BUILDIR=. 7 | 8 | .PHONY: all clean 9 | 10 | all: main 11 | 12 | ptst.o: ptst.h 13 | $(CC) $(CFLAGS) -c -o $(BUILDIR)/ptst.o ptst.cpp -I$(INCLUDE_DIR) 14 | 15 | garbagecoll.o: garbagecoll.h ptst.h 16 | $(CC) $(CFLAGS) -c -o $(BUILDIR)/garbagecoll.o garbagecoll.cpp -I$(INCLUDE_DIR) 17 | 18 | nohotspot_ops.o: skiplist.h background.h nohotspot_ops.h 19 | $(CC) $(CFLAGS) -c -o $(BUILDIR)/nohotspot_ops.o nohotspot_ops.cpp -I$(INCLUDE_DIR) 20 | 21 | skiplist.o: skiplist.h background.h 22 | $(CC) $(CFLAGS) -c -o $(BUILDIR)/skiplist.o skiplist.cpp -I$(INCLUDE_DIR) 23 | 24 | background.o: background.h skiplist.h 25 | $(CC) $(CFLAGS) -c -o $(BUILDIR)/background.o background.cpp -I$(INCLUDE_DIR) 26 | 27 | intset.o: intset.h nohotspot_ops.h skiplist.h 28 | $(CC) $(CFLAGS) -c -o $(BUILDIR)/intset.o intset.cpp -I$(INCLUDE_DIR) 29 | 30 | test.o: intset.h 31 | $(CC) $(CFLAGS) -c -o $(BUILDIR)/test.o test.c -I$(INCLUDE_DIR) 32 | 33 | main: intset.o background.o skiplist.o nohotspot_ops.o test.o ptst.o garbagecoll.o 34 | $(CC) $(CFLAGS) $(BUILDIR)/garbagecoll.o $(BUILDIR)/ptst.o $(BUILDIR)/skiplist.o $(BUILDIR)/nohotspot_ops.o $(BUILDIR)/intset.o $(BUILDIR)/background.o $(BUILDIR)/test.o -o $(BINS)/test $(LDFLAGS) 35 | 36 | clean: 37 | -rm -f $(BINS)/*.o 38 | rm -f ./test 39 | -------------------------------------------------------------------------------- /generate_all_workloads.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | KEY_TYPE=monoint 4 | for WORKLOAD_TYPE in ; do 5 | echo workload${WORKLOAD_TYPE} > workload_config.inp 6 | echo ${KEY_TYPE} >> workload_config.inp 7 | python gen_workload.py workload_config.inp 8 | mv workloads/load_${KEY_TYPE}_workload${WORKLOAD_TYPE} workloads/mono_inc_load${WORKLOAD_TYPE}_zipf_int_100M.dat 9 | mv workloads/txn_${KEY_TYPE}_workload${WORKLOAD_TYPE} workloads/mono_inc_txns${WORKLOAD_TYPE}_zipf_int_100M.dat 10 | done 11 | 12 | KEY_TYPE=randint 13 | for WORKLOAD_TYPE in a c ; do 14 | echo workload${WORKLOAD_TYPE} > workload_config.inp 15 | echo ${KEY_TYPE} >> workload_config.inp 16 | python gen_workload.py workload_config.inp 17 | mv workloads/load_${KEY_TYPE}_workload${WORKLOAD_TYPE} workloads/load${WORKLOAD_TYPE}_zipf_int_100M.dat 18 | mv workloads/txn_${KEY_TYPE}_workload${WORKLOAD_TYPE} workloads/txns${WORKLOAD_TYPE}_zipf_int_100M.dat 19 | done 20 | 21 | KEY_TYPE=email 22 | for WORKLOAD_TYPE in a c; do 23 | echo workload${WORKLOAD_TYPE} > workload_config.inp 24 | echo ${KEY_TYPE} >> workload_config.inp 25 | python gen_workload.py workload_config.inp 26 | mv workloads/load_${KEY_TYPE}_workload${WORKLOAD_TYPE} workloads/${KEY_TYPE}_load${WORKLOAD_TYPE}_zipf_int_100M.dat 27 | mv workloads/txn_${KEY_TYPE}_workload${WORKLOAD_TYPE} workloads/${KEY_TYPE}_txns${WORKLOAD_TYPE}_zipf_int_100M.dat 28 | done 29 | 30 | -------------------------------------------------------------------------------- /hot/lib/idx/content-helpers/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | project(content-helpers) 2 | 3 | include_directories(include) 4 | 5 | set(NAMESPACE idx/contenthelpers/) 6 | set(HDR_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/${NAMESPACE}) 7 | 8 | set(contenthelpers-HEADERS ${contenthelpers-HEADERS} ${HDR_DIRECTORY}/ContentEquals.hpp) 9 | set(contenthelpers-HEADERS ${contenthelpers-HEADERS} ${HDR_DIRECTORY}/IdentityKeyExtractor.hpp) 10 | set(contenthelpers-HEADERS ${contenthelpers-HEADERS} ${HDR_DIRECTORY}/PairKeyExtractor.hpp) 11 | set(contenthelpers-HEADERS ${contenthelpers-HEADERS} ${HDR_DIRECTORY}/PairPointerKeyExtractor.hpp) 12 | set(contenthelpers-HEADERS ${contenthelpers-HEADERS} ${HDR_DIRECTORY}/CStringComparator.hpp) 13 | set(contenthelpers-HEADERS ${contenthelpers-HEADERS} ${HDR_DIRECTORY}/OptionalValue.hpp) 14 | set(contenthelpers-HEADERS ${contenthelpers-HEADERS} ${HDR_DIRECTORY}/KeyComparator.hpp) 15 | set(contenthelpers-HEADERS ${contenthelpers-HEADERS} ${HDR_DIRECTORY}/KeyUtilities.hpp) 16 | set(contenthelpers-HEADERS ${contenthelpers-HEADERS} ${HDR_DIRECTORY}/TidConverters.hpp) 17 | set(contenthelpers-HEADERS ${contenthelpers-HEADERS} ${HDR_DIRECTORY}/ValueToKeyTypeMapper.hpp) 18 | 19 | add_library(content-helpers-lib INTERFACE) 20 | target_sources(content-helpers-lib INTERFACE ${contenthelpers-HEADERS}) 21 | target_include_directories(content-helpers-lib INTERFACE "${PROJECT_SOURCE_DIR}/include") 22 | -------------------------------------------------------------------------------- /masstree/checkpoint.cc: -------------------------------------------------------------------------------- 1 | /* Masstree 2 | * Eddie Kohler, Yandong Mao, Robert Morris 3 | * Copyright (c) 2012-2013 President and Fellows of Harvard College 4 | * Copyright (c) 2012-2013 Massachusetts Institute of Technology 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a 7 | * copy of this software and associated documentation files (the "Software"), 8 | * to deal in the Software without restriction, subject to the conditions 9 | * listed in the Masstree LICENSE file. These conditions include: you must 10 | * preserve this copyright notice, and you cannot mention the copyright 11 | * holders in advertising related to the Software without their permission. 12 | * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This 13 | * notice is a summary of the Masstree LICENSE file; the license in that file 14 | * is legally binding. 15 | */ 16 | #include "checkpoint.hh" 17 | 18 | // add one key/value to a checkpoint. 19 | // called by checkpoint_tree() for each node. 20 | bool ckstate::visit_value(Str key, const row_type* value, threadinfo&) { 21 | if (endkey && key >= endkey) 22 | return false; 23 | if (!row_is_marker(value)) { 24 | msgpack::unparser up(*vals); 25 | up.write(key).write_wide(value->timestamp()); 26 | value->checkpoint_write(up); 27 | ++count; 28 | } 29 | return true; 30 | } 31 | -------------------------------------------------------------------------------- /masstree/doc/patches.mp: -------------------------------------------------------------------------------- 1 | input elements; 2 | 3 | def thediamond_(suffix $) = 4 | $.e -- $.n -- $.w -- $s -- cycle 5 | enddef; 6 | 7 | vardef sizediamond_(suffix $) = 8 | save a_, b_; 9 | (a_,b_) = .5*(urcorner pic_$ - llcorner pic_$); 10 | if (unknown $dy or unknown $dx) and unknown $squatness: $squatness = 1; fi 11 | if unknown $dy: $dy = $squatness * ($dx + a_) - b_; fi 12 | if unknown $dy: 13 | $dy = b_ + circmargin * sqrt($squatness+1) + $squatness * a_; 14 | fi 15 | sizeelement_($); 16 | enddef; 17 | 18 | vardef cleardiamond_(suffix $) = 19 | _n_ := str $; 20 | generic_redeclare(numeric) _n.squatness; 21 | enddef; 22 | 23 | vardef patchit@#(expr s, type) = 24 | _elementit.@#(s, 0, 0, push, false, false); 25 | if type = 0: 26 | pproc_.@# := "thecirc_"; 27 | % sproc_.@# := "sizecirc_"; 28 | elseif type = 2: 29 | _n_ := str @#; 30 | generic_declare(numeric) _n.squatness, _n.dx, _n.dy; 31 | pproc_.@# := "thediamond_"; 32 | sproc_.@# := "sizediamond_"; 33 | expandafter def expandafter clearboxes expandafter = 34 | clearboxes cleardiamond_(@#); 35 | enddef 36 | elseif type = 3: 37 | pproc_.@# := "rboxpath_"; 38 | fi; 39 | enddef; 40 | 41 | vardef drawconnpatch(suffix $,$$)(text conn) text rest = 42 | interim linejoin := mitered; 43 | drawarrow ($.c conn $$.c) cutbefore bpath.$ cutafter bpath.$$ withpen connectionpen rest 44 | enddef; 45 | -------------------------------------------------------------------------------- /rotate-skiplist/garbagecoll.h: -------------------------------------------------------------------------------- 1 | /* 2 | * interface for garbage collection 3 | */ 4 | 5 | #ifndef GARBAGECOLL_H_ 6 | #define GARBAGECOLL_H_ 7 | 8 | #define ADD_TO(_v,_x) \ 9 | do { \ 10 | unsigned long __val = (_v); \ 11 | while (!CAS(&(_v),__val,__val+(_x))) \ 12 | __val = (_v); \ 13 | } while ( 0 ) 14 | 15 | typedef struct gc_st gc_st; 16 | 17 | #include "ptst.h" 18 | 19 | typedef struct gc_chunk gc_chunk; 20 | 21 | /* Initialise GC section of per-thread state */ 22 | gc_st* gc_init(void); 23 | 24 | int gc_add_allocator(int alloc_size); 25 | void gc_remove_allocator(int alloc_id); 26 | 27 | void* gc_alloc(ptst_t *ptst, int alloc_id); 28 | void gc_free(ptst_t *ptst, void *p, int alloc_id); 29 | void gc_free_unsafe(ptst_t *ptst, void *p, int alloc_id); 30 | 31 | /* Hook registry - allows users to hook in their own epoch-delay lists */ 32 | typedef void (*gc_hookfn)(ptst_t*, void*); 33 | int gc_add_hook(gc_hookfn hookfn); 34 | void gc_remove_hook(int hookid); 35 | void gc_hooklist_addptr(ptst_t *ptst, void *ptr, int hookid); 36 | 37 | /* Per-thread entry/exit from critical regions */ 38 | void gc_enter(ptst_t* ptst); 39 | void gc_exit(ptst_t* ptst); 40 | 41 | /* Initialisation of GC */ 42 | void gc_subsystem_init(void); 43 | void gc_subsystem_destroy(void); 44 | 45 | #endif /* GARBAGECOLL_H_ */ 46 | -------------------------------------------------------------------------------- /hydralist/src/Oplog.h: -------------------------------------------------------------------------------- 1 | #ifndef _OPLOG_H_ 2 | #define _OPLOG_H_ 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include "common.h" 9 | #include 10 | #include 11 | #include 12 | 13 | 14 | class Oplog { 15 | private: 16 | std::mutex qLock[2]; 17 | std::vector oplog1; 18 | std::vector oplog2; 19 | std::vector> op_{oplog1, oplog2}; 20 | static thread_local Oplog* perThreadLog; 21 | public: 22 | Oplog(); 23 | void resetQ(int Qnum); 24 | std::vector *getQ(int qnum); 25 | static Oplog* getPerThreadInstance(){return perThreadLog;} 26 | static void setPerThreadInstance(Oplog* ptr){perThreadLog = ptr;} 27 | static Oplog* getOpLog(); 28 | static void enqPerThreadLog(OpStruct::Operation op, Key_t key, uint8_t hash, void* listNodePtr); 29 | void enq(OpStruct::Operation op, Key_t key, uint8_t hash, void* listNodePtr); 30 | void lock(int qnum) {qLock[qnum].lock();} 31 | void unlock(int qnum) {qLock[qnum].unlock();} 32 | }; 33 | extern std::set g_perThreadLog; 34 | extern boost::lockfree::spsc_queue*, boost::lockfree::capacity<10000>> g_workQueue[MAX_NUMA * WORKER_THREAD_PER_NUMA]; 35 | extern std::atomic numSplits; 36 | extern int combinerSplits; 37 | extern std::atomic curQ; 38 | #endif 39 | -------------------------------------------------------------------------------- /masstree/perfstat.hh: -------------------------------------------------------------------------------- 1 | /* Masstree 2 | * Eddie Kohler, Yandong Mao, Robert Morris 3 | * Copyright (c) 2012-2013 President and Fellows of Harvard College 4 | * Copyright (c) 2012-2013 Massachusetts Institute of Technology 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a 7 | * copy of this software and associated documentation files (the "Software"), 8 | * to deal in the Software without restriction, subject to the conditions 9 | * listed in the Masstree LICENSE file. These conditions include: you must 10 | * preserve this copyright notice, and you cannot mention the copyright 11 | * holders in advertising related to the Software without their permission. 12 | * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This 13 | * notice is a summary of the Masstree LICENSE file; the license in that file 14 | * is legally binding. 15 | */ 16 | #ifndef PERF_STAT_HH 17 | #define PERF_STAT_HH 1 18 | #include "compiler.hh" 19 | #include "misc.hh" 20 | #include 21 | #include 22 | 23 | namespace Perf { 24 | struct stat { 25 | /** @brief An initialization call from main function 26 | */ 27 | static void initmain(bool pinthreads); 28 | #if GCSTATS 29 | int gc_nfree; 30 | #endif 31 | void initialize(int cid) { 32 | this->cid = cid; 33 | } 34 | static void print(const stat **s, int n); 35 | int cid; // core index 36 | }; 37 | } 38 | #endif 39 | -------------------------------------------------------------------------------- /libcuckoo/tests/Catch/LICENSE_1_0.txt: -------------------------------------------------------------------------------- 1 | Boost Software License - Version 1.0 - August 17th, 2003 2 | 3 | Permission is hereby granted, free of charge, to any person or organization 4 | obtaining a copy of the software and accompanying documentation covered by 5 | this license (the "Software") to use, reproduce, display, distribute, 6 | execute, and transmit the Software, and to prepare derivative works of the 7 | Software, and to permit third-parties to whom the Software is furnished to 8 | do so, all subject to the following: 9 | 10 | The copyright notices in the Software and this entire statement, including 11 | the above license grant, this restriction and the following disclaimer, 12 | must be included in all copies of the Software, in whole or in part, and 13 | all derivative works of the Software, unless such copies or derivative 14 | works are solely in the form of machine-executable object code generated by 15 | a source language processor. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 20 | SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 21 | FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 22 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23 | DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /nohotspot-skiplist/intset.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * File: 3 | * intset.c 4 | * Author(s): 5 | * Vincent Gramoli 6 | * Description: 7 | * Skip list integer set operations 8 | * 9 | * Copyright (c) 2009-2010. 10 | * 11 | * intset.c is part of Synchrobench 12 | * 13 | * Synchrobench is free software: you can redistribute it and/or 14 | * modify it under the terms of the GNU General Public License 15 | * as published by the Free Software Foundation, version 2 16 | * of the License. 17 | * 18 | * This program is distributed in the hope that it will be useful, 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | * GNU General Public License for more details. 22 | */ 23 | 24 | #include "intset.h" 25 | #include "skiplist.h" 26 | #include "nohotspot_ops.h" 27 | 28 | #define MAXLEVEL 32 29 | 30 | int sl_contains_old(set_t *set, unsigned int key, int transactional) 31 | { 32 | long null = 0L; 33 | return sl_contains(&null, set, (sl_key_t) key); 34 | } 35 | 36 | int sl_add_old(set_t *set, unsigned int key, int transactional) 37 | { 38 | long null = 0L; 39 | return sl_insert(&null, set, (sl_key_t) key, (val_t) ((long)key)); 40 | } 41 | 42 | int sl_remove_old(set_t *set, unsigned int key, int transactional) 43 | { 44 | long null = 0L; 45 | return sl_delete(&null, set, (sl_key_t) key); 46 | } 47 | -------------------------------------------------------------------------------- /hot/lib/hot/commons/include/hot/commons/BiNodeInformation.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__COMMONS__BI_NODE_INFORMATION__ 2 | #define __HOT__COMMONS__BI_NODE_INFORMATION__ 3 | 4 | #include 5 | 6 | #include "hot/commons/EntriesRange.hpp" 7 | 8 | namespace hot { namespace commons { 9 | 10 | /** 11 | * The BiNodeInformation, contains all information which is necessary a BiNode and the entries in its subtree for a linearized binary patricia trie. 12 | * 13 | * It therefore consists of: 14 | * + The positions of the elements contained in its left/right subtree 15 | * + The index of the corresponding discriminative bit 16 | * + A partial key representing the corresponding discriminative bit 17 | */ 18 | struct BiNodeInformation { 19 | uint32_t const mDiscriminativeBitIndex; 20 | uint32_t const mDiscriminativeBitMask; 21 | 22 | EntriesRange const mLeft; 23 | EntriesRange const mRight; 24 | 25 | BiNodeInformation(uint32_t discriminativeBitIndex, uint32_t discriminativeBitMask, EntriesRange const & left, EntriesRange const & right) 26 | : mDiscriminativeBitIndex(discriminativeBitIndex), mDiscriminativeBitMask(discriminativeBitMask), mLeft(left), mRight(right) 27 | { 28 | } 29 | 30 | /** 31 | * @return the total number of entries in the subtree rooted at the described BiNode 32 | */ 33 | uint32_t getTotalNumberEntries() const { 34 | return mLeft.mNumberEntriesInRange + mRight.mNumberEntriesInRange; 35 | } 36 | 37 | }; 38 | 39 | }} 40 | 41 | #endif -------------------------------------------------------------------------------- /pcm/mutex.h: -------------------------------------------------------------------------------- 1 | #ifndef MUTEX_HEADER_ 2 | #define MUTEX_HEADER_ 3 | 4 | #ifdef _MSC_VER 5 | #include 6 | #else 7 | #include 8 | #endif 9 | 10 | #include 11 | 12 | namespace PCM_Util 13 | { 14 | class Mutex { 15 | #ifdef _MSC_VER 16 | HANDLE mutex_; 17 | #else 18 | pthread_mutex_t mutex_; 19 | #endif 20 | 21 | public: 22 | Mutex() 23 | { 24 | #ifdef _MSC_VER 25 | mutex_ = CreateMutex(NULL, FALSE, NULL); 26 | #else 27 | pthread_mutex_init(&mutex_, NULL); 28 | #endif 29 | } 30 | virtual ~Mutex() 31 | { 32 | #ifdef _MSC_VER 33 | CloseHandle(mutex_); 34 | #else 35 | pthread_mutex_destroy(&mutex_); 36 | #endif 37 | } 38 | 39 | void lock() 40 | { 41 | #ifdef _MSC_VER 42 | WaitForSingleObject(mutex_, INFINITE); 43 | #else 44 | pthread_mutex_lock(&mutex_); 45 | #endif 46 | } 47 | void unlock() 48 | { 49 | #ifdef _MSC_VER 50 | ReleaseMutex(mutex_); 51 | #else 52 | pthread_mutex_unlock(&mutex_); 53 | #endif 54 | } 55 | 56 | class Scope { 57 | Mutex & m; 58 | public: 59 | Scope(Mutex & m_) : m(m_) 60 | { 61 | m.lock(); 62 | } 63 | ~Scope() { 64 | m.unlock(); 65 | } 66 | }; 67 | }; 68 | } 69 | 70 | #endif 71 | -------------------------------------------------------------------------------- /hydralist_string/src/Oplog.h: -------------------------------------------------------------------------------- 1 | #ifndef _OPLOG_H_ 2 | #define _OPLOG_H_ 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include "common.h" 9 | #include 10 | #include 11 | #include 12 | 13 | 14 | class Oplog { 15 | private: 16 | std::mutex qLock[2]; 17 | std::vector oplog1; 18 | std::vector oplog2; 19 | std::vector> op_{oplog1, oplog2}; //@Changwoo: Is this a good idea? 20 | static thread_local Oplog* perThreadLog; 21 | public: 22 | Oplog(); 23 | void resetQ(int Qnum); 24 | std::vector *getQ(int qnum); 25 | static Oplog* getPerThreadInstance(){return perThreadLog;} 26 | static void setPerThreadInstance(Oplog* ptr){perThreadLog = ptr;} 27 | static Oplog* getOpLog(); 28 | static void enqPerThreadLog(OpStruct::Operation op, Key_t &key, uint8_t hash, void* listNodePtr); 29 | void enq(OpStruct::Operation op, Key_t &key, uint8_t hash, void* listNodePtr); 30 | void lock(int qnum) {qLock[qnum].lock();} 31 | void unlock(int qnum) {qLock[qnum].unlock();} 32 | }; 33 | extern std::set g_perThreadLog; 34 | extern boost::lockfree::spsc_queue*, boost::lockfree::capacity<10000>> g_workQueue[MAX_NUMA * WORKER_THREAD_PER_NUMA]; 35 | extern std::atomic numSplits; 36 | extern int combinerSplits; 37 | extern std::atomic curQ; 38 | #endif 39 | -------------------------------------------------------------------------------- /hydralist/src/threadData.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by ajit on 6/11/19. 3 | // 4 | 5 | #ifndef HYDRALIST_THREADS_H 6 | #define HYDRALIST_THREADS_H 7 | #include "common.h" 8 | #include 9 | 10 | class ThreadData { 11 | private: 12 | int threadId; 13 | uint64_t localClock; 14 | bool finish; 15 | volatile std::atomic runCnt; 16 | public: 17 | ThreadData(int threadId) { 18 | this->threadId = threadId; 19 | this->finish = false; 20 | this->runCnt = 0; 21 | #ifdef HYDRALIST_ENABLE_STATS 22 | sltime = 0; 23 | dltime = 0; 24 | #endif 25 | } 26 | #ifdef HYDRALIST_ENABLE_STATS 27 | uint64_t sltime; 28 | uint64_t dltime; 29 | #endif 30 | void setThreadId (int threadId) {this->threadId = threadId;} 31 | int getThreadId () {return this->threadId;} 32 | void setfinish() {this->finish = true;} 33 | bool getFinish() {return this->finish;} 34 | void setLocalClock (uint64_t clock) {this->localClock = clock;} 35 | uint64_t getLocalClock() {return this->localClock;} 36 | void incrementRunCntAtomic() { runCnt.fetch_add(1);}; 37 | void incrementRunCnt() { runCnt++;}; 38 | uint64_t getRunCnt() {return this->runCnt;} 39 | void read_lock(uint64_t clock) { 40 | this->setLocalClock(clock); 41 | this->incrementRunCntAtomic(); 42 | } 43 | void read_unlock() { 44 | this->incrementRunCnt(); 45 | } 46 | 47 | 48 | }; 49 | 50 | #endif //HYDRALIST_THREADS_H 51 | -------------------------------------------------------------------------------- /hydralist_string/src/threadData.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by ajit on 6/11/19. 3 | // 4 | 5 | #ifndef HYDRALIST_THREADS_H 6 | #define HYDRALIST_THREADS_H 7 | #include "common.h" 8 | #include 9 | 10 | class ThreadData { 11 | private: 12 | int threadId; 13 | uint64_t localClock; 14 | bool finish; 15 | volatile std::atomic runCnt; 16 | public: 17 | ThreadData(int threadId) { 18 | this->threadId = threadId; 19 | this->finish = false; 20 | this->runCnt = 0; 21 | #ifdef HYDRALIST_ENABLE_STATS 22 | sltime = 0; 23 | dltime = 0; 24 | #endif 25 | } 26 | #ifdef HYDRALIST_ENABLE_STATS 27 | uint64_t sltime; 28 | uint64_t dltime; 29 | #endif 30 | void setThreadId (int threadId) {this->threadId = threadId;} 31 | int getThreadId () {return this->threadId;} 32 | void setfinish() {this->finish = true;} 33 | bool getFinish() {return this->finish;} 34 | void setLocalClock (uint64_t clock) {this->localClock = clock;} 35 | uint64_t getLocalClock() {return this->localClock;} 36 | void incrementRunCntAtomic() { runCnt.fetch_add(1);}; 37 | void incrementRunCnt() { runCnt++;}; 38 | uint64_t getRunCnt() {return this->runCnt;} 39 | void read_lock(uint64_t clock) { 40 | this->setLocalClock(clock); 41 | this->incrementRunCntAtomic(); 42 | } 43 | void read_unlock() { 44 | this->incrementRunCnt(); 45 | } 46 | 47 | 48 | }; 49 | 50 | #endif //HYDRALIST_THREADS_H 51 | -------------------------------------------------------------------------------- /BwTree/bwtree.cpp: -------------------------------------------------------------------------------- 1 | 2 | //===----------------------------------------------------------------------===// 3 | // 4 | // Peloton 5 | // 6 | // bwtree.cpp 7 | // 8 | // Identification: src/index/bwtree.cpp 9 | // 10 | // Copyright (c) 2015-16, Carnegie Mellon University Database Group 11 | // 12 | //===----------------------------------------------------------------------===// 13 | 14 | #include "bwtree.h" 15 | 16 | #ifdef BWTREE_PELOTON 17 | namespace peloton { 18 | namespace index { 19 | #else 20 | namespace wangziqi2013 { 21 | namespace bwtree { 22 | #endif 23 | 24 | bool print_flag = true; 25 | 26 | // This will be initialized when thread is initialized and in a per-thread 27 | // basis, i.e. each thread will get the same initialization image and then 28 | // is free to change them 29 | thread_local int BwTreeBase::gc_id = -1; 30 | 31 | std::atomic BwTreeBase::total_thread_num{0UL}; 32 | 33 | #ifdef BWTREE_COLLECT_STATISTICS 34 | const char *BwTreeBase::GCMetaData::COUNTER_NAME_LIST[] = { 35 | "INSERT", 36 | "UPSERT", 37 | "DELETE", 38 | "READ", 39 | 40 | "LEAF_SPLIT", 41 | "INNER_SPLIT", 42 | "LEAF_MERGE", 43 | "INNER_MERGE", 44 | "LEAF_CONSOLIDATE", 45 | "INNER_CONSOLIDATE", 46 | 47 | "MODIFY_ABORT", 48 | "READ_ABORT", 49 | 50 | "ADD_TO_GC", 51 | "SCAN_GC_CHAIN", 52 | }; 53 | #endif 54 | 55 | } // End index/bwtree namespace 56 | } // End peloton/wangziqi2013 namespace 57 | 58 | -------------------------------------------------------------------------------- /hydralist/src/bitset.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by ajit on 6/10/19. 3 | // 4 | 5 | #ifndef HYDRALIST_BITSET_H 6 | #define HYDRALIST_BITSET_H 7 | 8 | #include 9 | #include 10 | 11 | namespace hydra { 12 | class bitset { 13 | private: 14 | uint64_t bits[2]; 15 | bool testBit(int pos, uint64_t &bits) { 16 | return (bits & (1UL << (pos))) != 0; 17 | } 18 | void setBit(int pos, uint64_t &bits) { 19 | bits |= 1UL << pos; 20 | } 21 | void resetBit(int pos, uint64_t &bits) { 22 | bits &= ~(1UL << pos); 23 | } 24 | public: 25 | void clear() { 26 | bits[0] = 0; 27 | bits[1] = 0; 28 | } 29 | void set(int index) { 30 | //assert(index < 128 && index >= 0); 31 | setBit(index, bits[index/64]); 32 | } 33 | void reset(int index) { 34 | //assert(index < 128 && index >= 0); 35 | resetBit(index, bits[index/64]); 36 | } 37 | bool test(int index) { 38 | //assert(index < 128 && index >= 0); 39 | return testBit(index, bits[index/64]); 40 | } 41 | bool operator[] (int index) { 42 | return test(index); 43 | } 44 | uint64_t to_ulong() { 45 | return bits[0]; 46 | } 47 | uint64_t to_ulong(int index) { 48 | return bits[index]; 49 | } 50 | 51 | }; 52 | }; 53 | 54 | #endif //HYDRALIST_BITSET_H 55 | -------------------------------------------------------------------------------- /hydralist_string/src/bitset.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by ajit on 6/10/19. 3 | // 4 | 5 | #ifndef HYDRALIST_BITSET_H 6 | #define HYDRALIST_BITSET_H 7 | 8 | #include 9 | #include 10 | 11 | namespace hydra { 12 | class bitset { 13 | private: 14 | uint64_t bits[2]; 15 | bool testBit(int pos, uint64_t &bits) { 16 | return (bits & (1UL << (pos))) != 0; 17 | } 18 | void setBit(int pos, uint64_t &bits) { 19 | bits |= 1UL << pos; 20 | } 21 | void resetBit(int pos, uint64_t &bits) { 22 | bits &= ~(1UL << pos); 23 | } 24 | public: 25 | void clear() { 26 | bits[0] = 0; 27 | bits[1] = 0; 28 | } 29 | void set(int index) { 30 | assert(index < 128 && index >= 0); 31 | setBit(index, bits[index/64]); 32 | } 33 | void reset(int index) { 34 | assert(index < 128 && index >= 0); 35 | resetBit(index, bits[index/64]); 36 | } 37 | bool test(int index) { 38 | assert(index < 128 && index >= 0); 39 | return testBit(index, bits[index/64]); 40 | } 41 | bool operator[] (int index) { 42 | return test(index); 43 | } 44 | uint64_t to_ulong() { 45 | return bits[0]; 46 | } 47 | uint64_t to_ulong(int index) { 48 | return bits[index]; 49 | } 50 | 51 | }; 52 | }; 53 | 54 | #endif //HYDRALIST_BITSET_H 55 | -------------------------------------------------------------------------------- /libcuckoo/examples/nested_table.cc: -------------------------------------------------------------------------------- 1 | /* We demonstrate how to nest hash tables within one another, to store 2 | * unstructured data, kind of like JSON. There's still the limitation that it's 3 | * statically typed. */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | 12 | typedef cuckoohash_map InnerTable; 13 | typedef cuckoohash_map> OuterTable; 14 | 15 | int main() { 16 | OuterTable tbl; 17 | 18 | tbl.insert("bob", std::unique_ptr(new InnerTable)); 19 | tbl.update_fn("bob", [](std::unique_ptr &innerTbl) { 20 | innerTbl->insert("nickname", "jimmy"); 21 | innerTbl->insert("pet", "dog"); 22 | innerTbl->insert("food", "bagels"); 23 | }); 24 | 25 | tbl.insert("jack", std::unique_ptr(new InnerTable)); 26 | tbl.update_fn("jack", [](std::unique_ptr &innerTbl) { 27 | innerTbl->insert("friend", "bob"); 28 | innerTbl->insert("activity", "sleeping"); 29 | innerTbl->insert("language", "javascript"); 30 | }); 31 | 32 | { 33 | auto lt = tbl.lock_table(); 34 | for (const auto &item : lt) { 35 | std::cout << "Properties for " << item.first << std::endl; 36 | auto innerLt = item.second->lock_table(); 37 | for (auto innerItem : innerLt) { 38 | std::cout << "\t" << innerItem.first << " = " << innerItem.second 39 | << std::endl; 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /hot/lib/hot/rowex/include/hot/rowex/HOTRowexIteratorStackEntry.hpp: -------------------------------------------------------------------------------- 1 | #ifndef __HOT__ROWEX__SYNCHRONIZED_ITERATOR_STACK_ENTRY__ 2 | #define __HOT__ROWEX__SYNCHRONIZED_ITERATOR_STACK_ENTRY__ 3 | 4 | namespace hot { namespace rowex { 5 | 6 | class HOTRowexIteratorStackEntry { 7 | HOTRowexChildPointer const * mCurrentPointerLocation; 8 | HOTRowexChildPointer mCurrent; 9 | HOTRowexChildPointer const * mEnd; 10 | 11 | public: 12 | //leave uninitialized 13 | HOTRowexIteratorStackEntry() { 14 | } 15 | 16 | HOTRowexIteratorStackEntry * init(HOTRowexChildPointer const * const & currentPointerLocation, HOTRowexChildPointer const * const & end) { 17 | mCurrentPointerLocation = currentPointerLocation; 18 | mCurrent = *currentPointerLocation; 19 | mEnd = end; 20 | return this; 21 | } 22 | 23 | HOTRowexIteratorStackEntry * init(HOTRowexChildPointer const * const & currentPointerLocation, HOTRowexChildPointer const & current, HOTRowexChildPointer const * const & end) { 24 | mCurrentPointerLocation = currentPointerLocation; 25 | mCurrent = current; 26 | mEnd = end; 27 | return this; 28 | } 29 | 30 | HOTRowexChildPointer const & getCurrent() const { 31 | return mCurrent; 32 | } 33 | 34 | HOTRowexChildPointer const * getCurrentPointerLocation() const { 35 | return mCurrentPointerLocation; 36 | } 37 | 38 | bool isLastElement() const { 39 | return (mCurrentPointerLocation + 1) >= mEnd; 40 | } 41 | 42 | void advance() { 43 | ++mCurrentPointerLocation; 44 | mCurrent = *mCurrentPointerLocation; 45 | } 46 | }; 47 | 48 | }} 49 | 50 | #endif -------------------------------------------------------------------------------- /libcuckoo/libcuckoo-gdb-printers/libcuckoo/printers.py: -------------------------------------------------------------------------------- 1 | import gdb 2 | import gdb.printing 3 | 4 | class CuckoohashMapPrinter: 5 | """Print a cuckoohash_map object""" 6 | 7 | def __init__(self, val): 8 | self.val = val 9 | self.slot_per_bucket = int(self.val.type.template_argument(5)) 10 | 11 | def _iterator(self): 12 | buckets_obj = self.val['buckets_'] 13 | hashpower = buckets_obj['hashpower_']['_M_i'] 14 | buckets_ptr = buckets_obj['buckets_'] 15 | if not buckets_ptr: 16 | return 17 | num_buckets = int(2**hashpower) 18 | for i in range(num_buckets): 19 | bucket = (buckets_ptr + i).dereference() 20 | storage_value_type = gdb.lookup_type(str(bucket.type) + '::storage_value_type') 21 | for j in range(self.slot_per_bucket): 22 | if bucket['occupied_']['_M_elems'][j]: 23 | value_blob = bucket['values_']['_M_elems'][j] 24 | storage_value = value_blob.cast(storage_value_type) 25 | yield ('key', storage_value['first']) 26 | yield ('value', storage_value['second']) 27 | 28 | def children(self): 29 | return self._iterator() 30 | 31 | def to_string(self): 32 | return 'cuckoohash_map' 33 | 34 | def display_hint(self): 35 | return 'map' 36 | 37 | def build_pretty_printer(): 38 | pp = gdb.printing.RegexpCollectionPrettyPrinter("libcuckoo") 39 | pp.add_printer('cuckoohash_map', '^cuckoohash_map<.*>$', CuckoohashMapPrinter) 40 | return pp 41 | 42 | def register_libcuckoo_printers(objfile): 43 | gdb.printing.register_pretty_printer(objfile, build_pretty_printer()) 44 | -------------------------------------------------------------------------------- /pcm/PCM-Service_Win/app.rc: -------------------------------------------------------------------------------- 1 | // Microsoft Visual C++ generated resource script. 2 | // 3 | #include "resource.h" 4 | 5 | #define APSTUDIO_READONLY_SYMBOLS 6 | 7 | ///////////////////////////////////////////////////////////////////////////// 8 | #undef APSTUDIO_READONLY_SYMBOLS 9 | 10 | ///////////////////////////////////////////////////////////////////////////// 11 | // English (U.S.) resources 12 | 13 | 14 | ///////////////////////////////////////////////////////////////////////////// 15 | // 16 | // Icon 17 | // 18 | 19 | // Icon placed first or with lowest ID value becomes application icon 20 | 21 | LANGUAGE 9, 1 22 | #pragma code_page(1252) 23 | 1 ICON "app.ico" 24 | 25 | #ifdef APSTUDIO_INVOKED 26 | ///////////////////////////////////////////////////////////////////////////// 27 | // 28 | // TEXTINCLUDE 29 | // 30 | 31 | 1 TEXTINCLUDE 32 | BEGIN 33 | "resource.h\0" 34 | "\0" 35 | END 36 | 37 | 2 TEXTINCLUDE 38 | BEGIN 39 | "#include ""afxres.h""\r\n" 40 | "\0" 41 | END 42 | 43 | 3 TEXTINCLUDE 44 | BEGIN 45 | "\0" 46 | END 47 | 48 | #endif // APSTUDIO_INVOKED 49 | 50 | ///////////////////////////////////////////////////////////////////////////// 51 | 52 | 53 | 54 | #ifndef APSTUDIO_INVOKED 55 | ///////////////////////////////////////////////////////////////////////////// 56 | // 57 | // Generated from the TEXTINCLUDE 3 resource. 58 | // 59 | 60 | 61 | ///////////////////////////////////////////////////////////////////////////// 62 | #endif // not APSTUDIO_INVOKED 63 | 64 | --------------------------------------------------------------------------------