128-bit support
Hi there,
I tried to pass a 128-bit integer as the key to sort the sequence, but it returned the following errors:
[ 95%] Built target tlx Scanning dependencies of target ips2ra_example [ 97%] Building CXX object CMakeFiles/ips2ra_example.dir/src/example.cpp.o In file included from /home/xdong038/GitHub/ips2ra/extern/tlx/tlx/math.hpp:26, from /home/xdong038/GitHub/ips2ra/include/ips2ra/sampling.hpp:44, from /home/xdong038/GitHub/ips2ra/include/ips2ra/sequential.hpp:44, from /home/xdong038/GitHub/ips2ra/include/ips2ra/parallel.hpp:58, from /home/xdong038/GitHub/ips2ra/include/ips2ra/ips2ra.hpp:46, from /home/xdong038/GitHub/ips2ra/include/ips2ra.hpp:38, from /home/xdong038/GitHub/ips2ra/src/example.cpp:48: /home/xdong038/GitHub/ips2ra/extern/tlx/tlx/math/clz.hpp:41:17: warning: inline function ‘unsigned int tlx::clz(Integral) [with Integral = __int128 unsigned]’ used but never defined inline unsigned clz(Integral x); ^~~ In file included from /home/xdong038/GitHub/ips2ra/extern/tlx/tlx/math.hpp:27, from /home/xdong038/GitHub/ips2ra/include/ips2ra/sampling.hpp:44, from /home/xdong038/GitHub/ips2ra/include/ips2ra/sequential.hpp:44, from /home/xdong038/GitHub/ips2ra/include/ips2ra/parallel.hpp:58, from /home/xdong038/GitHub/ips2ra/include/ips2ra/ips2ra.hpp:46, from /home/xdong038/GitHub/ips2ra/include/ips2ra.hpp:38, from /home/xdong038/GitHub/ips2ra/src/example.cpp:48: /home/xdong038/GitHub/ips2ra/extern/tlx/tlx/math/ctz.hpp:41:17: warning: inline function ‘unsigned int tlx::ctz(Integral) [with Integral = __int128 unsigned]’ used but never defined inline unsigned ctz(Integral x); ^~~ [100%] Linking CXX executable ips2ra_example CMakeFiles/ips2ra_example.dir/src/example.cpp.o: In function
ips2ra::detail::Sorter<ips2ra::ExtendedConfig<std::pair<unsigned __int128, unsigned __int128>*, test<unsigned __int128>(parlay::sequence<std::pair<unsigned __int128, unsigned __int128>, parlay::allocator<std::pair<unsigned __int128, unsigned __int128> >, std::is_same<std::pair<unsigned __int128, unsigned __int128>, char>::value> const&)::{lambda(std::pair<unsigned __int128, unsigned __int128> const&)#1}, ips2ra::Config<32l, 128l, 2048l, 1024l, 8l, 2048l, long, 4096ul, 8, 4l, 20, 7>, ips2ra::OpenMPThreadPool> >::parallelGetLevels(std::pair<unsigned __int128, unsigned __int128>*, std::pair<unsigned __int128, unsigned __int128>*, std::vector<unsigned __int128, std::allocator<unsigned __int128> >&, ips2ra::detail::Sorter<ips2ra::ExtendedConfig<std::pair<unsigned __int128, unsigned __int128>*, test<unsigned __int128>(parlay::sequence<std::pair<unsigned __int128, unsigned __int128>, parlay::allocator<std::pair<unsigned __int128, unsigned __int128> >, std::is_same<std::pair<unsigned __int128, unsigned __int128>, char>::value> const&)::{lambda(std::pair<unsigned __int128, unsigned __int128> const&)#1}, ips2ra::Config<32l, 128l, 2048l, 1024l, 8l, 2048l, long, 4096ul, 8, 4l, 20, 7>, ips2ra::OpenMPThreadPool> ><bool, std::allocator<bool> >&, int, int) [clone .constprop.947]': example.cpp:(.text._ZN6ips2ra6detail6SorterINS_14ExtendedConfigIPSt4pairIooEZ4testIoEdRKN6parlay8sequenceIS3_IT_S9_ENS7_9allocatorISA_EEXsrSt7is_sameISA_cE5valueEEEEUlRKS4_E_NS_6ConfigILl32ELl128ELl2048ELl1024ELl8ELl2048ElLm4096ELi8ELl4ELi20ELi7EEENS_16OpenMPThreadPoolEEEE17parallelGetLevelsES5_S5_RSt6vectorIoSaIoEERSQ_IbSaIbEEii.constprop.947[_ZZN6ips2ra14ParallelSorterINS_14ExtendedConfigIPSt4pairIooEZ4testIoEdRKN6parlay8sequenceIS2_IT_S8_ENS6_9allocatorIS9_EEXsrSt7is_sameIS9_cE5valueEEEEUlRKS3_E_NS_6ConfigILl32ELl128ELl2048ELl1024ELl8ELl2048ElLm4096ELi8ELl4ELi20ELi7EEENS_16OpenMPThreadPoolEEEEclES4_S4_ENKUliiE_clEii]+0x307): undefined reference tounsigned int tlx::clz(unsigned __int128)' example.cpp:(.text._ZN6ips2ra6detail6SorterINS_14ExtendedConfigIPSt4pairIooEZ4testIoEdRKN6parlay8sequenceIS3_IT_S9_ENS7_9allocatorISA_EEXsrSt7is_sameISA_cE5valueEEEEUlRKS4_E_NS_6ConfigILl32ELl128ELl2048ELl1024ELl8ELl2048ElLm4096ELi8ELl4ELi20ELi7EEENS_16OpenMPThreadPoolEEEE17parallelGetLevelsES5_S5_RSt6vectorIoSaIoEERSQ_IbSaIbEEii.constprop.947[_ZZN6ips2ra14ParallelSorterINS_14ExtendedConfigIPSt4pairIooEZ4testIoEdRKN6parlay8sequenceIS2_IT_S8_ENS6_9allocatorIS9_EEXsrSt7is_sameIS9_cE5valueEEEEUlRKS3_E_NS_6ConfigILl32ELl128ELl2048ELl1024ELl8ELl2048ElLm4096ELi8ELl4ELi20ELi7EEENS_16OpenMPThreadPoolEEEEclES4_S4_ENKUliiE_clEii]+0x315): undefined reference to unsigned int tlx::ctz<unsigned __int128>(unsigned __int128)' CMakeFiles/ips2ra_example.dir/src/example.cpp.o: In functionips2ra::detail::Sorter<ips2ra::ExtendedConfig<std::pair<unsigned __int128, unsigned __int128>, test(parlay::sequence<std::pair<unsigned __int128, unsigned __int128>, parlay::allocator<std::pair<unsigned __int128, unsigned __int128> >, std::is_same<std::pair<unsigned __int128, unsigned __int128>, char>::value> const&)::{lambda(std::pair<unsigned __int128, unsigned __int128> const&)#1}, ips2ra::Config<32l, 128l, 2048l, 1024l, 8l, 2048l, long, 4096ul, 8, 4l, 20, 7>, ips2ra::OpenMPThreadPool> >::sampleLevels(std::pair<unsigned __int128, unsigned __int128> , std::pair<unsigned __int128, unsigned __int128>*)': example.cpp:(.text.ZN6ips2ra6detail6SorterINS_14ExtendedConfigIPSt4pairIooEZ4testIoEdRKN6parlay8sequenceIS3_IT_S9_ENS7_9allocatorISA_EEXsrSt7is_sameISA_cE5valueEEEEUlRKS4_E_NS_6ConfigILl32ELl128ELl2048ELl1024ELl8ELl2048ElLm4096ELi8ELl4ELi20ELi7EEENS_16OpenMPThreadPoolEEEE12sampleLevelsES5_S5[ZN6ips2ra6detail6SorterINS_14ExtendedConfigIPSt4pairIooEZ4testIoEdRKN6parlay8sequenceIS3_IT_S9_ENS7_9allocatorISA_EEXsrSt7is_sameISA_cE5valueEEEEUlRKS4_E_NS_6ConfigILl32ELl128ELl2048ELl1024ELl8ELl2048ElLm4096ELi8ELl4ELi20ELi7EEENS_16OpenMPThreadPoolEEEE12sampleLevelsES5_S5]+0x14b): undefined reference tounsigned int tlx::clz<unsigned __int128>(unsigned __int128)' example.cpp:(.text._ZN6ips2ra6detail6SorterINS_14ExtendedConfigIPSt4pairIooEZ4testIoEdRKN6parlay8sequenceIS3_IT_S9_ENS7_9allocatorISA_EEXsrSt7is_sameISA_cE5valueEEEEUlRKS4_E_NS_6ConfigILl32ELl128ELl2048ELl1024ELl8ELl2048ElLm4096ELi8ELl4ELi20ELi7EEENS_16OpenMPThreadPoolEEEE12sampleLevelsES5_S5_[_ZN6ips2ra6detail6SorterINS_14ExtendedConfigIPSt4pairIooEZ4testIoEdRKN6parlay8sequenceIS3_IT_S9_ENS7_9allocatorISA_EEXsrSt7is_sameISA_cE5valueEEEEUlRKS4_E_NS_6ConfigILl32ELl128ELl2048ELl1024ELl8ELl2048ElLm4096ELi8ELl4ELi20ELi7EEENS_16OpenMPThreadPoolEEEE12sampleLevelsES5_S5_]+0x159): undefined reference tounsigned int tlx::ctz(unsigned __int128)' CMakeFiles/ips2ra_example.dir/src/example.cpp.o: In function ips2ra::detail::Sorter<ips2ra::ExtendedConfig<std::pair<unsigned __int128, unsigned __int128>*, test<unsigned __int128>(parlay::sequence<std::pair<unsigned __int128, unsigned __int128>, parlay::allocator<std::pair<unsigned __int128, unsigned __int128> >, std::is_same<std::pair<unsigned __int128, unsigned __int128>, char>::value> const&)::{lambda(std::pair<unsigned __int128, unsigned __int128> const&)#1}, ips2ra::Config<32l, 128l, 2048l, 1024l, 8l, 2048l, long, 4096ul, 8, 4l, 20, 7>, ips2ra::OpenMPThreadPool> >::sequentialGetLevels(std::pair<unsigned __int128, unsigned __int128>*, std::pair<unsigned __int128, unsigned __int128>*)': example.cpp:(.text._ZN6ips2ra6detail6SorterINS_14ExtendedConfigIPSt4pairIooEZ4testIoEdRKN6parlay8sequenceIS3_IT_S9_ENS7_9allocatorISA_EEXsrSt7is_sameISA_cE5valueEEEEUlRKS4_E_NS_6ConfigILl32ELl128ELl2048ELl1024ELl8ELl2048ElLm4096ELi8ELl4ELi20ELi7EEENS_16OpenMPThreadPoolEEEE19sequentialGetLevelsES5_S5_[_ZN6ips2ra6detail6SorterINS_14ExtendedConfigIPSt4pairIooEZ4testIoEdRKN6parlay8sequenceIS3_IT_S9_ENS7_9allocatorISA_EEXsrSt7is_sameISA_cE5valueEEEEUlRKS4_E_NS_6ConfigILl32ELl128ELl2048ELl1024ELl8ELl2048ElLm4096ELi8ELl4ELi20ELi7EEENS_16OpenMPThreadPoolEEEE19sequentialGetLevelsES5_S5_]+0x13d): undefined reference tounsigned int tlx::clz(unsigned __int128)' example.cpp:(.text.ZN6ips2ra6detail6SorterINS_14ExtendedConfigIPSt4pairIooEZ4testIoEdRKN6parlay8sequenceIS3_IT_S9_ENS7_9allocatorISA_EEXsrSt7is_sameISA_cE5valueEEEEUlRKS4_E_NS_6ConfigILl32ELl128ELl2048ELl1024ELl8ELl2048ElLm4096ELi8ELl4ELi20ELi7EEENS_16OpenMPThreadPoolEEEE19sequentialGetLevelsES5_S5[ZN6ips2ra6detail6SorterINS_14ExtendedConfigIPSt4pairIooEZ4testIoEdRKN6parlay8sequenceIS3_IT_S9_ENS7_9allocatorISA_EEXsrSt7is_sameISA_cE5valueEEEEUlRKS4_E_NS_6ConfigILl32ELl128ELl2048ELl1024ELl8ELl2048ElLm4096ELi8ELl4ELi20ELi7EEENS_16OpenMPThreadPoolEEEE19sequentialGetLevelsES5_S5]+0x14b): undefined reference to `unsigned int tlx::ctz (unsigned __int128)' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/ips2ra_example.dir/build.make:107: ips2ra_example] Error 1 make[1]: *** [CMakeFiles/Makefile2:133: CMakeFiles/ips2ra_example.dir/all] Error 2 make: *** [Makefile:149: all] Error 2
Do you consider adding 128-bit support to your library?