Skip to content

Commit 123b09e

Browse files
committed
tests
Signed-off-by: Robert Kruszewski <github@robertk.io>
1 parent 7b93c5e commit 123b09e

File tree

3 files changed

+36
-81
lines changed

3 files changed

+36
-81
lines changed

vortex-gpu/kernels/rle_decompress.cu

Lines changed: 21 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -44,143 +44,100 @@ GENERATE_KERNEL(u8, u8, u8, uint8_t, uint8_t, uint8_t)
4444
GENERATE_KERNEL(u8, u8, u16, uint8_t, uint8_t, uint16_t)
4545
GENERATE_KERNEL(u8, u8, u32, uint8_t, uint8_t, uint32_t)
4646
GENERATE_KERNEL(u8, u8, u64, uint8_t, uint8_t, uint64_t)
47-
GENERATE_KERNEL(u8, u8, i8, uint8_t, uint8_t, int8_t)
48-
GENERATE_KERNEL(u8, u8, i16, uint8_t, uint8_t, int16_t)
49-
GENERATE_KERNEL(u8, u8, i32, uint8_t, uint8_t, int32_t)
50-
GENERATE_KERNEL(u8, u8, i64, uint8_t, uint8_t, int64_t)
5147

5248
GENERATE_KERNEL(u8, u16, u8, uint8_t, uint16_t, uint8_t)
5349
GENERATE_KERNEL(u8, u16, u16, uint8_t, uint16_t, uint16_t)
5450
GENERATE_KERNEL(u8, u16, u32, uint8_t, uint16_t, uint32_t)
5551
GENERATE_KERNEL(u8, u16, u64, uint8_t, uint16_t, uint64_t)
56-
GENERATE_KERNEL(u8, u16, i8, uint8_t, uint16_t, int8_t)
57-
GENERATE_KERNEL(u8, u16, i16, uint8_t, uint16_t, int16_t)
58-
GENERATE_KERNEL(u8, u16, i32, uint8_t, uint16_t, int32_t)
59-
GENERATE_KERNEL(u8, u16, i64, uint8_t, uint16_t, int64_t)
6052

6153
GENERATE_KERNEL(u8, u32, u8, uint8_t, uint32_t, uint8_t)
6254
GENERATE_KERNEL(u8, u32, u16, uint8_t, uint32_t, uint16_t)
6355
GENERATE_KERNEL(u8, u32, u32, uint8_t, uint32_t, uint32_t)
6456
GENERATE_KERNEL(u8, u32, u64, uint8_t, uint32_t, uint64_t)
65-
GENERATE_KERNEL(u8, u32, i8, uint8_t, uint32_t, int8_t)
66-
GENERATE_KERNEL(u8, u32, i16, uint8_t, uint32_t, int16_t)
67-
GENERATE_KERNEL(u8, u32, i32, uint8_t, uint32_t, int32_t)
68-
GENERATE_KERNEL(u8, u32, i64, uint8_t, uint32_t, int64_t)
6957

7058
GENERATE_KERNEL(u8, u64, u8, uint8_t, uint64_t, uint8_t)
7159
GENERATE_KERNEL(u8, u64, u16, uint8_t, uint64_t, uint16_t)
7260
GENERATE_KERNEL(u8, u64, u32, uint8_t, uint64_t, uint32_t)
7361
GENERATE_KERNEL(u8, u64, u64, uint8_t, uint64_t, uint64_t)
74-
GENERATE_KERNEL(u8, u64, i8, uint8_t, uint64_t, int8_t)
75-
GENERATE_KERNEL(u8, u64, i16, uint8_t, uint64_t, int16_t)
76-
GENERATE_KERNEL(u8, u64, i32, uint8_t, uint64_t, int32_t)
77-
GENERATE_KERNEL(u8, u64, i64, uint8_t, uint64_t, int64_t)
7862

7963
GENERATE_KERNEL(u16, u8, u8, uint16_t, uint8_t, uint8_t)
8064
GENERATE_KERNEL(u16, u8, u16, uint16_t, uint8_t, uint16_t)
8165
GENERATE_KERNEL(u16, u8, u32, uint16_t, uint8_t, uint32_t)
8266
GENERATE_KERNEL(u16, u8, u64, uint16_t, uint8_t, uint64_t)
83-
GENERATE_KERNEL(u16, u8, i8, uint16_t, uint8_t, int8_t)
84-
GENERATE_KERNEL(u16, u8, i16, uint16_t, uint8_t, int16_t)
85-
GENERATE_KERNEL(u16, u8, i32, uint16_t, uint8_t, int32_t)
86-
GENERATE_KERNEL(u16, u8, i64, uint16_t, uint8_t, int64_t)
8767

