Jiafeng Liu*, Haoyang Shi*, Siyuan Zhang, Yin Yang, Chongyang Ma and Weiwei Xu
Quantization has proven effective in high-resolution and large-scale simulations, which benefit from bit-level memory saving. However, identifying a quantization scheme that meets the requirement of both precision and memory efficiency requires trial and error. In this paper, we propose a novel framework to allow users to obtain a quantization scheme by simply specifying either an error bound or a memory compression rate. Based on the error propagation theory, our method takes advantage of auto-diff to estimate the contributions of each quantization operation to the total error. We formulate the task as a constrained optimization problem, which can be efficiently solved with analytical formulas derived for the linearized objective function. Our workflow extends the Taichi compiler and introduces dithering to improve the precision of quantized simulations. We demonstrate the generality and efficiency of our method via several challenging examples of physics-based simulation, which achieves up to 2.5x memory compression without noticeable degradation of visual quality in the results.
- Our customized Taichi compiler in the
taichi_submission
folder - cmake
- python3.7 or newer
- numpy
- scipy
- plyfile
Our framework is based on Taichi Programming Language(v0.8.4). The compiler code is in folder taichi_submission
and our main modification to the compiler to implement the bit_pack
data structure is in taichi_submission/taichi/codegen/codegen_llvm_quant.cpp
.
cd taichi_submission
mkdir build
cd build
cmake ..
make -j8
See Readme document in mpm_exps
for the MPM experiments.
The experiments of Eulerian smoke simulation will be released soon.