Vai al contenuto

Partizionamento della mesh

Quando una mesh di grandi dimensioni viene analizzata in parallelo mediante più processi, è necessario suddividere la mesh di un singolo dominio in sottodomini e generare in anticipo le informazioni necessarie per assegnare a ciascun processo il proprio dominio e per la comunicazione tra domini. Questa fase di pre-elaborazione è detta partizionamento della mesh.

Nel calcolo parallelo di FrontISTR, hecmw_part1 suddivide una mesh di un singolo dominio in sottodomini e crea i dati di mesh distribuita. I dati di mesh distribuita generati vengono letti da fistr1 in modalità parallela e utilizzati dal solver parallelo insieme alle informazioni necessarie per la comunicazione tra domini.

Questa pagina descrive il tipo di partizionamento, il metodo di partizionamento, la profondità di sovrapposizione e la gestione dei punti di contatto selezionati per il partizionamento della mesh. Per la procedura di esecuzione di hecmw_part1, la sintassi specifica del file di controllo e i messaggi di errore, consultare gli argomenti correlati.

Panoramica delle funzioni

Il partizionamento della mesh è il processo di suddivisione di una mesh di un singolo dominio in più sottodomini. FrontISTR crea dati di mesh distribuita combinando tipo di partizionamento, metodo di partizionamento, numero di domini e profondità di sovrapposizione.

Criterio di scelta Opzioni principali Ruolo
Tipo di partizionamento Partizionamento basato sui nodi, partizionamento basato sugli elementi Determina se l’appartenenza viene assegnata per nodo o per elemento.
Metodo di partizionamento RCB, METIS (pMETIS / kMETIS) Determina come vengono creati i confini dei domini.
Numero di domini Qualsiasi intero positivo (\(2^n\) per RCB) Determina il numero di sottodomini nei dati di mesh distribuita. Normalmente coincide con il numero di processi MPI.
Profondità di sovrapposizione Intero maggiore o uguale a 1 Determina l’estensione mantenuta in modo ridondante dai domini adiacenti. Viene specificata per il partizionamento basato sui nodi.
Tabelle di comunicazione Informazioni di importazione/esportazione, informazioni condivise Definisce lo scambio di dati necessario tra sottodomini adiacenti. Vengono generate automaticamente durante il partizionamento della mesh.

Poiché le tabelle di comunicazione sono incluse nei dati di mesh distribuita, nelle analisi normali l’utente non deve modificarle direttamente. fistr1 in modalità parallela legge questi dati e risolve le equazioni lineari mediante un metodo diretto parallelo, come MUMPS, oppure mediante un metodo iterativo.

Scelta del partizionamento

Per le comuni analisi strutturali e di conduzione termica, in genere si considera anzitutto il partizionamento basato sui nodi. Esso facilita la comunicazione dei valori nodali necessaria nell’analisi agli elementi finiti parallela e consente anche di specificare la profondità di sovrapposizione. Il partizionamento basato sugli elementi è invece una possibile scelta per applicazioni, come le analisi accoppiate, in cui si desidera gestire principalmente per elemento le informazioni distribuite dopo il partizionamento.

Il metodo di partizionamento va scelto in base alla geometria e al numero di domini. Per geometrie semplici, quando il numero di domini può essere \(2^n\), RCB rappresenta una scelta semplice e stabile. Per geometrie complesse o quando è necessario un numero arbitrario di domini, è indicato METIS, basato sulla partizione di grafi.

Caratteristiche del problema Scelta consigliata
Analisi parallela strutturale o di conduzione termica standard Partizionamento basato sui nodi
Applicazioni che utilizzano informazioni distribuite centrate sugli elementi, come le analisi accoppiate Partizionamento basato sugli elementi
Geometria semplice prossima a un parallelepipedo, con \(2^n\) domini RCB
Geometria complessa o numero arbitrario di domini METIS
Problemi di contatto o con vincoli MPC che utilizzano il precondizionatore SAINV Usare il partizionamento basato sui nodi con una profondità di sovrapposizione pari o superiore a 2

Il numero di domini viene normalmente fatto coincidere con il numero di processi MPI. Per la procedura di esecuzione parallela e la specifica del numero di processi, consultare Analisi parallela. Per la relazione tra il precondizionatore SAINV e la profondità di sovrapposizione, consultare anche Solver e precondizionamento.

Tipi di partizionamento

Il tipo di partizionamento determina a quale entità della mesh viene assegnata un’unica appartenenza a un sottodominio. Il partizionamento basato sui nodi assegna l’appartenenza ai nodi, mentre quello basato sugli elementi la assegna agli elementi. In entrambi i casi, le informazioni necessarie ai calcoli con i sottodomini adiacenti vengono conservate come dati di sovrapposizione.

Partizionamento basato sui nodi

