Large-scale physical simulations are often composed of multitudinous equations that, in chunks, share the same structure. Furthermore, if the model is provided as a system of equations written in a domain specific language, it might be possible to extract a high-level structure and use it to reduce the complexity of translating the model into a computable program. Still, generic solvers are usually unaware of such high-level features and cannot make proper use of them. All equations are handled independently from each other. Thus the time required to produce a computable simulation starting from a model is tied to the number of equations rather than the number of equations with different structures. When the size of the simulation increases, the amount of time and memory required quickly becomes unreasonable. Furthermore, if a simulation is finally obtained, the code that describes it is often low-performing, due to the disregard of data locality and cache friendliness. In this document, we inspect Modelica, a domain specific language that offers language features which can be used to vastly improve the compilation performance. We provide formal proof of the complexity of each step of the compilation pipeline with respect to the number of equations of the input model. We describe a subset of the language and algorithms that, given a particular high-level structure, are able to produce a simulation in constant time. Finally, we introduce an implementation for such language subset that, given a fixed high-level structure, compiles in constant time regardless of the size of the simulation and yields much smaller binaries and performs faster than the current state-of-the-art tools.

Simulazioni di sistemi fisici su larga scala sono solitamente composti da una multitudine di equazioni le quali, in blocchi, condividono la stessa struttura. Inoltre, se il modello di tale simulazione è fornito come un sistema di equazioni scritte in un qualche linguaggio specifico al problema, potrebbe essere possibile estrarre una struttura di alto livello e usarla per ridurre la complessità di tradurre il modello in una programma computabile. Solver generici sono solitamente inconsapevoli dell'esistenza di questa struttura ad alto livello e non possono farne un buon uso. Tutte le equazioni sono trattate indipendentemente. Ne consegue che il tempo richiesto per produrre la simulazione di un certo modello è legato al numero di equazioni, anzichè al numero di equazioni con struttura diversa. Quando la dimensione della simulazione aumenta, il tempo e la memoria diventano rapidamente eccessive. Inoltre, se una simulazione è finalmente ottenuta, il codice che la descrive è spesso poco performante, per via della bassa importanza che è stata data alla località dei dati. In questo documento ispezioniamo Modelica, un linguaggio di modellazione di sistemi fisici che offre caratteristiche adatte ad essere sfruttate per migliorarne la compilazione. Offriamo prova formale della complessità di ogni step della pipeline di compilazione rispetto al numero di equazioni del modello in input. Descriviamo un subset del linguaggio e algoritmi che, per una particolare struttura ad alto livello del modello in input, produce simulazioni in tempo costante. Infine, introduciamo una implementazione per tale subset del linguaggio che, data una particolare struttura ad alto livello, compila simulazioni in tempo costante e produce eseguibili molto più piccoli e più veloci dello stato dell'arte corrente.

M.A.R.C.O. : an experimental high-performance Modelica compiler for large scale systems.

Fioravanti, Massimo
2019/2020

Abstract

Large-scale physical simulations are often composed of multitudinous equations that, in chunks, share the same structure. Furthermore, if the model is provided as a system of equations written in a domain specific language, it might be possible to extract a high-level structure and use it to reduce the complexity of translating the model into a computable program. Still, generic solvers are usually unaware of such high-level features and cannot make proper use of them. All equations are handled independently from each other. Thus the time required to produce a computable simulation starting from a model is tied to the number of equations rather than the number of equations with different structures. When the size of the simulation increases, the amount of time and memory required quickly becomes unreasonable. Furthermore, if a simulation is finally obtained, the code that describes it is often low-performing, due to the disregard of data locality and cache friendliness. In this document, we inspect Modelica, a domain specific language that offers language features which can be used to vastly improve the compilation performance. We provide formal proof of the complexity of each step of the compilation pipeline with respect to the number of equations of the input model. We describe a subset of the language and algorithms that, given a particular high-level structure, are able to produce a simulation in constant time. Finally, we introduce an implementation for such language subset that, given a fixed high-level structure, compiles in constant time regardless of the size of the simulation and yields much smaller binaries and performs faster than the current state-of-the-art tools.
CASELLA, FRANCESCO
CATTANEO , DANIELE
CHERUBIN, STEFANO
LEVA, ALBERTO
SEVA , SILVANO
TERRANEO, FEDERICO
ING - Scuola di Ingegneria Industriale e dell'Informazione
15-dic-2020
2019/2020
Simulazioni di sistemi fisici su larga scala sono solitamente composti da una multitudine di equazioni le quali, in blocchi, condividono la stessa struttura. Inoltre, se il modello di tale simulazione è fornito come un sistema di equazioni scritte in un qualche linguaggio specifico al problema, potrebbe essere possibile estrarre una struttura di alto livello e usarla per ridurre la complessità di tradurre il modello in una programma computabile. Solver generici sono solitamente inconsapevoli dell'esistenza di questa struttura ad alto livello e non possono farne un buon uso. Tutte le equazioni sono trattate indipendentemente. Ne consegue che il tempo richiesto per produrre la simulazione di un certo modello è legato al numero di equazioni, anzichè al numero di equazioni con struttura diversa. Quando la dimensione della simulazione aumenta, il tempo e la memoria diventano rapidamente eccessive. Inoltre, se una simulazione è finalmente ottenuta, il codice che la descrive è spesso poco performante, per via della bassa importanza che è stata data alla località dei dati. In questo documento ispezioniamo Modelica, un linguaggio di modellazione di sistemi fisici che offre caratteristiche adatte ad essere sfruttate per migliorarne la compilazione. Offriamo prova formale della complessità di ogni step della pipeline di compilazione rispetto al numero di equazioni del modello in input. Descriviamo un subset del linguaggio e algoritmi che, per una particolare struttura ad alto livello del modello in input, produce simulazioni in tempo costante. Infine, introduciamo una implementazione per tale subset del linguaggio che, data una particolare struttura ad alto livello, compila simulazioni in tempo costante e produce eseguibili molto più piccoli e più veloci dello stato dell'arte corrente.
File allegati
File Dimensione Formato  
2020_12_Fioravanti_Massimo.pdf

Open Access dal 20/11/2021

Dimensione 1.18 MB
Formato Adobe PDF
1.18 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/170229