taichi
Productive & portable programming language for high-performance, sparse & differentiable computing on CPUs & GPUs
view repo
We study the problem of learning and optimizing through physical simulations via differentiable programming. We present DiffTaichi, a new differentiable programming language tailored for building high-performance differentiable physical simulations. We demonstrate the performance and productivity of our language in gradient-based learning and optimization tasks on 10 different physical simulators. For example, a differentiable elastic object simulator written in our language is 4.2x faster than the hand-engineered CUDA version yet runs as fast, and is 188x faster than TensorFlow. Using our differentiable programs, neural network controllers are typically optimized within only tens of iterations. Finally, we share the lessons learned from our experience developing these simulators, that is, differentiating physical simulators does not always yield useful gradients of the physical system being simulated. We systematically study the underlying reasons and propose solutions to improve gradient quality.
READ FULL TEXTProductive & portable programming language for high-performance, sparse & differentiable computing on CPUs & GPUs
10 differentiable physical simulators built with Taichi differentiable programming (DiffTaichi, ICLR 2020)
None
None
None