Domeinpartitionering¶
Wanneer een grootschalige mesh parallel met meerdere processen wordt geanalyseerd, moet de mesh met één domein eerst in subdomeinen worden verdeeld en moet vooraf de informatie worden gegenereerd die nodig is voor toewijzing aan elk proces en voor communicatie tussen domeinen. Deze voorbewerkingsstap wordt domeinpartitionering genoemd.
Bij parallelle berekeningen met FrontISTR partitioneert hecmw_part1 een mesh met één domein in subdomeinen en maakt het gedistribueerde meshgegevens. De gegenereerde gedistribueerde meshgegevens worden door parallel fistr1 gelezen en samen met de informatie die nodig is voor communicatie tussen domeinen door de parallelle oplosser gebruikt.
Deze pagina beschrijft het partitietype, de partitioneringsmethode, de overlapdiepte en de behandeling van contactpunten die voor domeinpartitionering worden geselecteerd. Zie de gerelateerde onderwerpen voor de uitvoeringsprocedure van hecmw_part1, de specifieke syntaxis van het besturingsbestand en foutmeldingen.
Overzicht¶
Domeinpartitionering is het proces waarbij een mesh met één domein in meerdere subdomeinen wordt verdeeld. FrontISTR maakt gedistribueerde meshgegevens door een partitietype, partitioneringsmethode, aantal domeinen en overlapdiepte te combineren.
| Selectie-as | Belangrijkste opties | Rol |
|---|---|---|
| Partitietype | Knooppuntgebaseerde partitionering, elementgebaseerde partitionering | Bepaalt of eigenaarschap per knoop of per element wordt toegewezen. |
| Partitioneringsmethode | RCB, METIS (pMETIS / kMETIS) | Bepaalt hoe domeingrenzen worden gemaakt. |
| Aantal domeinen | Willekeurig positief geheel getal (\(2^n\) voor RCB) | Bepaalt het aantal subdomeinen in de gedistribueerde meshgegevens. Normaal wordt dit afgestemd op het aantal MPI-processen. |
| Overlapdiepte | Geheel getal van 1 of groter | Bepaalt het bereik dat redundant door aangrenzende domeinen wordt behouden. Opgegeven voor knooppuntgebaseerde partitionering. |
| Communicatietabellen | Import-/exportinformatie, gedeelde informatie | Definieert de gegevensuitwisseling die nodig is tussen aangrenzende subdomeinen. Wordt automatisch gegenereerd tijdens domeinpartitionering. |
Omdat de communicatietabellen in de gedistribueerde meshgegevens zijn opgenomen, hoeven gebruikers ze normaal niet rechtstreeks te bewerken. Parallel fistr1 leest de gedistribueerde meshgegevens en lost de lineaire vergelijkingen op met een parallelle directe methode zoals MUMPS of een iteratieve methode.
Een configuratie voor domeinpartitionering kiezen¶
Voor gewone structurele en warmtegeleidingsanalyses moet in het algemeen eerst knooppuntgebaseerde partitionering worden overwogen. Knooppuntgebaseerde partitionering maakt de communicatie van nodale waarden die nodig zijn bij parallelle eindige-elementenanalyse eenvoudig en maakt het ook mogelijk de overlapdiepte op te geven. Elementgebaseerde partitionering is een optie voor toepassingen zoals gekoppelde analyse waarbij de gepartitioneerde informatie hoofdzakelijk per element moet worden behandeld.
Kies de partitioneringsmethode op basis van de geometrie en het aantal domeinen. Voor eenvoudige geometrieën waarbij het aantal domeinen \(2^n\) kan zijn, is RCB een eenvoudige en stabiele keuze. Voor complexe geometrieën of wanneer een willekeurig aantal domeinen vereist is, is METIS, dat op grafiekpartitionering is gebaseerd, een kandidaat.
| Probleemkenmerken | Aanbevolen keuze |
|---|---|
| Standaard parallelle structurele of warmtegeleidingsanalyse | Knooppuntgebaseerde partitionering |
| Toepassingen met elementgecentreerde gedistribueerde informatie, zoals gekoppelde analyse | Elementgebaseerde partitionering |
| Eenvoudige geometrie dicht bij een rechthoekig blok, met \(2^n\) domeinen | RCB |
| Complexe geometrie of willekeurig aantal domeinen | METIS |
| Contact- of MPC-beperkte problemen met de SAINV-preconditioner | Gebruik knooppuntgebaseerde partitionering met een overlapdiepte van 2 of groter |
Het aantal domeinen wordt normaal afgestemd op het aantal MPI-processen. Zie Parallelle analyse voor de procedure voor parallelle uitvoering en de specificatie van het aantal processen. Zie ook Oplosser en preconditioners voor de relatie tussen de SAINV-preconditioner en de overlapdiepte.
Partitietypen¶
Het partitietype bepaalt aan welke meshentiteit uniek eigenaarschap door een subdomein wordt toegewezen. Knooppuntgebaseerde partitionering wijst eigenaarschap toe aan knopen, terwijl elementgebaseerde partitionering eigenaarschap aan elementen toewijst. In beide gevallen wordt informatie die nodig is voor berekening met aangrenzende subdomeinen als overlapgegevens behouden.
Knooppuntgebaseerde partitionering¶
Bij knooppuntgebaseerde partitionering wordt elke knoop aan precies één eigenaarsubdomein toegewezen. Elementen worden met overlap in aangrenzende subdomeinen behouden. In de invoer wordt dit opgegeven met !PARTITION, TYPE=NODE-BASED.

