stringzillas-cuda 4.2.1__tar.gz → 4.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {stringzillas_cuda-4.2.1/stringzillas_cuda.egg-info → stringzillas_cuda-4.2.2}/PKG-INFO +2 -2
- stringzillas_cuda-4.2.2/VERSION +1 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/c/stringzilla.c +2 -1
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/compare.h +4 -4
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/find.h +4 -4
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/hash.h +12 -12
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/intersect.h +2 -2
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/memory.h +69 -4
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/sort.h +2 -2
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/stringzilla.h +5 -4
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/types.h +1 -1
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/setup.py +1 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2/stringzillas_cuda.egg-info}/PKG-INFO +2 -2
- stringzillas_cuda-4.2.2/stringzillas_cuda.egg-info/requires.txt +1 -0
- stringzillas_cuda-4.2.1/VERSION +0 -1
- stringzillas_cuda-4.2.1/stringzillas_cuda.egg-info/requires.txt +0 -1
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/LICENSE +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/MANIFEST.in +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/README.md +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/SZ_TARGET.env +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/build_backend.py +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/c/stringzillas.cpp +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/c/stringzillas.cu +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/c/stringzillas.cuh +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/cli/__init__.py +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/cli/split.py +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/cli/wc.py +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/fork_union/include/fork_union.h +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/fork_union/include/fork_union.hpp +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/module.modulemap +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/small_string.h +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/stringzilla.hpp +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/types.hpp +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/fingerprints.cuh +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/fingerprints.hpp +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/similarities.cuh +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/similarities.hpp +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/stringzillas.h +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/types.cuh +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/types.hpp +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/pyproject.toml +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/python/stringzilla.c +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/python/stringzillas.c +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/scripts/test_stringzilla.py +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/scripts/test_stringzillas.py +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/setup.cfg +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/stringzillas_cuda.egg-info/SOURCES.txt +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/stringzillas_cuda.egg-info/dependency_links.txt +0 -0
- {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/stringzillas_cuda.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: stringzillas-cuda
|
|
3
|
-
Version: 4.2.
|
|
3
|
+
Version: 4.2.2
|
|
4
4
|
Summary: Search, hash, sort, fingerprint, and fuzzy-match strings faster via SWAR, SIMD, and CUDA on Nvidia GPUs
|
|
5
5
|
Home-page: https://github.com/ashvardanian/StringZilla
|
|
6
6
|
Author: Ash Vardanian
|
|
@@ -30,7 +30,7 @@ Classifier: Topic :: Text Processing :: Indexing
|
|
|
30
30
|
Requires-Python: >=3.8
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
License-File: LICENSE
|
|
33
|
-
Requires-Dist: stringzilla==4.2.
|
|
33
|
+
Requires-Dist: stringzilla==4.2.2
|
|
34
34
|
Dynamic: author
|
|
35
35
|
Dynamic: author-email
|
|
36
36
|
Dynamic: classifier
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.2.2
|
|
@@ -244,7 +244,8 @@ static void sz_dispatch_table_update_implementation_(sz_capability_t caps) {
|
|
|
244
244
|
impl->copy = sz_copy_sve;
|
|
245
245
|
impl->move = sz_move_sve;
|
|
246
246
|
impl->fill = sz_fill_sve;
|
|
247
|
-
|
|
247
|
+
impl->lookup = sz_lookup_sve;
|
|
248
|
+
|
|
248
249
|
impl->find = sz_find_sve;
|
|
249
250
|
// TODO: impl->rfind = sz_rfind_sve;
|
|
250
251
|
impl->find_byte = sz_find_byte_sve;
|
|
@@ -432,10 +432,10 @@ SZ_PUBLIC sz_bool_t sz_equal_skylake(sz_cptr_t a, sz_cptr_t b, sz_size_t length)
|
|
|
432
432
|
#pragma region NEON Implementation
|
|
433
433
|
#if SZ_USE_NEON
|
|
434
434
|
#if defined(__clang__)
|
|
435
|
-
#pragma clang attribute push(__attribute__((target("
|
|
435
|
+
#pragma clang attribute push(__attribute__((target("+simd"))), apply_to = function)
|
|
436
436
|
#elif defined(__GNUC__)
|
|
437
437
|
#pragma GCC push_options
|
|
438
|
-
#pragma GCC target("
|
|
438
|
+
#pragma GCC target("+simd")
|
|
439
439
|
#endif
|
|
440
440
|
|
|
441
441
|
SZ_PUBLIC sz_ordering_t sz_order_neon(sz_cptr_t a, sz_size_t a_length, sz_cptr_t b, sz_size_t b_length) {
|
|
@@ -479,10 +479,10 @@ SZ_PUBLIC sz_bool_t sz_equal_neon(sz_cptr_t a, sz_cptr_t b, sz_size_t length) {
|
|
|
479
479
|
#pragma region SVE Implementation
|
|
480
480
|
#if SZ_USE_SVE
|
|
481
481
|
#if defined(__clang__)
|
|
482
|
-
#pragma clang attribute push(__attribute__((target("
|
|
482
|
+
#pragma clang attribute push(__attribute__((target("+sve"))), apply_to = function)
|
|
483
483
|
#elif defined(__GNUC__)
|
|
484
484
|
#pragma GCC push_options
|
|
485
|
-
#pragma GCC target("
|
|
485
|
+
#pragma GCC target("+sve")
|
|
486
486
|
#endif
|
|
487
487
|
|
|
488
488
|
SZ_PUBLIC sz_bool_t sz_equal_sve(sz_cptr_t a, sz_cptr_t b, sz_size_t length) {
|
|
@@ -1578,10 +1578,10 @@ SZ_PUBLIC sz_cptr_t sz_rfind_byteset_ice(sz_cptr_t text, sz_size_t length, sz_by
|
|
|
1578
1578
|
#pragma region NEON Implementation
|
|
1579
1579
|
#if SZ_USE_NEON
|
|
1580
1580
|
#if defined(__clang__)
|
|
1581
|
-
#pragma clang attribute push(__attribute__((target("
|
|
1581
|
+
#pragma clang attribute push(__attribute__((target("+simd"))), apply_to = function)
|
|
1582
1582
|
#elif defined(__GNUC__)
|
|
1583
1583
|
#pragma GCC push_options
|
|
1584
|
-
#pragma GCC target("
|
|
1584
|
+
#pragma GCC target("+simd")
|
|
1585
1585
|
#endif
|
|
1586
1586
|
|
|
1587
1587
|
SZ_INTERNAL sz_u64_t sz_vreinterpretq_u8_u4_(uint8x16_t vec) {
|
|
@@ -1813,10 +1813,10 @@ SZ_PUBLIC sz_cptr_t sz_rfind_byteset_neon(sz_cptr_t h, sz_size_t h_length, sz_by
|
|
|
1813
1813
|
#pragma region SVE Implementation
|
|
1814
1814
|
#if SZ_USE_SVE
|
|
1815
1815
|
#if defined(__clang__)
|
|
1816
|
-
#pragma clang attribute push(__attribute__((target("
|
|
1816
|
+
#pragma clang attribute push(__attribute__((target("+sve"))), apply_to = function)
|
|
1817
1817
|
#elif defined(__GNUC__)
|
|
1818
1818
|
#pragma GCC push_options
|
|
1819
|
-
#pragma GCC target("
|
|
1819
|
+
#pragma GCC target("+sve")
|
|
1820
1820
|
#endif
|
|
1821
1821
|
|
|
1822
1822
|
SZ_PUBLIC sz_cptr_t sz_find_byte_sve(sz_cptr_t h, sz_size_t h_length, sz_cptr_t n) {
|
|
@@ -3132,10 +3132,10 @@ SZ_PUBLIC void sz_sha256_state_digest_ice(sz_sha256_state_t const *state_ptr, sz
|
|
|
3132
3132
|
#pragma region NEON Implementation
|
|
3133
3133
|
#if SZ_USE_NEON
|
|
3134
3134
|
#if defined(__clang__)
|
|
3135
|
-
#pragma clang attribute push(__attribute__((target("
|
|
3135
|
+
#pragma clang attribute push(__attribute__((target("+simd"))), apply_to = function)
|
|
3136
3136
|
#elif defined(__GNUC__)
|
|
3137
3137
|
#pragma GCC push_options
|
|
3138
|
-
#pragma GCC target("
|
|
3138
|
+
#pragma GCC target("+simd")
|
|
3139
3139
|
#endif
|
|
3140
3140
|
|
|
3141
3141
|
SZ_PUBLIC sz_u64_t sz_bytesum_neon(sz_cptr_t text, sz_size_t length) {
|
|
@@ -3167,10 +3167,10 @@ SZ_PUBLIC sz_u64_t sz_bytesum_neon(sz_cptr_t text, sz_size_t length) {
|
|
|
3167
3167
|
#pragma region NEON AES Implementation
|
|
3168
3168
|
#if SZ_USE_NEON_AES
|
|
3169
3169
|
#if defined(__clang__)
|
|
3170
|
-
#pragma clang attribute push(__attribute__((target("
|
|
3170
|
+
#pragma clang attribute push(__attribute__((target("+simd+crypto+aes"))), apply_to = function)
|
|
3171
3171
|
#elif defined(__GNUC__)
|
|
3172
3172
|
#pragma GCC push_options
|
|
3173
|
-
#pragma GCC target("
|
|
3173
|
+
#pragma GCC target("+simd+crypto+aes")
|
|
3174
3174
|
#endif
|
|
3175
3175
|
|
|
3176
3176
|
/**
|
|
@@ -3614,10 +3614,10 @@ SZ_PUBLIC void sz_fill_random_neon(sz_ptr_t text, sz_size_t length, sz_u64_t non
|
|
|
3614
3614
|
#pragma region NEON SHA Implementation
|
|
3615
3615
|
#if SZ_USE_NEON_SHA
|
|
3616
3616
|
#if defined(__clang__)
|
|
3617
|
-
#pragma clang attribute push(__attribute__((target("
|
|
3617
|
+
#pragma clang attribute push(__attribute__((target("+simd+crypto+sha2"))), apply_to = function)
|
|
3618
3618
|
#elif defined(__GNUC__)
|
|
3619
3619
|
#pragma GCC push_options
|
|
3620
|
-
#pragma GCC target("
|
|
3620
|
+
#pragma GCC target("+simd+crypto+sha2")
|
|
3621
3621
|
#endif
|
|
3622
3622
|
|
|
3623
3623
|
/**
|
|
@@ -3917,10 +3917,10 @@ SZ_PUBLIC void sz_sha256_state_digest_neon(sz_sha256_state_t const *state_ptr, s
|
|
|
3917
3917
|
#pragma region SVE Implementation
|
|
3918
3918
|
#if SZ_USE_SVE
|
|
3919
3919
|
#if defined(__clang__)
|
|
3920
|
-
#pragma clang attribute push(__attribute__((target("
|
|
3920
|
+
#pragma clang attribute push(__attribute__((target("+sve"))), apply_to = function)
|
|
3921
3921
|
#elif defined(__GNUC__)
|
|
3922
3922
|
#pragma GCC push_options
|
|
3923
|
-
#pragma GCC target("
|
|
3923
|
+
#pragma GCC target("+sve")
|
|
3924
3924
|
#endif
|
|
3925
3925
|
|
|
3926
3926
|
SZ_PUBLIC sz_u64_t sz_bytesum_sve(sz_cptr_t text, sz_size_t length) {
|
|
@@ -3955,10 +3955,10 @@ SZ_PUBLIC sz_u64_t sz_bytesum_sve(sz_cptr_t text, sz_size_t length) {
|
|
|
3955
3955
|
#pragma region SVE2 Implementation
|
|
3956
3956
|
#if SZ_USE_SVE2
|
|
3957
3957
|
#if defined(__clang__)
|
|
3958
|
-
#pragma clang attribute push(__attribute__((target("
|
|
3958
|
+
#pragma clang attribute push(__attribute__((target("+sve+sve2"))), apply_to = function)
|
|
3959
3959
|
#elif defined(__GNUC__)
|
|
3960
3960
|
#pragma GCC push_options
|
|
3961
|
-
#pragma GCC target("
|
|
3961
|
+
#pragma GCC target("+sve+sve2")
|
|
3962
3962
|
#endif
|
|
3963
3963
|
|
|
3964
3964
|
SZ_PUBLIC sz_u64_t sz_bytesum_sve2(sz_cptr_t text, sz_size_t length) {
|
|
@@ -3997,10 +3997,10 @@ SZ_PUBLIC sz_u64_t sz_bytesum_sve2(sz_cptr_t text, sz_size_t length) {
|
|
|
3997
3997
|
#pragma region SVE2 AES Implementation
|
|
3998
3998
|
#if SZ_USE_SVE2_AES
|
|
3999
3999
|
#if defined(__clang__)
|
|
4000
|
-
#pragma clang attribute push(__attribute__((target("
|
|
4000
|
+
#pragma clang attribute push(__attribute__((target("+sve+sve2+sve2-aes"))), apply_to = function)
|
|
4001
4001
|
#elif defined(__GNUC__)
|
|
4002
4002
|
#pragma GCC push_options
|
|
4003
|
-
#pragma GCC target("
|
|
4003
|
+
#pragma GCC target("+sve+sve2+sve2-aes")
|
|
4004
4004
|
#endif
|
|
4005
4005
|
|
|
4006
4006
|
/**
|
|
@@ -736,10 +736,10 @@ SZ_PUBLIC sz_status_t sz_sequence_intersect_ice(
|
|
|
736
736
|
#pragma region SVE Implementation
|
|
737
737
|
#if SZ_USE_SVE
|
|
738
738
|
#if defined(__clang__)
|
|
739
|
-
#pragma clang attribute push(__attribute__((target("
|
|
739
|
+
#pragma clang attribute push(__attribute__((target("+sve"))), apply_to = function)
|
|
740
740
|
#elif defined(__GNUC__)
|
|
741
741
|
#pragma GCC push_options
|
|
742
|
-
#pragma GCC target("
|
|
742
|
+
#pragma GCC target("+sve")
|
|
743
743
|
#endif
|
|
744
744
|
|
|
745
745
|
SZ_PUBLIC sz_status_t sz_sequence_intersect_sve(sz_sequence_t const *first_sequence,
|
|
@@ -1120,10 +1120,10 @@ SZ_PUBLIC void sz_lookup_ice(sz_ptr_t target, sz_size_t length, sz_cptr_t source
|
|
|
1120
1120
|
#pragma region NEON Implementation
|
|
1121
1121
|
#if SZ_USE_NEON
|
|
1122
1122
|
#if defined(__clang__)
|
|
1123
|
-
#pragma clang attribute push(__attribute__((target("
|
|
1123
|
+
#pragma clang attribute push(__attribute__((target("+simd"))), apply_to = function)
|
|
1124
1124
|
#elif defined(__GNUC__)
|
|
1125
1125
|
#pragma GCC push_options
|
|
1126
|
-
#pragma GCC target("
|
|
1126
|
+
#pragma GCC target("+simd")
|
|
1127
1127
|
#endif
|
|
1128
1128
|
|
|
1129
1129
|
SZ_PUBLIC void sz_copy_neon(sz_ptr_t target, sz_cptr_t source, sz_size_t length) {
|
|
@@ -1248,10 +1248,10 @@ SZ_PUBLIC void sz_lookup_neon(sz_ptr_t target, sz_size_t length, sz_cptr_t sourc
|
|
|
1248
1248
|
#pragma region SVE Implementation
|
|
1249
1249
|
#if SZ_USE_SVE
|
|
1250
1250
|
#if defined(__clang__)
|
|
1251
|
-
#pragma clang attribute push(__attribute__((target("
|
|
1251
|
+
#pragma clang attribute push(__attribute__((target("+sve"))), apply_to = function)
|
|
1252
1252
|
#elif defined(__GNUC__)
|
|
1253
1253
|
#pragma GCC push_options
|
|
1254
|
-
#pragma GCC target("
|
|
1254
|
+
#pragma GCC target("+sve")
|
|
1255
1255
|
#endif
|
|
1256
1256
|
|
|
1257
1257
|
SZ_PUBLIC void sz_fill_sve(sz_ptr_t target, sz_size_t length, sz_u8_t value) {
|
|
@@ -1384,6 +1384,71 @@ SZ_PUBLIC void sz_move_sve(sz_ptr_t target, sz_cptr_t source, sz_size_t length)
|
|
|
1384
1384
|
}
|
|
1385
1385
|
}
|
|
1386
1386
|
|
|
1387
|
+
SZ_PUBLIC void sz_lookup_sve(sz_ptr_t target, sz_size_t length, sz_cptr_t source, sz_cptr_t lut) {
|
|
1388
|
+
|
|
1389
|
+
if (length <= 128) {
|
|
1390
|
+
sz_lookup_serial(target, length, source, lut);
|
|
1391
|
+
return;
|
|
1392
|
+
}
|
|
1393
|
+
|
|
1394
|
+
// SVE vector length in bytes
|
|
1395
|
+
sz_size_t vl = svcntb();
|
|
1396
|
+
|
|
1397
|
+
// Load the 256-byte lookup table into 4 SVE vectors
|
|
1398
|
+
svuint8_t lut_0_to_63_vec = svld1_u8(svptrue_b8(), (sz_u8_t const *)(lut + 0));
|
|
1399
|
+
svuint8_t lut_64_to_127_vec = svld1_u8(svptrue_b8(), (sz_u8_t const *)(lut + 64));
|
|
1400
|
+
svuint8_t lut_128_to_191_vec = svld1_u8(svptrue_b8(), (sz_u8_t const *)(lut + 128));
|
|
1401
|
+
svuint8_t lut_192_to_255_vec = svld1_u8(svptrue_b8(), (sz_u8_t const *)(lut + 192));
|
|
1402
|
+
|
|
1403
|
+
svuint8_t mask_0x3f = svdup_u8(0x3f);
|
|
1404
|
+
|
|
1405
|
+
sz_size_t i = 0;
|
|
1406
|
+
|
|
1407
|
+
// Main loop: process full vectors
|
|
1408
|
+
while (i + vl <= length) {
|
|
1409
|
+
svuint8_t source_vec = svld1_u8(svptrue_b8(), (sz_u8_t const *)(source + i));
|
|
1410
|
+
|
|
1411
|
+
// Create predicates based on top 2 bits (which 64-byte range)
|
|
1412
|
+
svbool_t pred_0_63 = svcmplt_n_u8(svptrue_b8(), source_vec, 64);
|
|
1413
|
+
svbool_t pred_64_127 = svcmpge_n_u8(svcmplt_n_u8(svptrue_b8(), source_vec, 128), source_vec, 64);
|
|
1414
|
+
svbool_t pred_128_191 = svcmpge_n_u8(svcmplt_n_u8(svptrue_b8(), source_vec, 192), source_vec, 128);
|
|
1415
|
+
svbool_t pred_192_255 = svcmpge_n_u8(svptrue_b8(), source_vec, 192);
|
|
1416
|
+
|
|
1417
|
+
// Mask indices to bottom 6 bits for indexing within each 64-byte table
|
|
1418
|
+
svuint8_t idx = svand_u8_x(svptrue_b8(), source_vec, mask_0x3f);
|
|
1419
|
+
|
|
1420
|
+
// Perform lookups and blend results based on predicates
|
|
1421
|
+
svuint8_t result = svsel_u8(pred_0_63, svtbl_u8(lut_0_to_63_vec, idx), svdup_u8(0));
|
|
1422
|
+
result = svsel_u8(pred_64_127, svtbl_u8(lut_64_to_127_vec, idx), result);
|
|
1423
|
+
result = svsel_u8(pred_128_191, svtbl_u8(lut_128_to_191_vec, idx), result);
|
|
1424
|
+
result = svsel_u8(pred_192_255, svtbl_u8(lut_192_to_255_vec, idx), result);
|
|
1425
|
+
|
|
1426
|
+
svst1_u8(svptrue_b8(), (sz_u8_t *)target + i, result);
|
|
1427
|
+
i += vl;
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
// Handle tail: process remaining elements with predicated operations
|
|
1431
|
+
if (i < length) {
|
|
1432
|
+
svbool_t pred = svwhilelt_b8_u64(i, length);
|
|
1433
|
+
svuint8_t source_vec = svld1_u8(pred, (sz_u8_t const *)(source + i));
|
|
1434
|
+
|
|
1435
|
+
// Create predicates for each range (comparison already uses pred as governing predicate)
|
|
1436
|
+
svbool_t pred_0_63 = svcmplt_n_u8(pred, source_vec, 64);
|
|
1437
|
+
svbool_t pred_64_127 = svcmpge_n_u8(svcmplt_n_u8(pred, source_vec, 128), source_vec, 64);
|
|
1438
|
+
svbool_t pred_128_191 = svcmpge_n_u8(svcmplt_n_u8(pred, source_vec, 192), source_vec, 128);
|
|
1439
|
+
svbool_t pred_192_255 = svcmpge_n_u8(pred, source_vec, 192);
|
|
1440
|
+
|
|
1441
|
+
// Mask indices to bottom 6 bits
|
|
1442
|
+
svuint8_t idx = svand_u8_x(pred, source_vec, mask_0x3f);
|
|
1443
|
+
|
|
1444
|
+
svuint8_t result = svsel_u8(pred_0_63, svtbl_u8(lut_0_to_63_vec, idx), svdup_u8(0));
|
|
1445
|
+
result = svsel_u8(pred_64_127, svtbl_u8(lut_64_to_127_vec, idx), result);
|
|
1446
|
+
result = svsel_u8(pred_128_191, svtbl_u8(lut_128_to_191_vec, idx), result);
|
|
1447
|
+
result = svsel_u8(pred_192_255, svtbl_u8(lut_192_to_255_vec, idx), result);
|
|
1448
|
+
|
|
1449
|
+
svst1_u8(pred, (sz_u8_t *)target + i, result);
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1387
1452
|
#if defined(__clang__)
|
|
1388
1453
|
#pragma clang attribute pop
|
|
1389
1454
|
#elif defined(__GNUC__)
|
|
@@ -931,10 +931,10 @@ SZ_PUBLIC sz_status_t sz_sequence_argsort_skylake(sz_sequence_t const *sequence,
|
|
|
931
931
|
#pragma region SVE Implementation
|
|
932
932
|
#if SZ_USE_SVE
|
|
933
933
|
#if defined(__clang__)
|
|
934
|
-
#pragma clang attribute push(__attribute__((target("
|
|
934
|
+
#pragma clang attribute push(__attribute__((target("+sve"))), apply_to = function)
|
|
935
935
|
#elif defined(__GNUC__)
|
|
936
936
|
#pragma GCC push_options
|
|
937
|
-
#pragma GCC target("
|
|
937
|
+
#pragma GCC target("+sve")
|
|
938
938
|
#endif
|
|
939
939
|
|
|
940
940
|
/**
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
|
|
68
68
|
#define STRINGZILLA_H_VERSION_MAJOR 4
|
|
69
69
|
#define STRINGZILLA_H_VERSION_MINOR 2
|
|
70
|
-
#define STRINGZILLA_H_VERSION_PATCH
|
|
70
|
+
#define STRINGZILLA_H_VERSION_PATCH 2
|
|
71
71
|
|
|
72
72
|
#include "types.h" // `sz_size_t`, `sz_bool_t`, `sz_ordering_t`
|
|
73
73
|
#include "compare.h" // `sz_equal`, `sz_order`
|
|
@@ -105,7 +105,8 @@
|
|
|
105
105
|
|
|
106
106
|
/* On Windows ARM, we use IsProcessorFeaturePresent API for capability detection */
|
|
107
107
|
#if defined(SZ_IS_WINDOWS_) && SZ_IS_64BIT_ARM_
|
|
108
|
-
#
|
|
108
|
+
#define NOMINMAX
|
|
109
|
+
#include <windows.h>
|
|
109
110
|
#endif
|
|
110
111
|
|
|
111
112
|
#ifdef __cplusplus
|
|
@@ -261,10 +262,10 @@ SZ_PUBLIC sz_capability_t sz_capabilities_comptime_implementation_(void) {
|
|
|
261
262
|
* function targeting newer ones.
|
|
262
263
|
*/
|
|
263
264
|
#if defined(__clang__)
|
|
264
|
-
#pragma clang attribute push(__attribute__((target("
|
|
265
|
+
#pragma clang attribute push(__attribute__((target("+sve"))), apply_to = function)
|
|
265
266
|
#elif defined(__GNUC__)
|
|
266
267
|
#pragma GCC push_options
|
|
267
|
-
#pragma GCC target("
|
|
268
|
+
#pragma GCC target("+sve")
|
|
268
269
|
#endif
|
|
269
270
|
|
|
270
271
|
#if SZ_HAS_POSIX_EXTENSIONS_
|
|
@@ -267,7 +267,7 @@
|
|
|
267
267
|
#if !defined(SZ_USE_NEON)
|
|
268
268
|
#if SZ_IS_64BIT_ARM_ && defined(__ARM_NEON)
|
|
269
269
|
#define SZ_USE_NEON (1)
|
|
270
|
-
#elif
|
|
270
|
+
#elif SZ_IS_64BIT_ARM_ && defined(_MSC_VER) && defined(_M_ARM64)
|
|
271
271
|
#define SZ_USE_NEON (1) // ! MSVC doesn't expose `__ARM_NEON` macros
|
|
272
272
|
#else
|
|
273
273
|
#define SZ_USE_NEON (0)
|
|
@@ -217,6 +217,7 @@ def is_big_endian() -> bool:
|
|
|
217
217
|
def linux_settings(use_cpp: bool = False) -> Tuple[List[str], List[str], List[Tuple[str]]]:
|
|
218
218
|
compile_args = [
|
|
219
219
|
"-std=c++17" if use_cpp else "-std=c99", # use C++17 for StringZillas, C99 for StringZilla
|
|
220
|
+
"-D_GNU_SOURCE", # enable POSIX extensions (sigaction, sigjmp_buf, etc.) when using -std=c99
|
|
220
221
|
"-O2", # optimization level
|
|
221
222
|
"-fdiagnostics-color=always", # color console output
|
|
222
223
|
"-Wno-unknown-pragmas", # like: `pragma region` and some unrolls
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: stringzillas-cuda
|
|
3
|
-
Version: 4.2.
|
|
3
|
+
Version: 4.2.2
|
|
4
4
|
Summary: Search, hash, sort, fingerprint, and fuzzy-match strings faster via SWAR, SIMD, and CUDA on Nvidia GPUs
|
|
5
5
|
Home-page: https://github.com/ashvardanian/StringZilla
|
|
6
6
|
Author: Ash Vardanian
|
|
@@ -30,7 +30,7 @@ Classifier: Topic :: Text Processing :: Indexing
|
|
|
30
30
|
Requires-Python: >=3.8
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
License-File: LICENSE
|
|
33
|
-
Requires-Dist: stringzilla==4.2.
|
|
33
|
+
Requires-Dist: stringzilla==4.2.2
|
|
34
34
|
Dynamic: author
|
|
35
35
|
Dynamic: author-email
|
|
36
36
|
Dynamic: classifier
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
stringzilla==4.2.2
|
stringzillas_cuda-4.2.1/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4.2.1
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
stringzilla==4.2.1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/stringzillas_cuda.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/stringzillas_cuda.egg-info/top_level.txt
RENAMED
|
File without changes
|