Skip to content

Commit eb085d8

Browse files
committed
proper TestMetadata constructor functions
1 parent 24f0eaf commit eb085d8

File tree

11 files changed

+71
-66
lines changed

11 files changed

+71
-66
lines changed

tests/difftests/README.md

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,7 @@ fn main() {
7777
file.write_all(&output).expect("Failed to write output");
7878

7979
// Optional: Write metadata for floating-point comparison
80-
let metadata = TestMetadata {
81-
epsilon: Some(0.00001), // Allow differences up to 1e-5
82-
output_type: OutputType::F32, // Interpret output as f32 array
83-
};
84-
config.write_metadata(&metadata).expect("Failed to write metadata");
80+
config.write_metadata(&TestMetadata::f32(0.00001)).expect("Failed to write metadata");
8581
}
8682
```
8783

@@ -130,15 +126,16 @@ outputs:
130126
use difftest::config::{TestMetadata, OutputType};
131127

132128
// Write metadata before or after writing output
129+
let metadata = TestMetadata::f32(0.00001); // output is f32 with some epsilon
130+
config.write_metadata(&metadata)?;
131+
132+
// Alternative: Construct TestMetadata yourself
133133
let metadata = TestMetadata {
134-
epsilon: Some(0.00001), // Maximum allowed difference (default: None)
134+
epsilon: Some(0.00001), // Maximum allowed epsilon / difference (default: None)
135135
output_type: OutputType::F32, // How to interpret output data (default: Raw)
136+
..TestMetadata::default()
136137
};
137138
config.write_metadata(&metadata)?;
138-
139-
// Alternative: Use the helper method for common cases
140-
let metadata = TestMetadata::with_epsilon(0.00001); // Sets epsilon, keeps default output_type
141-
config.write_metadata(&metadata)?;
142139
```
143140

144141
**Metadata fields:**

tests/difftests/lib/src/config.rs

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,47 @@ pub enum OutputType {
5151
}
5252

5353
impl TestMetadata {
54-
/// Create metadata with a specific epsilon value, keeping default output type
55-
pub fn with_epsilon(epsilon: f32) -> Self {
54+
/// Create metadata for f32 with some epsilon value
55+
pub fn f32(epsilon: f32) -> Self {
5656
Self {
57+
output_type: OutputType::F32,
5758
epsilon: Some(epsilon),
5859
..Default::default()
5960
}
6061
}
62+
63+
/// Create metadata for f64 with some epsilon value
64+
pub fn f64(epsilon: f32) -> Self {
65+
Self {
66+
output_type: OutputType::F64,
67+
epsilon: Some(epsilon),
68+
..Default::default()
69+
}
70+
}
71+
72+
/// Create metadata for u32
73+
pub fn u32() -> Self {
74+
Self {
75+
output_type: OutputType::U32,
76+
..Default::default()
77+
}
78+
}
79+
80+
/// Create metadata for i32
81+
pub fn i32() -> Self {
82+
Self {
83+
output_type: OutputType::I32,
84+
..Default::default()
85+
}
86+
}
87+
88+
/// Create metadata for raw hex values
89+
pub fn raw() -> Self {
90+
Self {
91+
output_type: OutputType::Raw,
92+
..Default::default()
93+
}
94+
}
6195
}
6296

6397
impl Config {

tests/difftests/tests/arch/workgroup_memory/workgroup_memory-ash/src/main.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,9 @@ fn main() {
4949
.unwrap();
5050

5151
// Write metadata for U32 comparison
52-
let metadata = difftest::config::TestMetadata {
53-
epsilon: None,
54-
output_type: difftest::config::OutputType::U32,
55-
..Default::default()
56-
};
57-
config.write_metadata(&metadata).unwrap();
52+
config
53+
.write_metadata(&difftest::config::TestMetadata::u32())
54+
.unwrap();
5855

5956
test.run_test(&config).unwrap();
6057
}

tests/difftests/tests/arch/workgroup_memory/workgroup_memory-rust/src/main.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,9 @@ fn main() {
3131
);
3232

3333
// Write metadata for U32 comparison
34-
let metadata = difftest::config::TestMetadata {
35-
epsilon: None,
36-
output_type: difftest::config::OutputType::U32,
37-
..Default::default()
38-
};
39-
config.write_metadata(&metadata).unwrap();
34+
config
35+
.write_metadata(&difftest::config::TestMetadata::u32())
36+
.unwrap();
4037

4138
test.run_test(&config).unwrap();
4239
}

tests/difftests/tests/arch/workgroup_memory/workgroup_memory-wgsl/src/main.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,9 @@ fn main() {
3030
);
3131

3232
// Write metadata for U32 comparison
33-
let metadata = difftest::config::TestMetadata {
34-
epsilon: None,
35-
output_type: difftest::config::OutputType::U32,
36-
..Default::default()
37-
};
38-
config.write_metadata(&metadata).unwrap();
33+
config
34+
.write_metadata(&difftest::config::TestMetadata::u32())
35+
.unwrap();
3936

4037
test.run_test(&config).unwrap();
4138
}

