Sari la conținut

Partiționarea domeniului

Atunci când o plasă de mari dimensiuni este analizată în paralel folosind mai multe procese, plasa cu un singur domeniu trebuie mai întâi împărțită în subdomenii, iar informațiile necesare pentru atribuirea fiecărui proces și pentru comunicația între domenii trebuie generate în prealabil. Această etapă de preprocesare se numește partiționarea domeniului.

În calculul paralel FrontISTR, hecmw_part1 împarte o plasă cu un singur domeniu în subdomenii și creează date de plasă distribuită. Datele generate sunt citite de fistr1 în execuție paralelă și utilizate de solverul paralel împreună cu informațiile necesare comunicației între domenii.

Această pagină descrie tipul de partiționare, metoda de partiționare, adâncimea de suprapunere și tratarea punctelor de contact selectate pentru partiționarea domeniului. Pentru procedura de execuție hecmw_part1, sintaxa concretă a fișierului de control și mesajele de eroare, consultați subiectele conexe.

Prezentare generală

Partiționarea domeniului este procesul de împărțire a unei plase cu un singur domeniu în mai multe subdomenii. FrontISTR creează date de plasă distribuită combinând tipul de partiționare, metoda de partiționare, numărul de domenii și adâncimea de suprapunere.

Criteriu de selecție Opțiuni principale Rol
Tip de partiționare Partiționare bazată pe noduri, partiționare bazată pe elemente Stabilește dacă proprietatea este atribuită după nod sau după element.
Metodă de partiționare RCB, METIS (pMETIS / kMETIS) Stabilește modul de creare a frontierelor domeniilor.
Număr de domenii Orice întreg pozitiv (\(2^n\) pentru RCB) Stabilește numărul de subdomenii din datele plasei distribuite. În mod normal, acesta corespunde numărului de procese MPI.
Adâncime de suprapunere Întreg mai mare sau egal cu 1 Stabilește domeniul păstrat redundant de subdomeniile vecine. Se specifică pentru partiționarea bazată pe noduri.
Tabele de comunicație Informații de import/export, informații partajate Definesc schimbul de date necesar între subdomeniile vecine. Sunt generate automat la partiționarea domeniului.

Deoarece tabelele de comunicație sunt incluse în datele plasei distribuite, utilizatorii nu trebuie în mod normal să le editeze direct. fistr1 în execuție paralelă citește datele plasei distribuite și rezolvă ecuațiile liniare folosind o metodă directă paralelă, precum MUMPS, sau o metodă iterativă.

Alegerea configurației de partiționare a domeniului

Pentru analize structurale și de conducție termică obișnuite, în general trebuie luată mai întâi în considerare partiționarea bazată pe noduri. Aceasta simplifică comunicația valorilor nodale necesare în analiza paralelă cu elemente finite și permite totodată specificarea adâncimii de suprapunere. Partiționarea bazată pe elemente este o opțiune pentru aplicații precum analiza cuplată, în care informațiile partiționate sunt tratate în principal la nivel de element.

Alegeți metoda de partiționare în funcție de geometrie și de numărul de domenii. Pentru geometrii simple în care numărul de domenii poate fi \(2^n\), RCB este o alegere simplă și stabilă. Pentru geometrii complexe sau când este necesar un număr arbitrar de domenii, METIS, bazat pe partiționarea grafurilor, este o opțiune.

Caracteristicile problemei Alegere recomandată
Analiză structurală sau de conducție termică paralelă standard Partiționare bazată pe noduri
Aplicații care utilizează informații distribuite centrate pe element, precum analiza cuplată Partiționare bazată pe elemente
Geometrie simplă apropiată de un paralelipiped dreptunghic, cu \(2^n\) domenii RCB
Geometrie complexă sau număr arbitrar de domenii METIS
Probleme de contact sau cu constrângeri MPC care folosesc precondiționatorul SAINV Utilizați partiționarea bazată pe noduri cu adâncime de suprapunere de cel puțin 2

Numărul de domenii este în mod normal egal cu numărul de procese MPI. Pentru procedura de execuție paralelă și specificarea numărului de procese, consultați Analiză paralelă. Pentru relația dintre precondiționatorul SAINV și adâncimea de suprapunere, consultați și Solver și precondiționatoare.

Tipuri de partiționare

Tipul de partiționare stabilește ce entitate a plasei primește proprietate unică într-un subdomeniu. Partiționarea bazată pe noduri atribuie proprietatea nodurilor, iar cea bazată pe elemente o atribuie elementelor. În ambele cazuri, informațiile necesare calculului cu subdomeniile vecine sunt păstrate ca date de suprapunere.

Partiționare bazată pe noduri

În partiționarea bazată pe noduri, fiecare nod este atribuit exact unui subdomeniu proprietar. Elementele sunt păstrate cu suprapunere în subdomeniile vecine. În datele de intrare, aceasta se specifică prin !PARTITION, TYPE=NODE-BASED.