Elk subdomein behoudt zijn interne knopen, de elementen die deze interne knopen bevatten en de knopen waaruit die elementen bestaan.

De communicatietabellen voor knooppuntgebaseerde partitionering bevatten de volgende informatie.
- Importknopen: knopen die in een subdomein worden gebruikt maar eigendom zijn van een ander subdomein.
- Exportknopen: interne knopen die importknopen van een ander subdomein zijn.
- Gedeelde elementen: elementen die met andere subdomeinen worden gedeeld.



Elementgebaseerde partitionering¶
Bij elementgebaseerde partitionering wordt elk element aan precies één eigenaarsubdomein toegewezen. Knopen worden met overlap in aangrenzende subdomeinen behouden. In de invoer wordt dit opgegeven met !PARTITION, TYPE=ELEMENT-BASED.

Elk subdomein behoudt zijn interne elementen, de knopen waaruit deze interne elementen bestaan en de elementen die deze knopen bevatten.

De communicatietabellen voor elementgebaseerde partitionering bevatten de volgende informatie.
- Importelementen: elementen die in een subdomein worden gebruikt maar eigendom zijn van een ander subdomein.
- Exportelementen: interne elementen die importelementen van een ander subdomein zijn.
- Gedeelde knopen: knopen die met andere subdomeinen worden gedeeld.