Nel partizionamento basato sui nodi, ogni nodo viene assegnato a un unico sottodominio di appartenenza. Nei sottodomini adiacenti gli elementi vengono mantenuti con sovrapposizione. Nell’input, questa modalità è specificata con !PARTITION, TYPE=NODE-BASED.

Concetto di partizionamento basato sui nodi

Figura 10.1 Concetto di partizionamento basato sui nodi

Ogni sottodominio conserva i propri nodi interni, gli elementi che contengono tali nodi interni e i nodi che costituiscono tali elementi.

Nodi ed elementi conservati da ciascun sottodominio nel partizionamento basato sui nodi

Figura 10.2 Nodi ed elementi conservati da ciascun sottodominio nel partizionamento basato sui nodi

Le tabelle di comunicazione per il partizionamento basato sui nodi contengono le seguenti informazioni.

  • Nodi di importazione: nodi utilizzati in un sottodominio ma appartenenti a un altro sottodominio.
  • Nodi di esportazione: nodi interni che costituiscono nodi di importazione di un altro sottodominio.
  • Elementi condivisi: elementi condivisi con altri sottodomini.

Nodi di importazione nel partizionamento basato sui nodi

Figura 10.3 Nodi di importazione nel partizionamento basato sui nodi

Nodi di esportazione nel partizionamento basato sui nodi

Figura 10.4 Nodi di esportazione nel partizionamento basato sui nodi

Elementi condivisi nel partizionamento basato sui nodi

Figura 10.5 Elementi condivisi nel partizionamento basato sui nodi

Partizionamento basato sugli elementi

Nel partizionamento basato sugli elementi, ogni elemento viene assegnato a un unico sottodominio di appartenenza. Nei sottodomini adiacenti i nodi vengono mantenuti con sovrapposizione. Nell’input, questa modalità è specificata con !PARTITION, TYPE=ELEMENT-BASED.

Concetto di partizionamento basato sugli elementi

Figura 10.6 Concetto di partizionamento basato sugli elementi

Ogni sottodominio conserva i propri elementi interni, i nodi che costituiscono tali elementi interni e gli elementi che contengono tali nodi.

Nodi ed elementi conservati da ciascun sottodominio nel partizionamento basato sugli elementi

Figura 10.7 Nodi ed elementi conservati da ciascun sottodominio nel partizionamento basato sugli elementi

Le tabelle di comunicazione per il partizionamento basato sugli elementi contengono le seguenti informazioni.

  • Elementi di importazione: elementi utilizzati in un sottodominio ma appartenenti a un altro sottodominio.
  • Elementi di esportazione: elementi interni che costituiscono elementi di importazione di un altro sottodominio.
  • Nodi condivisi: nodi condivisi con altri sottodomini.

Elementi di importazione nel partizionamento basato sugli elementi

Figura 10.8 Elementi di importazione nel partizionamento basato sugli elementi

Elementi di esportazione nel partizionamento basato sugli elementi

Figura 10.9 Elementi di esportazione nel partizionamento basato sugli elementi

Nodi condivisi nel partizionamento basato sugli elementi

Figura 10.10 Nodi condivisi nel partizionamento basato sugli elementi

Per entrambi i tipi di partizionamento, hecmw_part1 genera automaticamente le tabelle di comunicazione e le scrive nei dati di mesh distribuita. Pertanto, nelle analisi normali l’utente non deve creare direttamente le informazioni di importazione/esportazione.

Metodi di partizionamento

Il metodo di partizionamento determina come vengono creati i confini dei sottodomini. FrontISTR supporta RCB basato sulle coordinate e METIS basato sulla partizione di grafi.

Metodo di partizionamento Caratteristiche Vincoli e note principali
RCB Suddivide ricorsivamente la mesh in due parti in base ai valori delle coordinate. Consente un partizionamento rapido per geometrie semplici. Il numero di domini è limitato a \(2^n\). È necessario specificare gli assi di partizionamento.
pMETIS Utilizza la partizione di grafi tenendo conto della connettività tra i domini. Disponibile nelle build con METIS abilitato.
kMETIS Utilizza la partizione multiway di grafi, facilitando la creazione dei confini dei domini anche per geometrie complesse. Disponibile nelle build con METIS abilitato.

RCB è l’acronimo di Recursive Coordinate Bisection e suddivide ripetutamente la mesh in due lungo gli assi delle coordinate. È adatto quando il numero di domini può essere \(2^n\) ed è semplice da usare per geometrie regolari simili a un parallelepipedo.

METIS tratta la connettività della mesh come un grafo e crea i sottodomini mediante partizione del grafo. È una possibile scelta per geometrie complesse o quando non si desidera limitare il numero di domini a \(2^n\). Per utilizzare METIS, la libreria METIS deve essere abilitata in fase di compilazione. Per la gestione delle dipendenze, consultare Dipendenze obbligatorie e opzionali.