tests/difftests/tests/lang/core/ops/math_ops/math_ops-rust/src/main.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,9 @@ fn main() {
5252
);
5353

5454
// Write metadata file
55-
let metadata = difftest::config::TestMetadata {
56-
epsilon: Some(2e-6), // Small epsilon for last-bit differences
57-
output_type: difftest::config::OutputType::F32,
58-
..Default::default()
59-
};
60-
config.write_metadata(&metadata).unwrap();
55+
config
56+
.write_metadata(&difftest::config::TestMetadata::f32(2e-6))
57+
.unwrap();
6158

6259
test.run_test(&config).unwrap();
6360
}

tests/difftests/tests/lang/core/ops/math_ops/math_ops-wgsl/src/main.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,9 @@ fn main() {
5151
);
5252

5353
// Write metadata file
54-
let metadata = difftest::config::TestMetadata {
55-
epsilon: Some(2e-6), // Small epsilon for last-bit differences
56-
output_type: difftest::config::OutputType::F32,
57-
..Default::default()
58-
};
59-
config.write_metadata(&metadata).unwrap();
54+
config
55+
.write_metadata(&difftest::config::TestMetadata::f32(2e-6))
56+
.unwrap();
6057

6158
test.run_test(&config).unwrap();
6259
}

tests/difftests/tests/lang/core/ops/matrix_ops/matrix_ops-rust/src/main.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,10 @@ fn main() {
5252
);
5353

5454
// Write metadata file
55-
let metadata = difftest::config::TestMetadata {
56-
epsilon: Some(2e-5),
57-
output_type: difftest::config::OutputType::F32,
58-
..Default::default()
59-
};
60-
config.write_metadata(&metadata).unwrap();
55+
// this one requires higher epsilon, noticed on an RDNA2 680M (Ryzen iGPU) with radv
56+
config
57+
.write_metadata(&difftest::config::TestMetadata::f32(2e-5))
58+
.unwrap();
6159

6260
test.run_test(&config).unwrap();
6361
}

tests/difftests/tests/lang/core/ops/matrix_ops/matrix_ops-wgsl/src/main.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,9 @@ fn main() {
5151
);
5252

5353
// Write metadata file
54-
let metadata = difftest::config::TestMetadata {
55-
epsilon: Some(2e-5),
56-
output_type: difftest::config::OutputType::F32,
57-
..Default::default()
58-
};
59-
config.write_metadata(&metadata).unwrap();
54+
config
55+
.write_metadata(&difftest::config::TestMetadata::f32(2e-5))
56+
.unwrap();
6057

6158
test.run_test(&config).unwrap();
6259
}

tests/difftests/tests/lang/core/ops/vector_ops/vector_ops-rust/src/main.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,9 @@ fn main() {
5252
);
5353

5454
// Write metadata file
55-
let metadata = difftest::config::TestMetadata {
56-
epsilon: Some(1e-5), // 1e-5 - appropriate for 5 decimal place rounding
57-
output_type: difftest::config::OutputType::F32,
58-
..Default::default()
59-
};
60-
config.write_metadata(&metadata).unwrap();
55+
config
56+
.write_metadata(&difftest::config::TestMetadata::f32(1e-5))
57+
.unwrap();
6158

6259
test.run_test(&config).unwrap();
6360
}

0 commit comments

Comments
 (0)