From 70a306234185a108ca6207a1b0e90a7402a02634 Mon Sep 17 00:00:00 2001 From: Josiah White Date: Fri, 25 Apr 2025 15:48:56 -0500 Subject: [PATCH 1/3] fix build error on nightly-2025-04-25 --- src/simd/simd_f32_return_nan.rs | 2 +- src/simd/simd_i32.rs | 2 +- src/simd/simd_u16.rs | 1 + src/simd/simd_u32.rs | 1 + src/simd/simd_u64.rs | 1 + src/simd/simd_u8.rs | 1 + 6 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/simd/simd_f32_return_nan.rs b/src/simd/simd_f32_return_nan.rs index 2cde245..81c8bd8 100644 --- a/src/simd/simd_f32_return_nan.rs +++ b/src/simd/simd_f32_return_nan.rs @@ -354,7 +354,7 @@ mod avx512 { #[inline(always)] unsafe fn _mm_loadu(data: *const f32) -> __m512i { - _f32_as_m512i_to_i32ord(_mm512_loadu_si512(data as *const i32)) + _f32_as_m512i_to_i32ord(_mm512_loadu_si512(data as *const _)) } #[inline(always)] diff --git a/src/simd/simd_i32.rs b/src/simd/simd_i32.rs index 9772056..4151b1a 100644 --- a/src/simd/simd_i32.rs +++ b/src/simd/simd_i32.rs @@ -192,7 +192,7 @@ mod avx512 { #[inline(always)] unsafe fn _mm_loadu(data: *const i32) -> __m512i { - _mm512_loadu_si512(data as *const i32) + _mm512_loadu_si512(data as *const _) } #[inline(always)] diff --git a/src/simd/simd_u16.rs b/src/simd/simd_u16.rs index 565b5a3..7491c6b 100644 --- a/src/simd/simd_u16.rs +++ b/src/simd/simd_u16.rs @@ -54,6 +54,7 @@ const XOR_VALUE: i16 = -0x8000; // i16::MIN #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] #[inline(always)] +#[allow(unnecessary_transmutes)] fn _i16ord_to_u16(ord_i16: i16) -> u16 { // let v = ord_i16 ^ -0x8000; unsafe { std::mem::transmute::(ord_i16 ^ XOR_VALUE) } diff --git a/src/simd/simd_u32.rs b/src/simd/simd_u32.rs index ae22cf8..79fa379 100644 --- a/src/simd/simd_u32.rs +++ b/src/simd/simd_u32.rs @@ -57,6 +57,7 @@ const XOR_VALUE: i32 = -0x80000000; // i32::MIN #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] #[inline(always)] +#[allow(unnecessary_transmutes)] fn _i32ord_to_u32(ord_i32: i32) -> u32 { // let v = ord_i32 ^ -0x80000000; unsafe { std::mem::transmute::(ord_i32 ^ XOR_VALUE) } diff --git a/src/simd/simd_u64.rs b/src/simd/simd_u64.rs index 9cba52a..5cd5343 100644 --- a/src/simd/simd_u64.rs +++ b/src/simd/simd_u64.rs @@ -53,6 +53,7 @@ const XOR_VALUE: i64 = -0x8000000000000000; // i64::MIN #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] #[inline(always)] +#[allow(unnecessary_transmutes)] fn _i64ord_to_u64(ord_i64: i64) -> u64 { // let v = ord_i64 ^ -0x8000000000000000; unsafe { std::mem::transmute::(ord_i64 ^ XOR_VALUE) } diff --git a/src/simd/simd_u8.rs b/src/simd/simd_u8.rs index 1cab9d8..f167073 100644 --- a/src/simd/simd_u8.rs +++ b/src/simd/simd_u8.rs @@ -54,6 +54,7 @@ const XOR_VALUE: i8 = -0x80; // i8::MIN #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] #[inline(always)] +#[allow(unnecessary_transmutes)] fn _i8ord_to_u8(ord_i8: i8) -> u8 { // let v = ord_i8 ^ -0x80; unsafe { std::mem::transmute::(ord_i8 ^ XOR_VALUE) } From 42e88ba4c6b9e933ce3d5b82d9b66eb96a72eb1a Mon Sep 17 00:00:00 2001 From: jeroen Date: Wed, 7 May 2025 11:59:31 +0000 Subject: [PATCH 2/3] update half and rand (dev_utils) dependencies + unwrap Uniform result --- Cargo.toml | 2 +- dev_utils/Cargo.toml | 4 ++-- dev_utils/src/utils.rs | 14 +++++++------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index c1c43db..6107264 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ exclude = [".git*", "dev_utils/**/*", "tests/**/*"] [dependencies] num-traits = { version = "0.2", default-features = false } -half = { version = "2.4", default-features = false, features=["num-traits"], optional = true } +half = { version = "2.6", default-features = false, features=["num-traits"], optional = true } ndarray = { version = "0.16.1", default-features = false, optional = true } arrow = { version = ">0", default-features = false, optional = true } arrow2 = { version = ">0.0", default-features = false, optional = true } diff --git a/dev_utils/Cargo.toml b/dev_utils/Cargo.toml index 70c705a..4f32ac8 100644 --- a/dev_utils/Cargo.toml +++ b/dev_utils/Cargo.toml @@ -7,5 +7,5 @@ description = "Shared utilities for development (tests & benchmarks)" [dependencies] num-traits = { version = "0.2", default-features = false } -half = { version = "2.4", default-features = false, features = ["num-traits", "rand_distr"] } -rand = { version = "0.8.5" } +half = { version = "2.6", default-features = false, features = ["num-traits", "rand_distr"] } +rand = { version = "0.9.1", default-features = false} \ No newline at end of file diff --git a/dev_utils/src/utils.rs b/dev_utils/src/utils.rs index c30ecf0..e84c20e 100644 --- a/dev_utils/src/utils.rs +++ b/dev_utils/src/utils.rs @@ -3,8 +3,8 @@ use num_traits::Zero; use std::ops::{Add, Sub}; -use rand::distributions::Uniform; -use rand::{thread_rng, Rng}; +use rand::distr::Uniform; +use rand::{rng, Rng}; // worst case array that alternates between increasing max and decreasing min values pub fn get_worst_case_array(n: usize, step: T) -> Vec @@ -26,17 +26,17 @@ where arr } -pub trait SampleUniformFullRange: rand::distributions::uniform::SampleUniform { +pub trait SampleUniformFullRange: rand::distr::uniform::SampleUniform { const MIN: Self; const MAX: Self; // random array that samples between min and max of Self fn get_random_array(n: usize) -> Vec where - Self: Copy + rand::distributions::uniform::SampleUniform, + Self: Copy + rand::distr::uniform::SampleUniform, { - let rng = thread_rng(); - let uni = Uniform::new_inclusive(Self::MIN, Self::MAX); + let rng = rng(); + let uni = Uniform::new_inclusive(Self::MIN, Self::MAX).unwrap(); rng.sample_iter(uni).take(n).collect() } } @@ -62,7 +62,7 @@ macro_rules! impl_full_range_uniform_float { fn get_random_array(n: usize) -> Vec where - Self: Copy + rand::distributions::uniform::SampleUniform, + Self: Copy + rand::distr::uniform::SampleUniform, { // Get a uniform random array of integers let rand_arr_int: Vec<$t_int> = <$t_int>::get_random_array(n); From 2b78a0e32baef4d744142785e024addacf35e2ad Mon Sep 17 00:00:00 2001 From: jeroen Date: Wed, 7 May 2025 12:06:17 +0000 Subject: [PATCH 3/3] fix f16 as conversion --- src/simd/simd_f16_ignore_nan.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/simd/simd_f16_ignore_nan.rs b/src/simd/simd_f16_ignore_nan.rs index 0903d67..a221e13 100644 --- a/src/simd/simd_f16_ignore_nan.rs +++ b/src/simd/simd_f16_ignore_nan.rs @@ -581,7 +581,7 @@ mod avx512_ignore_nan { #[inline(always)] unsafe fn _mm_set1(a: f16) -> __m512i { let data: [f16; LANE_SIZE] = [a; LANE_SIZE]; - _f16_as_m521i_to_i16ord(_mm512_loadu_si512(data.as_ptr() as *const i32)) + _f16_as_m521i_to_i16ord(_mm512_loadu_si512(data.as_ptr() as *const _)) } }