Profondità di sovrapposizione

La profondità di sovrapposizione è il numero di strati nell’area mantenuta in modo ridondante dai sottodomini adiacenti. Per il partizionamento basato sui nodi, con !PARTITION è possibile specificare mediante il parametro DEPTH un intero maggiore o uguale a 1. Se omesso, la profondità di sovrapposizione è 1.

Per le normali analisi parallele, DEPTH=1 è sufficiente. Tuttavia, quando un precondizionatore della famiglia SAI, come SAINV, viene utilizzato per un problema di contatto o un problema con vincoli MPC, aumentare la profondità di sovrapposizione a 2 o più può migliorare la qualità del precondizionamento.

Una profondità di sovrapposizione pari o superiore a 2 è necessaria anche quando la formulazione di smoothing selettivo di spigoli/nodi (FORM341=SELECTIVE_ESNS) viene utilizzata con l’elemento tetraedrico di primo ordine 341 in calcolo parallelo MPI. Lo smoothing basato sugli spigoli o sui nodi media le grandezze sugli elementi adiacenti all’elemento considerato; per assemblare la rigidezza all’interno di un sottodominio sono quindi necessarie informazioni sugli elementi distanti due livelli di adiacenza. Con il valore predefinito DEPTH=1, lo smoothing vicino ai confini del dominio è insufficiente. Per i dettagli sulla formulazione dell’elemento, consultare Libreria degli elementi.

Aumentando la profondità di sovrapposizione aumenta il numero di nodi ed elementi conservati dai sottodomini adiacenti e, di conseguenza, aumentano anche l’uso di memoria e il volume delle comunicazioni. L’impostazione va scelta bilanciando il miglioramento della convergenza con l’aumento del costo computazionale. Per la scelta del precondizionatore, consultare Solver e precondizionamento.

Gestione dei punti di contatto

Quando si suddivide una mesh contenente coppie di contatto, il parametro CONTACT della scheda !PARTITION permette di specificare la politica di collocazione dei punti di contatto nei domini. La collocazione dei punti di contatto influisce sulla stabilità e sul volume delle comunicazioni nelle analisi parallele che includono la ricerca del contatto e i vincoli di contatto.

Valore Ruolo
DEFAULT Utilizza la politica di collocazione standard.
SIMPLE Utilizza una collocazione simile al partizionamento ordinario senza assegnare pesi speciali ai punti di contatto.
AGGREGATE Esegue il partizionamento in modo da tendere a raggruppare i nodi associati alle coppie di contatto.
DISTRIBUTE Esegue il partizionamento in modo che i nodi del lato master del contatto siano meno concentrati in determinati sottodomini.

Per le mesh prive di contatto, in genere non è necessario considerare il parametro CONTACT. Se in un’analisi parallela con contatto si riscontrano problemi di convergenza o di bilanciamento del carico, rivedere la politica di collocazione dei punti di contatto. Per i dettagli sulla sintassi di input, consultare !PARTITION.

Indipendentemente da ciò, il parametro CONTACT_OWNER consente di selezionare lo schema di proprietà del contatto parallelo. Mentre CONTACT specifica “come partizionare”, CONTACT_OWNER specifica “quale lato è responsabile dopo il partizionamento”.

Valore Ruolo
MASTER Schema con proprietà master (predefinito). La superficie master viene partizionata in base ai domini proprietari degli elementi e i nodi slave vengono replicati in ciascun dominio proprietario master.
SLAVE Schema con proprietà slave. Ogni nodo slave viene mantenuto solo nel proprio dominio proprietario e l’intera superficie master viene collocata in tale dominio.

Nello scorrimento finito (!CONTACT con INTERACTION=FSLID), quando un nodo slave attraversa un confine di partizionamento del dominio sulla superficie master, con lo schema MASTER la ricerca delle adiacenze può interrompersi al confine, causando la perdita dello stato di contatto e della cronologia dell’attrito e rendendo la soluzione dipendente dal numero di domini. Lo schema SLAVE evita questo problema. Può essere specificato solo quando TYPE=NODE-BASED; l’uso della memoria aumenta nei domini che possiedono nodi slave.

Output dell’immagine del partizionamento

Specificando il parametro UCD della scheda !PARTITION, è possibile generare un file UCD per verificare il risultato del partizionamento. Il file UCD può essere utilizzato con strumenti di visualizzazione come MicroAVS per controllare i numeri dei domini e i confini del partizionamento.

Dopo aver modificato il numero di domini, il metodo di partizionamento o la profondità di sovrapposizione, è importante verificare che non vi siano sbilanciamenti tra i domini suddivisi o frammentazioni innaturali. L’output UCD è una funzione ausiliaria per verificare la validità del partizionamento prima di eseguire l’analisi parallela.

Argomenti correlati