8868
GENERATE_KERNEL(u16, u16, u8, uint16_t, uint16_t, uint8_t)
8969
GENERATE_KERNEL(u16, u16, u16, uint16_t, uint16_t, uint16_t)
9070
GENERATE_KERNEL(u16, u16, u32, uint16_t, uint16_t, uint32_t)
9171
GENERATE_KERNEL(u16, u16, u64, uint16_t, uint16_t, uint64_t)
92-
GENERATE_KERNEL(u16, u16, i8, uint16_t, uint16_t, int8_t)
93-
GENERATE_KERNEL(u16, u16, i16, uint16_t, uint16_t, int16_t)
94-
GENERATE_KERNEL(u16, u16, i32, uint16_t, uint16_t, int32_t)
95-
GENERATE_KERNEL(u16, u16, i64, uint16_t, uint16_t, int64_t)
9672

9773
GENERATE_KERNEL(u16, u32, u8, uint16_t, uint32_t, uint8_t)
9874
GENERATE_KERNEL(u16, u32, u16, uint16_t, uint32_t, uint16_t)
9975
GENERATE_KERNEL(u16, u32, u32, uint16_t, uint32_t, uint32_t)
10076
GENERATE_KERNEL(u16, u32, u64, uint16_t, uint32_t, uint64_t)
101-
GENERATE_KERNEL(u16, u32, i8, uint16_t, uint32_t, int8_t)
102-
GENERATE_KERNEL(u16, u32, i16, uint16_t, uint32_t, int16_t)
103-
GENERATE_KERNEL(u16, u32, i32, uint16_t, uint32_t, int32_t)
104-
GENERATE_KERNEL(u16, u32, i64, uint16_t, uint32_t, int64_t)
10577

10678
GENERATE_KERNEL(u16, u64, u8, uint16_t, uint64_t, uint8_t)
10779
GENERATE_KERNEL(u16, u64, u16, uint16_t, uint64_t, uint16_t)
10880
GENERATE_KERNEL(u16, u64, u32, uint16_t, uint64_t, uint32_t)
10981
GENERATE_KERNEL(u16, u64, u64, uint16_t, uint64_t, uint64_t)
110-
GENERATE_KERNEL(u16, u64, i8, uint16_t, uint64_t, int8_t)
111-
GENERATE_KERNEL(u16, u64, i16, uint16_t, uint64_t, int16_t)
112-
GENERATE_KERNEL(u16, u64, i32, uint16_t, uint64_t, int32_t)
113-
GENERATE_KERNEL(u16, u64, i64, uint16_t, uint64_t, int64_t)
11482

11583
// Signed types
11684
GENERATE_KERNEL(u8, i8, u8, uint8_t, int8_t, uint8_t)
11785
GENERATE_KERNEL(u8, i8, u16, uint8_t, int8_t, uint16_t)
11886
GENERATE_KERNEL(u8, i8, u32, uint8_t, int8_t, uint32_t)
11987
GENERATE_KERNEL(u8, i8, u64, uint8_t, int8_t, uint64_t)
120-
GENERATE_KERNEL(u8, i8, i8, uint8_t, int8_t, int8_t)
121-
GENERATE_KERNEL(u8, i8, i16, uint8_t, int8_t, int16_t)
122-
GENERATE_KERNEL(u8, i8, i32, uint8_t, int8_t, int32_t)
123-
GENERATE_KERNEL(u8, i8, i64, uint8_t, int8_t, int64_t)
12488

12589
GENERATE_KERNEL(u8, i16, u8, uint8_t, int16_t, uint8_t)
12690
GENERATE_KERNEL(u8, i16, u16, uint8_t, int16_t, uint16_t)
12791
GENERATE_KERNEL(u8, i16, u32, uint8_t, int16_t, uint32_t)
12892
GENERATE_KERNEL(u8, i16, u64, uint8_t, int16_t, uint64_t)
129-
GENERATE_KERNEL(u8, i16, i8, uint8_t, int16_t, int8_t)
130-
GENERATE_KERNEL(u8, i16, i16, uint8_t, int16_t, int16_t)
131-
GENERATE_KERNEL(u8, i16, i32, uint8_t, int16_t, int32_t)
132-
GENERATE_KERNEL(u8, i16, i64, uint8_t, int16_t, int64_t)
13393

