This paper describes DinamicaVM, the virtual machine that runs applications developed in Dinamica EGO. Dinamica EGO is a framework used in the development of geomodeling applications. Behind its multitude of visual modes and graphic elements, Dinamica EGO runs on top of a virtual machine. This machine – DinamicaVM – offers developers a high-level instruction set architecture, featuring elements such as map and reduce, which are typical in the functional/parallel world. Ensuring that these very expressive components work together efficiently is a challenging endeavor. Dinamica's runtime addresses this challenge through a suite of optimizations, which borrows ideas from functional programming languages, and leverages specific behavior expected in geo-scientific programs. As we show in this paper some of these optimizations deliver speedups of almost 100×, and are key to the industrial-quality performance of one of the world's most widely used geomodeling tools. • Description of virtual machine widely known among geoscientists. • High-level instruction set that uses functional components as building blocks. • Several static analyses and optimizations that boost the VM's performance. • Detailed description of the copy elimination problem, which we solve.
Read full abstract