Optimised finite difference computation from symbolic equations

by   Michael Lange, et al.
Imperial College London

Domain-specific high-productivity environments are playing an increasingly important role in scientific computing due to the levels of abstraction and automation they provide. In this paper we introduce Devito, an open-source domain-specific framework for solving partial differential equations from symbolic problem definitions by the finite difference method. We highlight the generation and automated execution of highly optimized stencil code from only a few lines of high-level symbolic Python for a set of scientific equations, before exploring the use of Devito operators in seismic inversion problems.


page 3

page 4

page 6


Devito: automated fast finite difference computation

Domain specific languages have successfully been used in a variety of fi...

Devito: Towards a generic Finite Difference DSL using Symbolic Python

Domain specific languages (DSL) have been used in a variety of fields to...

Devito: an embedded domain-specific language for finite differences and geophysical exploration

We introduce Devito, a new domain-specific language for implementing hig...

Temporal blocking of finite-difference stencil operators with sparse "off-the-grid" sources

Stencil kernels dominate a range of scientific applications, including s...

Investigating the OPS intermediate representation to target GPUs in the Devito DSL

The Devito DSL is a code generation tool for the solution of partial dif...

Architecture and performance of Devito, a system for automated stencil computation

Stencil computations are a key part of many high-performance computing a...


  • [Alnaes14] M. S. Alnæs, A. Logg, K. B. Ølgaard, M. E. Rognes, and G. N. Wells, “Unified Form Language: a domain-specific language for weak formulations of partial differential equations”, ACM Transactions on Mathematical Software (TOMS), vol. 40, no. 2, p. 9, 2014. https://dx.doi.org/10.1145/2566630
  • [Baba16] Y. Baba and V. Rakov, "The Finite-Difference Time Domain Method for Solving Maxwell’s Equations", in "Electromagnetic Computation Methods for Lightning Surge Protection Studies", 2016, pp. 43–72, Wiley, ISBN 9781118275658. http://dx.doi.org/10.1002/9781118275658.ch3
  • [Brandvik10] T. Brandvik and G. Pullan, “Sblock: A framework for efficient stencil-based pde solvers on multi-core platforms”, in "Proceedings of the 2010 10th IEEE International Conference on Computer and Information Technology", IEEE Computer Society, 2010, pp. 1181–1188. http://dx.doi.org/10.1109/CIT.2010.214
  • [Cardenas70] Cárdenas, A. F. and Karplus, W. J.: PDEL — a language for partial differential equations, Communications of the ACM, 13, 184–191, 1970.
  • [Cook88] Cook Jr, G. O.: ALPAL: A tool for the development of large-scale simulation codes, Tech. rep., Lawrence Livermore National Lab., CA (USA), 1988.
  • [Datta08] K. Datta, M. Murphy, V. Volkov, S. Williams, J. Carter, L. Oliker, D. Patterson, J. Shalf, and K. Yelick, “Stencil computation optimization and auto-tuning on state-of-the-art multicore architectures”, in Proceedings of the 2008 ACM/IEEE Conference on Supercomputing, IEEE Press, 2008, pp. 4:1–4:12. http://dl.acm.org/citation.cfm?id=1413370.1413375
  • [Farrell13] Farrell, P. E., Ham, D. A., Funke, S. W., and Rognes, M. E.: Automated Derivation of the Adjoint of High-Level Transient Finite Element Programs, SIAM Journal on Scientific Computing, 35, C369–C393, 2013. http://dx.doi.org/10.1137/120873558
  • [Henretty13] T. Henretty, R. Veras, F. Franchetti, L.-N. Pouchet, J. Ramanujam, and P. Sadayappan, “A stencil compiler for short-vector simd architectures,” in Proceedings of the 27th International ACM Conference on International Conference on Supercomputing, ACM, 2013, pp. 13–24. http://doi.acm.org/10.1145/2464996.2467268
  • [Iverson62] Iverson, K.: A Programming Language, Wiley, 1962.
  • [Krakos12] J.A. Krakos, "Unsteady Adjoint Analysis for Output Sensitivity and Mesh Adaptation", PhD thesis, 2012. https://dspace.mit.edu/handle/1721.1/77133
  • [Lange17] Lange, M., Luporini, F., Louboutin, M., Kukreja, N., Pandolfo, V., Kazakas, P., Velesko, P., Zhang, S., Peng, P., and Gorman, G. Dylan McCormick. 2017, June 7. opesci/devito: Devito-3.0.1. Zenodo. https://doi.org/10.5281/zenodo.823172
  • [LeVeque92] LeVeque, R. J., "Numerical Methods for Conservation Laws", Birkhauser-Verlag (1992).
  • [Liu09] Y. Liu and M. K. Sen, “Advanced Finite-Difference Method for Seismic Modeling,” Geohorizons, Vol. 14, No. 2, 2009, pp. 5-16.
  • [Logg12] Logg, A., Mardal, K.-A., Wells, G. N., et al.: Automated Solution of Differential Equations by the Finite Element Method, Springer, doi:10.1007/978-3-642-23099-8, 2012.
  • [Louboutin17a] Louboutin, M., Lange, M., Herrmann, F. J., Kukreja, N., and Gorman, G.: Performance prediction of finite-difference solvers for different computer architectures, Computers Geosciences, 105, 148—157, https://doi.org/10.1016/j.cageo.2017.04.014, 2017.
  • [Louboutin17b] M. Louboutin, M. Lange, F. Luporini, N. Kukreja, F. Herrmann, P. Velesko, and G. Gorman: Code generation from symbolic finite-difference for geophysical exploration. In preparation for Geoscientific Model Development (GMD), 2017.
  • [McCalpin95] McCalpin, J. D., "Memory Bandwidth and Machine Balance in Current High Performance Computers", IEEE Computer Society Technical Committee on Computer Architecture (TCCA) Newsletter, December 1995.
  • [Meurer17] Meurer A, Smith CP, Paprocki M, Čertík O, Kirpichev SB, Rocklin M, Kumar A, Ivanov S, Moore JK, Singh S, Rathnayake T, Vig S, Granger BE, Muller RP, Bonazzi F, Gupta H, Vats S, Johansson F, Pedregosa F, Curry MJ, Terrel AR, Roučka Š, Saboo A, Fernando I, Kulal S, Cimrman R, Scopatz A. (2017) SymPy: symbolic computing in Python. PeerJ Computer Science 3:e103 https://doi.org/10.7717/peerj-cs.103
  • [Peiro05] J. Peiró, S. Sherwin, "Finite Difference, Finite Element and Finite Volume Methods for Partial Differential Equations", in "Handbook of Materials Modeling, pp. 2415—2446, ISBN 978-1-4020-3286-8, 2005. http://dx.doi.org/10.1007/978-1-4020-3286-8_127.
  • [Rai91] M. M. Rai and P. Moin. 1991. "Direct simulations of turbulent flow using finite-difference schemes", J. Comput. Phys. 96, 1 (October 1991), 15-53. http://dx.doi.org/10.1016/0021-9991(91)90264-L
  • [Rathgeber16] Rathgeber, F., Ham, D. A., Mitchell, L., Lange, M., Luporini, F., McRae, A. T. T., Bercea, G., Markall, G. R., and Kelly, P. H. J.: "Firedrake: automating the finite element method by composing abstractions", ACM Trans. Math. Softw., 43(3):24:1–24:27, 2016. http://dx.doi.org/10.1145/2998441.
  • [Umetani85] Umetani, Y.: DEQSOL A numerical Simulation Language for Vector/Parallel Processors, Proc. IFIP TC2/WG22, 1985, 5, 147–164, 1985.
  • [VanEngelen96] R. Van Engelen, L. Wolters, and G. Cats, “Ctadel: A generator of multi-platform high performance codes for pde-based scientific applications,” in Proceedings of the 10th international conference on Supercomputing. ACM, 1996, pp. 86–93.
  • [Virieux09] Virieux, J. and Operto, S., "An overview of full-waveform inversion in exploration geophysics", GEOPHYSICS, 74, WCC1–WCC26, 2009. http://dx.doi.org/10.1190/1.3238367
  • [Yount15] C. Yount, "Vector Folding: Improving Stencil Performance via Multi-dimensional SIMD-vector Representation," 2015 IEEE 17th International Conference on High Performance Computing and Communications, 2015 IEEE 7th International Symposium on Cyberspace Safety and Security, and 2015 IEEE 12th International Conference on Embedded Software and Systems, New York, NY, 2015, pp. 865-870. https://doi.org/10.1109/HPCC-CSS-ICESS.2015.27
  • [Yount16] C. Yount, J. Tobin, A. Breuer and A. Duran, "YASK — Yet Another Stencil Kernel: A Framework for HPC Stencil Code-Generation and Tuning," 2016 Sixth International Workshop on Domain-Specific Languages and High-Level Frameworks for High Performance Computing (WOLFHPC), Salt Lake City, UT, 2016, pp. 30-39. https://doi.org/10.1109/WOLFHPC.2016.08
  • [Zhang12] Y. Zhang and F. Mueller, “Auto-generation and auto-tuning of 3d stencil codes on gpu clusters,” in Proceedings of the Tenth International Symposium on Code Generation and Optimization, ACM, 2012, pp. 155–164. http://doi.acm.org/10.1145/2259016.2259037