13494
GENERATE_KERNEL(u8, i32, u8, uint8_t, int32_t, uint8_t)
13595
GENERATE_KERNEL(u8, i32, u16, uint8_t, int32_t, uint16_t)
13696
GENERATE_KERNEL(u8, i32, u32, uint8_t, int32_t, uint32_t)
13797
GENERATE_KERNEL(u8, i32, u64, uint8_t, int32_t, uint64_t)
138-
GENERATE_KERNEL(u8, i32, i8, uint8_t, int32_t, int8_t)
139-
GENERATE_KERNEL(u8, i32, i16, uint8_t, int32_t, int16_t)
140-
GENERATE_KERNEL(u8, i32, i32, uint8_t, int32_t, int32_t)
141-
GENERATE_KERNEL(u8, i32, i64, uint8_t, int32_t, int64_t)
14298

14399
GENERATE_KERNEL(u8, i64, u8, uint8_t, int64_t, uint8_t)
144100
GENERATE_KERNEL(u8, i64, u16, uint8_t, int64_t, uint16_t)
145101
GENERATE_KERNEL(u8, i64, u32, uint8_t, int64_t, uint32_t)
146102
GENERATE_KERNEL(u8, i64, u64, uint8_t, int64_t, uint64_t)
147-
GENERATE_KERNEL(u8, i64, i8, uint8_t, int64_t, int8_t)
148-
GENERATE_KERNEL(u8, i64, i16, uint8_t, int64_t, int16_t)
149-
GENERATE_KERNEL(u8, i64, i32, uint8_t, int64_t, int32_t)
150-
GENERATE_KERNEL(u8, i64, i64, uint8_t, int64_t, int64_t)
151103

152104
GENERATE_KERNEL(u16, i8, u8, uint16_t, int8_t, uint8_t)
153105
GENERATE_KERNEL(u16, i8, u16, uint16_t, int8_t, uint16_t)
154106
GENERATE_KERNEL(u16, i8, u32, uint16_t, int8_t, uint32_t)
155107
GENERATE_KERNEL(u16, i8, u64, uint16_t, int8_t, uint64_t)
156-
GENERATE_KERNEL(u16, i8, i8, uint16_t, int8_t, int8_t)
157-
GENERATE_KERNEL(u16, i8, i16, uint16_t, int8_t, int16_t)
158-
GENERATE_KERNEL(u16, i8, i32, uint16_t, int8_t, int32_t)
159-
GENERATE_KERNEL(u16, i8, i64, uint16_t, int8_t, int64_t)
160108

161109
GENERATE_KERNEL(u16, i16, u8, uint16_t, int16_t, uint8_t)
162110
GENERATE_KERNEL(u16, i16, u16, uint16_t, int16_t, uint16_t)
163111
GENERATE_KERNEL(u16, i16, u32, uint16_t, int16_t, uint32_t)
164112
GENERATE_KERNEL(u16, i16, u64, uint16_t, int16_t, uint64_t)
165-
GENERATE_KERNEL(u16, i16, i8, uint16_t, int16_t, int8_t)
166-
GENERATE_KERNEL(u16, i16, i16, uint16_t, int16_t, int16_t)
167-
GENERATE_KERNEL(u16, i16, i32, uint16_t, int16_t, int32_t)
168-
GENERATE_KERNEL(u16, i16, i64, uint16_t, int16_t, int64_t)
169113

170114
GENERATE_KERNEL(u16, i32, u8, uint16_t, int32_t, uint8_t)
171115
GENERATE_KERNEL(u16, i32, u16, uint16_t, int32_t, uint16_t)
172116
GENERATE_KERNEL(u16, i32, u32, uint16_t, int32_t, uint32_t)
173117
GENERATE_KERNEL(u16, i32, u64, uint16_t, int32_t, uint64_t)
174-
GENERATE_KERNEL(u16, i32, i8, uint16_t, int32_t, int8_t)
175-
GENERATE_KERNEL(u16, i32, i16, uint16_t, int32_t, int16_t)
176-
GENERATE_KERNEL(u16, i32, i32, uint16_t, int32_t, int32_t)
177-
GENERATE_KERNEL(u16, i32, i64, uint16_t, int32_t, int64_t)
178118

