MARCO is a Modelica compiler that exploits LLVM and MLIR to compile and simulate cyber-physical systems. To simulate such systems with sufficient precision it is often necessary to split a volume into smaller subvolumes, to obtain the required resolution. This is supported in Modelica by the concept of Component Model, which allows to encapsulate equations into a reusable form. This enables the model designer to abstract from the inner workings of the specific subparts of the system, and permits them instead to focus on their interaction. This approach however introduces complications for the compilation process, as the equations generated by the boundaries of the subvolumes can at times produce cycles. To solve this issue Modelica compilers have a cycle resolution phase, implemented in MARCO by means of substitution. The intent of the present work is to introduce the publicly available symbolic solver library GiNaC to replace the existing cycle resolution method, in order to gain flexibility and improve the simulation performance at a later time, by removing the variables that are not object of study. It is in fact demonstrated that the surface variables introduced by the object oriented syntax can be canceled by performing some mathematical manipulations. \cite{csm} The present work describes the introduction of the GiNaC symbolic solver in the cycle resolution phase of the MARCO compiler, by translating the MLIR Modelica dialect into GiNaC expressions. Once the linear system is solved, the solution expressions are translated back into Modelica dialect. The new cycle resolution phase improves the simulation time on the benchmark model.

MARCO è un compilatore Modelica che sfrutta i framework LLVM e MLIR per compilare sistemi cyber-fisici. Per simulare tali sistemi con una precisione sufficiente, si rivela spesso necessario dividere un volume in sottoparti, per ottenere la risoluzione adeguata. Questo è reso possibile in Modelica dal concetto di Component Model, che permette di incapsulare le equazioni in una forma riutilizzabile. Così chi definisce il modello può astrarre dalla definizione interna delle specifiche sottoparti del sistema, e concentrarsi invece sulla loro interazione. Questo approccio introduce però complicazioni per il processo di compilazione, poiché le equazioni generate dalle frontiere dei sottovolumi possono produrre cicli lineari. Per affrontare questo problema i compilatori Modelica hanno una fase di risoluzione dei cicli, implementata in MARCO tramite sostituzione. L'intento del lavoro presente consiste nell'introduzione della libreria GiNaC di soluzione simbolica per affiancare il metodo esistente di risoluzione dei cicli, per guadagnare flessibilità e avere la possibilità di migliorare le prestazioni del modello durante la simulazione, attraverso la rimozione delle variabili non oggetto di studio. È infatti dimostrato che le variabili di superficie introdotte dalla sintassi object oriented possono essere cancellate attraverso manipolazioni matematiche. \cite{csm} Il lavoro presente descrive l'introduzione del solutore simbolico GiNaC nella fase di risoluzione dei cicli del compilatore MARCO, attraverso la traduzione del dialetto MLIR Modelica in espressioni GiNaC. Una volta risolto il sistema lineare, le equazioni sono tradotte di nuovo in dialetto Modelica. La nuova fase di risoluzione dei cicli migliora il tempo di simulazione per il modello oggetto di benchmark.

Cycle resolution for model causalization in the MARCO Modelica compiler

AZZONE, STEFANO
2022/2023

Abstract

MARCO is a Modelica compiler that exploits LLVM and MLIR to compile and simulate cyber-physical systems. To simulate such systems with sufficient precision it is often necessary to split a volume into smaller subvolumes, to obtain the required resolution. This is supported in Modelica by the concept of Component Model, which allows to encapsulate equations into a reusable form. This enables the model designer to abstract from the inner workings of the specific subparts of the system, and permits them instead to focus on their interaction. This approach however introduces complications for the compilation process, as the equations generated by the boundaries of the subvolumes can at times produce cycles. To solve this issue Modelica compilers have a cycle resolution phase, implemented in MARCO by means of substitution. The intent of the present work is to introduce the publicly available symbolic solver library GiNaC to replace the existing cycle resolution method, in order to gain flexibility and improve the simulation performance at a later time, by removing the variables that are not object of study. It is in fact demonstrated that the surface variables introduced by the object oriented syntax can be canceled by performing some mathematical manipulations. \cite{csm} The present work describes the introduction of the GiNaC symbolic solver in the cycle resolution phase of the MARCO compiler, by translating the MLIR Modelica dialect into GiNaC expressions. Once the linear system is solved, the solution expressions are translated back into Modelica dialect. The new cycle resolution phase improves the simulation time on the benchmark model.
CASELLA, FRANCESCO
CATTANEO, DANIELE
SCUTTARI, MICHELE
TERRANEO, FEDERICO
ING - Scuola di Ingegneria Industriale e dell'Informazione
19-dic-2023
2022/2023
MARCO è un compilatore Modelica che sfrutta i framework LLVM e MLIR per compilare sistemi cyber-fisici. Per simulare tali sistemi con una precisione sufficiente, si rivela spesso necessario dividere un volume in sottoparti, per ottenere la risoluzione adeguata. Questo è reso possibile in Modelica dal concetto di Component Model, che permette di incapsulare le equazioni in una forma riutilizzabile. Così chi definisce il modello può astrarre dalla definizione interna delle specifiche sottoparti del sistema, e concentrarsi invece sulla loro interazione. Questo approccio introduce però complicazioni per il processo di compilazione, poiché le equazioni generate dalle frontiere dei sottovolumi possono produrre cicli lineari. Per affrontare questo problema i compilatori Modelica hanno una fase di risoluzione dei cicli, implementata in MARCO tramite sostituzione. L'intento del lavoro presente consiste nell'introduzione della libreria GiNaC di soluzione simbolica per affiancare il metodo esistente di risoluzione dei cicli, per guadagnare flessibilità e avere la possibilità di migliorare le prestazioni del modello durante la simulazione, attraverso la rimozione delle variabili non oggetto di studio. È infatti dimostrato che le variabili di superficie introdotte dalla sintassi object oriented possono essere cancellate attraverso manipolazioni matematiche. \cite{csm} Il lavoro presente descrive l'introduzione del solutore simbolico GiNaC nella fase di risoluzione dei cicli del compilatore MARCO, attraverso la traduzione del dialetto MLIR Modelica in espressioni GiNaC. Una volta risolto il sistema lineare, le equazioni sono tradotte di nuovo in dialetto Modelica. La nuova fase di risoluzione dei cicli migliora il tempo di simulazione per il modello oggetto di benchmark.
File allegati
File Dimensione Formato  
main.pdf

accessibile in internet per tutti

Descrizione: Executive summary
Dimensione 380.95 kB
Formato Adobe PDF
380.95 kB Adobe PDF Visualizza/Apri
Thesis.pdf

accessibile in internet per tutti

Descrizione: Tesi di laurea magistrale
Dimensione 650.35 kB
Formato Adobe PDF
650.35 kB 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/214367