Conceptul partiționării bazate pe noduri

Figura 10.1 Conceptul partiționării bazate pe noduri

Fiecare subdomeniu păstrează nodurile sale interne, elementele care conțin aceste noduri interne și nodurile care alcătuiesc acele elemente.

Noduri și elemente păstrate de fiecare subdomeniu în partiționarea bazată pe noduri

Figura 10.2 Noduri și elemente păstrate de fiecare subdomeniu în partiționarea bazată pe noduri

Tabelele de comunicație pentru partiționarea bazată pe noduri conțin următoarele informații.

  • Noduri importate: noduri utilizate într-un subdomeniu, dar deținute de alt subdomeniu.
  • Noduri exportate: noduri interne care sunt noduri importate ale altui subdomeniu.
  • Elemente partajate: elemente partajate cu alte subdomenii.

Noduri importate în partiționarea bazată pe noduri

Figura 10.3 Noduri importate în partiționarea bazată pe noduri

Noduri exportate în partiționarea bazată pe noduri

Figura 10.4 Noduri exportate în partiționarea bazată pe noduri

Elemente partajate în partiționarea bazată pe noduri

Figura 10.5 Elemente partajate în partiționarea bazată pe noduri

Partiționare bazată pe elemente

În partiționarea bazată pe elemente, fiecare element este atribuit exact unui subdomeniu proprietar. Nodurile sunt păstrate cu suprapunere în subdomeniile vecine. În datele de intrare, aceasta se specifică prin !PARTITION, TYPE=ELEMENT-BASED.

Conceptul partiționării bazate pe elemente

Figura 10.6 Conceptul partiționării bazate pe elemente

Fiecare subdomeniu păstrează elementele sale interne, nodurile care alcătuiesc aceste elemente interne și elementele care conțin acele noduri.

Noduri și elemente păstrate de fiecare subdomeniu în partiționarea bazată pe elemente

Figura 10.7 Noduri și elemente păstrate de fiecare subdomeniu în partiționarea bazată pe elemente

Tabelele de comunicație pentru partiționarea bazată pe elemente conțin următoarele informații.

  • Elemente importate: elemente utilizate într-un subdomeniu, dar deținute de alt subdomeniu.
  • Elemente exportate: elemente interne care sunt elemente importate ale altui subdomeniu.
  • Noduri partajate: noduri partajate cu alte subdomenii.

Elemente importate în partiționarea bazată pe elemente

Figura 10.8 Elemente importate în partiționarea bazată pe elemente

Elemente exportate în partiționarea bazată pe elemente

Figura 10.9 Elemente exportate în partiționarea bazată pe elemente

Noduri partajate în partiționarea bazată pe elemente

Figura 10.10 Noduri partajate în partiționarea bazată pe elemente

Pentru ambele tipuri de partiționare, hecmw_part1 generează automat tabelele de comunicație și le scrie în datele plasei distribuite. Prin urmare, utilizatorii nu trebuie în mod normal să creeze direct informațiile de import/export.

Metode de partiționare

Metoda de partiționare stabilește modul în care sunt create frontierele subdomeniilor. FrontISTR acceptă RCB bazat pe coordonate și METIS bazat pe partiționarea grafurilor.

Metodă de partiționare Caracteristici Constrângeri și observații principale
RCB Împarte recursiv plasa în două pe baza valorilor coordonatelor. Oferă o partiționare rapidă pentru geometrii simple. Numărul de domenii este limitat la \(2^n\). Trebuie specificate axele de partiționare.
pMETIS Utilizează partiționarea grafurilor ținând seama de conectivitatea dintre domenii. Disponibil în build-uri cu METIS activat.
kMETIS Utilizează partiționarea multiway a grafurilor, fiind potrivit pentru crearea frontierelor de domeniu în geometrii complexe. Disponibil în build-uri cu METIS activat.

RCB înseamnă Recursive Coordinate Bisection și împarte repetat plasa în două de-a lungul axelor de coordonate. Este potrivit atunci când numărul de domenii poate fi \(2^n\) și este ușor de utilizat pentru geometrii simple, de tip paralelipiped.

METIS tratează conectivitatea plasei ca pe un graf și creează subdomenii prin partiționarea grafurilor. Este o opțiune pentru geometrii complexe sau atunci când numărul de domenii nu trebuie limitat la \(2^n\). Pentru utilizarea METIS, biblioteca METIS trebuie activată la compilare. Pentru gestionarea dependențelor, consultați Dependențe obligatorii și opționale.

Adâncimea de suprapunere

Adâncimea de suprapunere reprezintă numărul de straturi din regiunea păstrată redundant de subdomeniile vecine. Pentru partiționarea bazată pe noduri, !PARTITION permite specificarea prin parametrul DEPTH a unui întreg mai mare sau egal cu 1. Adâncimea de suprapunere implicită este 1.

