| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[Offload][Conformance] Add RandomGenerator for large input spaces (#154252) This patch implements the RandomGenerator, a new input generator that enables conformance testing for functions with large input spaces (e.g., double-precision math functions). **Architectural Refactoring** To support different generation strategies in a clean and extensible way, the existing ExhaustiveGenerator was refactored into a new class hierarchy: * A new abstract base class, RangeBasedGenerator, was introduced using the Curiously Recurring Template Pattern (CRTP). It contains the common logic for generators that operate on a sequence of ranges. * ExhaustiveGenerator now inherits from this base class, simplifying its implementation. **New Components** * The new RandomGenerator class also inherits from RangeBasedGenerator. It implements a strategy that randomly samples a specified number of points from the total input space. * Random number generation is handled by a new, self-contained RandomState class (a xorshift64* PRNG seeded with splitmix64) to ensure deterministic and reproducible random streams for testing. **Example Usage** As a first use case and demonstration of this new capability, this patch also adds the first double-precision conformance test for the log function. This test uses the new RandomGenerator to validate the implementations from the llvm-libm, cuda-math, and hip-math providers. | 11 个月前 |