Voor beide partitietypen genereert hecmw_part1 de communicatietabellen automatisch en schrijft deze naar de gedistribueerde meshgegevens. Gebruikers hoeven import-/exportinformatie daarom normaal niet rechtstreeks aan te maken.
Partitioneringsmethoden¶
De partitioneringsmethode bepaalt hoe subdomeingrenzen worden gemaakt. FrontISTR ondersteunt coördinaatgebaseerde RCB en op grafiekpartitionering gebaseerde METIS.
| Partitioneringsmethode | Kenmerken | Belangrijkste beperkingen en opmerkingen |
|---|---|---|
| RCB | Deelt de mesh recursief in tweeën op basis van coördinaatwaarden. Biedt snelle partitionering voor eenvoudige geometrieën. | Het aantal domeinen is beperkt tot \(2^n\). Partitioneringsassen moeten worden opgegeven. |
| pMETIS | Gebruikt grafiekpartitionering waarbij rekening wordt gehouden met connectiviteit tussen domeinen. | Beschikbaar in builds waarin METIS is ingeschakeld. |
| kMETIS | Gebruikt multiway-grafiekpartitionering, waardoor het geschikt is voor het maken van domeingrenzen in complexe geometrieën. | Beschikbaar in builds waarin METIS is ingeschakeld. |
RCB staat voor Recursive Coordinate Bisection en deelt de mesh herhaaldelijk in tweeën langs coördinaatassen. Het is geschikt wanneer het aantal domeinen \(2^n\) kan zijn en is eenvoudig te gebruiken voor eenvoudige, blokvormige geometrieën.
METIS behandelt meshconnectiviteit als een grafiek en maakt subdomeinen via grafiekpartitionering. Het is een kandidaat voor complexe geometrieën of wanneer het aantal domeinen niet tot \(2^n\) moet worden beperkt. Om METIS te gebruiken, moet de METIS-bibliotheek tijdens het bouwen zijn ingeschakeld. Zie Vereiste en optionele afhankelijkheden voor de behandeling van afhankelijkheden.
Overlapdiepte¶
De overlapdiepte is het aantal lagen in het bereik dat redundant door aangrenzende subdomeinen wordt behouden. Voor knooppuntgebaseerde partitionering kan met !PARTITION via de parameter DEPTH een geheel getal van 1 of groter worden opgegeven. De standaardoverlapdiepte is 1.
Voor gewone parallelle analyse is DEPTH=1 voldoende. Wanneer echter een preconditioner uit de SAI-familie, zoals SAINV, wordt gebruikt voor een contactprobleem of een probleem met MPC-beperkingen, kan het verhogen van de overlapdiepte tot 2 of groter de kwaliteit van de preconditioner verbeteren.
Een overlapdiepte van 2 of groter is ook vereist wanneer de formulering met selectieve rand-/knooppuntsmoothing (FORM341=SELECTIVE_ESNS) wordt gebruikt met eerste-orde tetraëderelement 341 in parallelle MPI-berekeningen. Rand- en knooppuntgebaseerde smoothing middelen grootheden over elementen die grenzen aan het doelelement, zodat voor het assembleren van de stijfheid binnen een subdomein informatie nodig is van elementen op twee aangrenzendheidslagen afstand; met de standaard DEPTH=1 is smoothing nabij domeingrenzen onvoldoende. Zie Elementbibliotheek voor details over de elementformulering.
Het verhogen van de overlapdiepte vergroot het aantal knopen en elementen dat door aangrenzende subdomeinen wordt behouden en verhoogt daardoor zowel het geheugengebruik als het communicatievolume. Stel de waarde in door de verbeterde convergentie af te wegen tegen de hogere rekenkosten. Zie Oplosser en preconditioners voor de keuze van de preconditioner.
Behandeling van contactpunten¶
Bij het partitioneren van een mesh met contactparen kan met !PARTITION de parameter CONTACT worden gebruikt om het domeinplaatsingsbeleid voor contactpunten op te geven. De plaatsing van contactpunten beïnvloedt de stabiliteit en het communicatievolume van parallelle analyses met contactzoeking en contactbeperkingen.
| Waarde | Rol |
|---|---|
DEFAULT |
Gebruikt het standaardplaatsingsbeleid. |
SIMPLE |
Gebruikt een plaatsing die dicht bij gewone partitionering ligt, zonder speciale gewichten aan contactpunten toe te kennen. |
AGGREGATE |
Partitioneert op een manier die knopen die met contactparen samenhangen doorgaans groepeert. |
DISTRIBUTE |
Partitioneert zodat contactknopen aan de masterzijde minder snel in bepaalde subdomeinen worden geconcentreerd. |
Voor meshes zonder contact hoeft doorgaans geen aandacht aan de parameter CONTACT te worden besteed. Als convergentie of load balancing problematisch is bij parallelle analyse met contact, herzie dan het plaatsingsbeleid voor contactpunten. Zie !PARTITION voor details over de invoersyntaxis.
Los hiervan kan de parameter CONTACT_OWNER worden gebruikt om het eigenaarschapsschema voor parallel contact te selecteren. Waar CONTACT aangeeft "hoe te partitioneren", geeft CONTACT_OWNER aan "welke zijde na partitionering verantwoordelijk is".
| Waarde | Rol |
|---|---|
MASTER |
Master-owner-schema (standaard). Het masteroppervlak wordt gepartitioneerd volgens de domeinen die eigenaar zijn van de elementen, en slaveknopen worden naar elk domein dat eigenaar is van de master gerepliceerd. |
SLAVE |
Slave-owner-schema. Elke slaveknoop wordt alleen door zijn eigenaardomein behouden en het volledige masteroppervlak wordt in dat domein geplaatst. |
Bij finite sliding (!CONTACT met INTERACTION=FSLID) kan, wanneer een slaveknoop een domeinpartitioneringsgrens op het masteroppervlak overschrijdt, het MASTER-schema de aangrenzendheidszoekactie aan de grens onderbreken, waardoor de contacttoestand en wrijvingsgeschiedenis verloren gaan en de oplossing afhankelijk wordt van het aantal domeinen. Het SLAVE-schema vermijdt dit probleem. Het kan alleen worden opgegeven wanneer TYPE=NODE-BASED; het geheugengebruik neemt toe in domeinen die eigenaar zijn van slaveknopen.
Een afbeelding van de domeinpartitionering uitvoeren¶
Door bij !PARTITION de parameter UCD op te geven, wordt een UCD-bestand uitgevoerd om het partitioneringsresultaat te controleren. Het UCD-bestand kan met visualisatietools zoals MicroAVS worden gebruikt om domeinnummers en partitioneringsgrenzen te inspecteren.
Na het wijzigen van het aantal domeinen, de partitioneringsmethode of de overlapdiepte is het belangrijk te controleren op onbalans tussen de gepartitioneerde domeinen of onnatuurlijke fragmentatie. UCD-uitvoer is een hulpfunctie om vóór de parallelle analyse de geldigheid van de partitionering te verifiëren.
Gerelateerde onderwerpen¶
- Parallelle analyse — Uitvoeringsprocedure van
hecmw_part1, invoerbestanden en verificatie van de uitvoer van gedistribueerde meshgegevens. - Oplosser en preconditioners — Parallelle oplossers, preconditioners en de relatie tussen SAINV en overlapdiepte.
- Lijst met foutmeldingen — Representatieve foutmeldingen van
hecmw_part1enfistr1. - Parallelle eindige-elementenmethode — Theoretische achtergrond van domeindecompositie en parallelle eindige-elementenmethoden.
- !PARTITION — Invoersyntaxis voor de besturingsgegevens van het domeinpartitioneringshulpprogramma.