Pentru analiza paralelă obișnuită, DEPTH=1 este suficient. Totuși, atunci când un precondiționator din familia SAI, precum SAINV, este utilizat pentru o problemă de contact sau cu constrângeri MPC, creșterea adâncimii de suprapunere la 2 sau mai mult poate îmbunătăți calitatea precondiționatorului.

O adâncime de suprapunere de cel puțin 2 este necesară și atunci când formularea selectivă de netezire pe muchii/noduri (FORM341=SELECTIVE_ESNS) este utilizată cu elementul tetraedric liniar 341 în calcul paralel MPI. Netezirea bazată pe muchii și pe noduri face media mărimilor pe elementele adiacente elementului țintă; prin urmare, asamblarea rigidității într-un subdomeniu necesită informații de la elemente aflate la două niveluri de adiacență, iar cu valoarea implicită DEPTH=1 netezirea în apropierea frontierelor domeniului este insuficientă. Pentru detalii despre formularea elementului, consultați Biblioteca de elemente.

Creșterea adâncimii de suprapunere mărește numărul de noduri și elemente păstrate de subdomeniile vecine și, în consecință, atât consumul de memorie, cât și volumul comunicațiilor. Valoarea trebuie stabilită echilibrând îmbunătățirea convergenței cu creșterea costului de calcul. Pentru selectarea precondiționatorului, consultați Solver și precondiționatoare.

Tratarea punctelor de contact

La partiționarea unei plase care conține perechi de contact, !PARTITION permite utilizarea parametrului CONTACT pentru specificarea politicii de plasare pe domenii a punctelor de contact. Plasarea punctelor de contact afectează stabilitatea și volumul comunicațiilor în analizele paralele care implică căutarea contactului și constrângeri de contact.

Valoare Rol
DEFAULT Utilizează politica standard de plasare.
SIMPLE Utilizează o plasare apropiată de partiționarea obișnuită, fără a atribui ponderi speciale punctelor de contact.
AGGREGATE Partiționează astfel încât nodurile asociate perechilor de contact să tindă să fie grupate.
DISTRIBUTE Partiționează astfel încât nodurile de contact de pe partea master să fie mai puțin concentrate în anumite subdomenii.

Pentru plasele fără contact, parametrul CONTACT nu necesită în general atenție. Dacă apar probleme de convergență sau de echilibrare a sarcinii într-o analiză paralelă cu contact, revizuiți politica de plasare a punctelor de contact. Pentru detalii despre sintaxa de intrare, consultați !PARTITION.

Independent de aceasta, parametrul CONTACT_OWNER poate fi utilizat pentru a selecta schema de proprietate pentru contactul paralel. În timp ce CONTACT specifică „cum se partiționează”, CONTACT_OWNER specifică „ce parte este responsabilă după partiționare”.

Valoare Rol
MASTER Schema cu proprietar master (implicită). Suprafața master este partiționată după domeniile proprietare ale elementelor, iar nodurile slave sunt replicate în fiecare domeniu proprietar master.
SLAVE Schema cu proprietar slave. Fiecare nod slave este păstrat numai de domeniul său proprietar, iar întreaga suprafață master este plasată în acel domeniu.

Pentru alunecare finită (INTERACTION=FSLID la !CONTACT), atunci când un nod slave traversează o frontieră de partiționare a domeniului pe suprafața master, schema MASTER poate întrerupe căutarea de adiacență la frontieră, ceea ce poate duce la pierderea stării de contact și a istoricului de frecare și poate face soluția dependentă de numărul de domenii. Schema SLAVE evită această problemă. Ea poate fi specificată numai când TYPE=NODE-BASED; consumul de memorie crește în domeniile care dețin noduri slave.

Outputting a Partiționarea domeniului Image

Prin !PARTITION, specificarea parametrului UCD produce un fișier UCD pentru verificarea rezultatului partiționării. Fișierul UCD poate fi utilizat cu instrumente de vizualizare precum MicroAVS pentru a inspecta numerele domeniilor și frontierele partiționării.

După modificarea numărului de domenii, a metodei de partiționare sau a adâncimii de suprapunere, este important să se verifice dacă există dezechilibre între domeniile partiționate sau fragmentări nefirești. Ieșirea UCD este o funcție auxiliară pentru verificarea validității partiționării înainte de rularea analizei paralele.

Subiecte conexe

  • Analiză paralelă — Procedura de execuție hecmw_part1, fișierele de intrare și verificarea ieșirii datelor plasei distribuite.
  • Solver și precondiționatoare — Solvere paralele, precondiționatoare și relația dintre SAINV și adâncimea de suprapunere.
  • Lista mesajelor de eroare — Mesaje de eroare reprezentative de la hecmw_part1 și fistr1.
  • Metoda paralelă a elementelor finite — Fundamentele teoretice ale descompunerii domeniului și ale metodelor paralele cu elemente finite.
  • !PARTITION — Sintaxa de intrare pentru datele de control ale utilitarului de partiționare a domeniului.
AI-assisted translation May contain errors Official docs Status