179119
GENERATE_KERNEL(u16, i64, u8, uint16_t, int64_t, uint8_t)
180120
GENERATE_KERNEL(u16, i64, u16, uint16_t, int64_t, uint16_t)
181121
GENERATE_KERNEL(u16, i64, u32, uint16_t, int64_t, uint32_t)
182122
GENERATE_KERNEL(u16, i64, u64, uint16_t, int64_t, uint64_t)
183-
GENERATE_KERNEL(u16, i64, i8, uint16_t, int64_t, int8_t)
184-
GENERATE_KERNEL(u16, i64, i16, uint16_t, int64_t, int16_t)
185-
GENERATE_KERNEL(u16, i64, i32, uint16_t, int64_t, int32_t)
186-
GENERATE_KERNEL(u16, i64, i64, uint16_t, int64_t, int64_t)
123+
124+
// Float types
125+
GENERATE_KERNEL(u8, f32, u8, uint8_t, float, uint8_t)
126+
GENERATE_KERNEL(u8, f32, u16, uint8_t, float, uint16_t)
127+
GENERATE_KERNEL(u8, f32, u32, uint8_t, float, uint32_t)
128+
GENERATE_KERNEL(u8, f32, u64, uint8_t, float, uint64_t)
129+
130+
GENERATE_KERNEL(u8, f64, u8, uint8_t, double, uint8_t)
131+
GENERATE_KERNEL(u8, f64, u16, uint8_t, double, uint16_t)
132+
GENERATE_KERNEL(u8, f64, u32, uint8_t, double, uint32_t)
133+
GENERATE_KERNEL(u8, f64, u64, uint8_t, double, uint64_t)
134+
135+
GENERATE_KERNEL(u16, f32, u8, uint16_t, float, uint8_t)
136+
GENERATE_KERNEL(u16, f32, u16, uint16_t, float, uint16_t)
137+
GENERATE_KERNEL(u16, f32, u32, uint16_t, float, uint32_t)
138+
GENERATE_KERNEL(u16, f32, u64, uint16_t, float, uint64_t)
139+
140+
GENERATE_KERNEL(u16, f64, u8, uint16_t, double, uint8_t)
141+
GENERATE_KERNEL(u16, f64, u16, uint16_t, double, uint16_t)
142+
GENERATE_KERNEL(u16, f64, u32, uint16_t, double, uint32_t)
143+
GENERATE_KERNEL(u16, f64, u64, uint16_t, double, uint64_t)

vortex-gpu/src/for_.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,5 @@ mod tests {
181181
primitive_array.as_slice::<u32>(),
182182
unpacked.as_slice::<u32>()
183183
);
184-
for i in 0..primitive_array.len() {
185-
assert_eq!(
186-
primitive_array.as_slice::<u32>()[i],
187-
unpacked.as_slice::<u32>()[i],
188-
"i {i}"
189-
);
190-
}
191184
}
192185
}

vortex-gpu/src/rle_decompress.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -144,26 +144,31 @@ where
144144
#[cfg(all(target_os = "linux", feature = "cuda"))]
145145
#[cfg(test)]
146146
mod tests {
147-
use std::iter;
148-
149147
use cudarc::driver::CudaContext;
148+
use rstest::rstest;
150149
use vortex_array::ToCanonical;
151150
use vortex_array::arrays::PrimitiveArray;
152151
use vortex_array::validity::Validity;
153152
use vortex_buffer::Buffer;
153+
use vortex_dtype::NativePType;
154154
use vortex_error::VortexUnwrap;
155155
use vortex_fastlanes::RLEArray;
156156

157157
use crate::rle_decompress::cuda_rle_decompress;
158158

159-
#[test]
160-
fn test_cuda_rle_decompress() {
161-
let primitive_array = PrimitiveArray::new(
162-
(0u32..4096)
163-
.flat_map(|i| iter::repeat_n(i, i as usize % 10))
164-
.collect::<Buffer<_>>(),
165-
Validity::NonNullable,
166-
);
159+
#[rstest]
160+
#[case::u8((0u8..100).collect::<Buffer<u8>>())]
161+
#[case::u16((0u16..2000).collect::<Buffer<u16>>())]
162+
#[case::u32((0u32..2000).collect::<Buffer<u32>>())]
163+
#[case::u64((0u64..2000).collect::<Buffer<u64>>())]
164+
#[case::i8((-100i8..100).collect::<Buffer<i8>>())]
165+
#[case::i16((-2000i16..2000).collect::<Buffer<i16>>())]
166+
#[case::i32((-2000i32..2000).collect::<Buffer<i32>>())]
167+
#[case::i64((-2000i64..2000).collect::<Buffer<i64>>())]
168+
#[case::f32((-2000..2000).map(|i| i as f32).collect::<Buffer<f32>>())]
169+
#[case::f64((-2000..2000).map(|i| i as f64).collect::<Buffer<f64>>())]
170+
fn test_cuda_rle_decompress<T: NativePType>(#[case] values: Buffer<T>) {
171+
let primitive_array = PrimitiveArray::new(values, Validity::NonNullable);
167172
let array = RLEArray::encode(&primitive_array).vortex_unwrap();
168173
let ctx = CudaContext::new(0).unwrap();
169174
ctx.set_blocking_synchronize().unwrap();

0 commit comments

Comments
 (0)