-
Notifications
You must be signed in to change notification settings - Fork 1.1k
[GSoC 2021] Implementing New Applications in Halide
The apps folder in the Halide repository already contains a list of applications. This project seeks to expand the list of applications by including new image processing, computer vision, deep learning, and physics simulation pipelines. We want to use these applications for benchmarking the Halide compiler, training the cost model of our machine learning based autoschedulers, demonstrating the capability of Halide, and understanding our compiler passes.
We plan to implement a subset of the following algorithms in Halide:
- Edge-aware image filtering: Fast Guided Filter, Domain Transform Filter, Adaptive Manifold Filter
- Deep learning architectures: Transformer, LSTM, NeRF
- Fluid simulation: Stable Fluids, Lattice Boltzmann Methods
- Convolutional Pyramids (including the training part using Halide's automatic differentiation feature)
- Feature detection: SURF, ORB
The student will first study and understand the algorithms (all algorithms above have public code available), then implement the corresponding Halide algorithms. They are encouraged to discuss with Halide developers and come up with new algorithms to implement.
- Implement at least two of the above listed algorithms in Halide, along with baseline Halide CPU schedules.
Optional stretch goal(s):
- Implement more algorithms.
- Optimize the schedules for both CPUs and GPUs.
- Test existing Halide autoschedulers on these algorithms and compare to manually written schedules.
Experience in either C++ or Python is required for learning Halide. The students will need to learn to program in Halide. Depending on the types of applications to implement, basic knowledge of computer vision, computer graphics, or linear algebra are preferred but not required.
Easy if the student is already familiar with the algorithms above. Medium if not.
- @BachiLi (Tzu-Mao Li)