-
Notifications
You must be signed in to change notification settings - Fork 1.1k
[GSoC 2021] Fuzzing Halide
Alexander Root edited this page Feb 17, 2021
·
5 revisions
We have had a lot of success with fuzzing different components of the Halide compiler (i.e. in the simplifier). We would like projects that fuzz other aspects of Halide’s infrastructure, specifically (but not necessarily limited to):
- The parallel runtime
- Random generation of schedules that use parallel directives (i.e. async, parellelize, storage folding, etc.) and make sure that none of the produced schedules deadlock. (see #4725)
- The Halide frontend
- Random generation of pipelines (and possibly schedules) to detect errors - the Halide frontend should only ever trigger user errors, not internal errors.
- compute_root scheduling compilation times
- Random generation of pipelines should be scheduled as compute_root, and fuzzing would ensure that compilation (Halide’s code generation) completes within a reasonable amount of time.
We have a random pipeline generator already, and our autoscheduler(s) can be used to randomly generate a subset of correct schedules.
- For project #1 (and possibly #2), a random schedule generator using existing autoscheduler code for schedule exploration.
- Detection of bugs specific to the selected project
- Parallel runtime: detection of any possible deadlock for valid schedules.
- Halide frontend: detection of internal errors/crashes that should be presented as user errors.
- compute_root scheduling: generation of pipelines that cause Halide code generation to take much longer than it should. Stretch goal(s):
- Fixes for detected bugs.
- A random schedule generator that does not use existing autoscheduler schedule exploration, in order to explore a larger subset of valid schedules.
- Strong C++ experience is required for this project.
- Halide experience will be useful but not required.
- Parallel runtime: Hard.
- Halide frontend: Medium/Hard.
- compute_root scheduling: Medium.
- @rootjalex (Alexander Root)
- @abadams (Andrew Adams)