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.
Files changed (49) hide show
  1. {stringzillas_cuda-4.2.1/stringzillas_cuda.egg-info → stringzillas_cuda-4.2.2}/PKG-INFO +2 -2
  2. stringzillas_cuda-4.2.2/VERSION +1 -0
  3. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/c/stringzilla.c +2 -1
  4. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/compare.h +4 -4
  5. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/find.h +4 -4
  6. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/hash.h +12 -12
  7. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/intersect.h +2 -2
  8. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/memory.h +69 -4
  9. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/sort.h +2 -2
  10. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/stringzilla.h +5 -4
  11. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/types.h +1 -1
  12. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/setup.py +1 -0
  13. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2/stringzillas_cuda.egg-info}/PKG-INFO +2 -2
  14. stringzillas_cuda-4.2.2/stringzillas_cuda.egg-info/requires.txt +1 -0
  15. stringzillas_cuda-4.2.1/VERSION +0 -1
  16. stringzillas_cuda-4.2.1/stringzillas_cuda.egg-info/requires.txt +0 -1
  17. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/LICENSE +0 -0
  18. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/MANIFEST.in +0 -0
  19. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/README.md +0 -0
  20. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/SZ_TARGET.env +0 -0
  21. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/build_backend.py +0 -0
  22. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/c/stringzillas.cpp +0 -0
  23. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/c/stringzillas.cu +0 -0
  24. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/c/stringzillas.cuh +0 -0
  25. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/cli/__init__.py +0 -0
  26. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/cli/split.py +0 -0
  27. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/cli/wc.py +0 -0
  28. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/fork_union/include/fork_union.h +0 -0
  29. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/fork_union/include/fork_union.hpp +0 -0
  30. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/module.modulemap +0 -0
  31. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/small_string.h +0 -0
  32. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/stringzilla.hpp +0 -0
  33. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzilla/types.hpp +0 -0
  34. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/fingerprints.cuh +0 -0
  35. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/fingerprints.hpp +0 -0
  36. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/similarities.cuh +0 -0
  37. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/similarities.hpp +0 -0
  38. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/stringzillas.h +0 -0
  39. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/types.cuh +0 -0
  40. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/include/stringzillas/types.hpp +0 -0
  41. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/pyproject.toml +0 -0
  42. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/python/stringzilla.c +0 -0
  43. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/python/stringzillas.c +0 -0
  44. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/scripts/test_stringzilla.py +0 -0
  45. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/scripts/test_stringzillas.py +0 -0
  46. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/setup.cfg +0 -0
  47. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/stringzillas_cuda.egg-info/SOURCES.txt +0 -0
  48. {stringzillas_cuda-4.2.1 → stringzillas_cuda-4.2.2}/stringzillas_cuda.egg-info/dependency_links.txt +0 -0
  49. {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.1
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.1
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("arch=armv8.2-a+simd"))), apply_to = function)
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("arch=armv8.2-a+simd")
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("arch=armv8.2-a+sve"))), apply_to = function)
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("arch=armv8.2-a+sve")
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("arch=armv8.2-a+simd"))), apply_to = function)
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("arch=armv8.2-a+simd")
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("arch=armv8.2-a+sve"))), apply_to = function)
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("arch=armv8.2-a+sve")
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("arch=armv8.2-a+simd"))), apply_to = function)
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("arch=armv8.2-a+simd")
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("arch=armv8.2-a+simd+crypto+aes"))), apply_to = function)
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("arch=armv8.2-a+simd+crypto+aes")
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("arch=armv8.2-a+simd+crypto+sha2"))), apply_to = function)
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("arch=armv8.2-a+simd+crypto+sha2")
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("arch=armv8.2-a+sve"))), apply_to = function)
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("arch=armv8.2-a+sve")
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("arch=armv8.2-a+sve+sve2"))), apply_to = function)
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("arch=armv8.2-a+sve+sve2")
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("arch=armv8.2-a+sve+sve2+sve2-aes"))), apply_to = function)
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("arch=armv8.2-a+sve+sve2+sve2-aes")
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("arch=armv8.2-a+sve"))), apply_to = function)
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("arch=armv8.2-a+sve")
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("arch=armv8.2-a+simd"))), apply_to = function)
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("arch=armv8.2-a+simd")
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("arch=armv8.2-a+sve"))), apply_to = function)
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("arch=armv8.2-a+sve")
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("arch=armv8.2-a+sve"))), apply_to = function)
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("arch=armv8.2-a+sve")
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 1
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
- #include <processthreadsapi.h>
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("arch=armv8.5-a+sve"))), apply_to = function)
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("arch=armv8.5-a+sve")
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 SZ_IS_64BIT_X86_ && defined(_MSC_VER) && defined(__ARM_ARCH) && __ARM_ARCH >= 800
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.1
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.1
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
@@ -1 +0,0 @@
1
- 4.2.1
@@ -1 +0,0 @@
1
- stringzilla==4.2.1