!SOLVER¶
בקרת הפותר
נתוני בקרה חובה.
פרמטרים¶
METHOD = שיטת פתרון (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : שיטה ישירה למעט אנליזת מגע (עיבוד סדרתי בלבד) (אינה זמינה כעת)
DIRECTmkl : שיטה ישירה באמצעות Intel MKL
MUMPS : שיטה ישירה באמצעות MUMPS
כאשר נבחרת שיטה ישירה, מתעלמים משורות הנתונים.
בשיטות איטרטיביות ל-3 דרגות חופש ניתן להשתמש במקביליות תהליכונים באמצעות OpenMP
PRECOND = שיטת קדם־התניה לשיטה איטרטיבית (1,2,3,5,10,11,12,22)
1, 2 : (Block) SSOR (עם סידור רב־צבעי רק ל-3 דרגות חופש)
3 : (Block) Diagonal Scaling
5 : AMG באמצעות חבילת קדם־ההתניה הרב־רשתית ML
10 : Block ILU(0)
11 : Block ILU(1)
12 : Block ILU(2)
22 : AMG באמצעות SA-AMG המובנה ב־HEC-MW (Smoothed Aggregation AMG)
10, 11 ו-12 זמינים רק לבעיות עם 3 דרגות חופש
22 זמין רק בבניות שבהן LAPACK מופעל
במקביליות תהליכונים עם OpenMP מומלצים SSOR, Diagonal Scaling, ML או SA-AMG
ITERLOG = האם להפיק היסטוריית התכנסות של הפותר האיטרטיבי (YES/NO)(ברירת מחדל: NO)
TIMELOG = האם להפיק את זמן החישוב של הפותר (YES/NO/VERBOSE)(ברירת מחדל: NO)
LOGLEVEL = רמת פלט של מידע אבחוני לקדם־התניה (מספר שלם)(ברירת מחדל: ללא פלט)
מוגדרת בנפרד מ־ITERLOG ומ־TIMELOG
בערך 1 ומעלה מופקים מבנה ההיררכיה ומידע נוסף עבור קדם־התניית AMG (PRECOND=5,22)
בערך 2 ומעלה מופק מידע מפורט יותר (כגון שימוש בזיכרון)
USEJAD = האם להשתמש בסידור עבור מחשבי וקטור (YES/NO)(ברירת מחדל: NO)
תקף רק כאשר משתמשים בשיטה איטרטיבית בבעיה עם 3 דרגות חופש
SCALING = האם לבצע סקיילינג כך שרכיבי האלכסון של המטריצה יהיו 1 (YES/NO)(ברירת מחדל: NO)
תקף רק כאשר משתמשים בשיטה איטרטיבית בבעיה עם 3 דרגות חופש
DUMPTYPE = פורמט פלט של המטריצה(NONE, MM, CSR, BSR) (בעיקר לניפוי שגיאות)
NONE : ללא פלט(ברירת מחדל)
MM : פורמט Matrix Market
CSR : Compressed Sparse Row (CSR)
BSR : פורמט Blocked CSR
DUMPEXIT = סיום התוכנית מיד לאחר פלט של המטריצה (YES/NO)(ברירת מחדל: NO)
MPCMETHOD = שיטת טיפול באילוצי רב־נקודות(1,3)
1: שיטת קנס (ברירת המחדל בשיטה ישירה)
3: שיטת אלימינציה מפורשת של דרגות חופש (ברירת המחדל בשיטה איטרטיבית)
שיטת MPC-CG שמספרה 2 הוסרה. אם מצוין 2, מופקת אזהרה ונעשה שימוש בשיטת ברירת המחדל.
ESTCOND = תדירות הערכת מספר התנאי (ניסיוני)
מספר התנאי מוערך בכל מספר איטרציות שצוין ובסיום האיטרציות
כאשר הערך 0, לא מתבצעת הערכה
RECOMPUTE_RESIDUAL = תדירות החישוב מחדש של וקטור השארית
תקף רק כאשר METHOD מוגדר כ־CG, BiCGSTAB, GPBiCG או PipeCG
שיטות איטרטיביות מעדכנות את וקטור השארית באמצעות נוסחת נסיגה, ולכן מצטברות שגיאות עיגול
בכל מרווח איטרציות שצוין, וקטור השארית מחושב מחדש מתוך {b}-[A]{x}
כאשר מציינים 0, נעשה שימוש בערך ברירת המחדל של כל שיטה (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
כאשר מציינים ערך שלילי, לא מתבצע חישוב מחדש מחזורי
החישוב מחדש לצורך אימות ההתכנסות מתבצע תמיד ללא תלות בהגדרה זו
מרווח קצר מדי לא רק מגדיל את מספר מכפלות המטריצה־וקטור, אלא גם עלול
לפגוע בהתכנסות עצמה ואף למנוע מן הפתרון להתכנס
לאחר שינוי ערך ברירת המחדל, יש לבדוק את היסטוריית ההתכנסות ואת השארית היחסית הסופית
METHOD2 = שיטת פתרון מספר 2 (BiCGSTAB, GMRES, GPBiCG) (ניסיוני)
תקף רק כאשר METHOD מוגדר כ-CG
אם שיטת CG מתבדרת, עוברים אוטומטית לשיטה זו ומבצעים פתרון
שאר הפרמטרים והמידע בשורות הנתונים נשארים זהים
CONTACT_ELIM = הגדרה אם לבצע אלימינציה של דרגות חופש באנליזת מגע (0,1)
0: אלימינציה מתבצעת רק בשיטה איטרטיבית(ברירת מחדל)
1: תמיד לבצע אלימינציה (גם בשיטה ישירה)
** מהשורה השנייה ואילך **
| שם משתנה | סוג | תוכן |
|---|---|---|
| NITER | I | מספר איטרציות(ברירת מחדל: 100) |
| iterPREmax | I | מספר חזרות של קדם־התניה באמצעות Additive Schwarz(ברירת מחדל: 1) (הערך המומלץ הוא 1 (בחישוב מקבילי 2 עשוי להיות יעיל)) |
| NREST | I | ממד תת־מרחב Krylov(ברירת מחדל: 10) (תקף רק כאשר GMRES נבחר כשיטת הפתרון) |
| NCOLOR_IN | I | מספר צבעי היעד בסידור רב־צבעי(ברירת מחדל: 10) (תקף רק כאשר מספר תהליכוני OpenMP הוא 2 ומעלה) |
| RECYCLEPRE | I | מספר שימושים חוזרים במידע הגדרת קדם־ההתניה(ברירת מחדל: 3) (תקף רק באנליזה לא־ליניארית) |
| שם משתנה | סוג | תוכן |
|---|---|---|
| RESID | R | סבולת עצירה(ערך ברירת מחדל: 1.0e-8) |
| SIGMA_DIAG | R | מקדם הכפלה לרכיב האלכסוני בעת חישוב מטריצת קדם־ההתניה(ערך ברירת מחדל: 1.0) (אם בקדם־התניית ILU מתרחשת חלוקה באפס או התבדרות, ערך גדול מ-1.0 עשוי לאפשר פתרון) |
| SIGMA | R | לא בשימוש(ערך ברירת מחדל: 0.0) |
כאשר PRECOND=5 (ניתן להשמיט)¶
אם PRECOND מוגדר לערך שאינו 5 או 22, מתעלמים משורה 4.
| שם משתנה | סוג | תוכן |
|---|---|---|
| ML_CoarseSolver | I | פותר ML לרשת הגסה(1: שימוש במחליק במקום פותר, 2: KLU(שיטה ישירה סדרתית), 3: MUMPS(שיטה ישירה מקבילית))(ערך ברירת מחדל: 1) (לבעיות קשות לפתרון מומלץ 3 או 2; לבעיות רגילות 1) |
| ML_Smoother | I | המחליק של ML(1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi)(ערך ברירת מחדל: 1) (הערך המומלץ הוא 1) |
| ML_MGCycle | I | מחזור הרב־רשת של ML(1: V-cycle, 2: W-cycle, 3: Full-V-cycle)(ערך ברירת מחדל: 1) (לבעיות קשות לפתרון מומלץ 2; לבעיות רגילות 1) |
| ML_MaxLevels | I | מספר הרמות המרבי של ML(ערך ברירת מחדל: 10) (לבעיות קשות במיוחד מומלץ פותר גס בשיטה ישירה וערך 2 (או 3 אם אין די זיכרון); לבעיות רגילות 10) |
| ML_CoarseningScheme | I | סכמת ההגסה של ML(1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD)(ערך ברירת מחדל: 1) (הערך המומלץ הוא 1 או 5) |
| ML_NumSweep | I | מספר מעברי המחליק של ML(ב-Chebyshev זהו סדר הפולינום)(ערך ברירת מחדל: 2) (הערך המומלץ הוא 2 עבור Chebyshev ו-1 עבור SymBlockGaussSeidel) |
כאשר PRECOND=22 (ניתן להשמיט)¶
אם PRECOND מוגדר לערך שאינו 22, מתעלמים משורה 5. ניתן להשמיט את שורות 4 ו־5 בשלמותן, וכן להשמיט פריטים מסוף כל שורה. לכל פריט שערכו 0 נעשה שימוש בערך ברירת המחדל.
פריטים 1 עד 7 בשורה 4 מסודרים כמו בשורת האפשרויות של PRECOND=5 (ML), ולכן ניתן להשתמש בשורת האפשרויות של ML כפי שהיא. פריטים 8 עד 10 ייחודיים ל־SA-AMG.
(שורה 4) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (לא בשימוש), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (לא בשימוש)
| שם משתנה | סוג | תוכן |
|---|---|---|
| SA_CoarseSolver | I | פותר לרשת הגסה (0: אוטומטי, 1: שימוש במחליק, 2: שיטה ישירה למטריצה צפופה, 3: MUMPS (שיטה ישירה מקבילית)) (ברירת מחדל: 0) (במצב אוטומטי נעשה שימוש ב־MUMPS בבניות שבהן MUMPS מופעל; אחרת נעשה שימוש בשיטה הישירה למטריצה צפופה) |
| SA_Smoother | I | מחליק (0 או 1: Chebyshev) (ברירת מחדל: 0) (רק Chebyshev נתמך. אם מוגדר ערך אחר, מופקת אזהרה ונעשה שימוש ב־Chebyshev) |
| SA_MGCycle | I | מחזור רב־רשת (0: ברירת מחדל (W-cycle), 1: V-cycle, 2: W-cycle) (ברירת מחדל: 0) (Full-V-cycle אינו נתמך) |
| SA_MaxLevels | I | מספר הרמות המרבי (ברירת מחדל: 20) |
| (לא בשימוש) | I | המיקום המתאים לסכמת ההגסה של ML. מכיוון ש־SA-AMG משתמש תמיד באגרגציה בלתי־מצומדת, אם מצוין ערך שאינו 0 מופקת אזהרה ומתעלמים מהערך |
| SA_ChebyDegree | I | דרגת הפולינום של מחליק Chebyshev (ברירת מחדל: 2) |
| SA_CoarseSize | I | גודל הסף של הרשת הגסה (ברירת מחדל: 50000 כאשר MUMPS משמש כפותר הרשת הגסה; אחרת 100) |
| SA_MaxAggSize | I | הגודל המרבי של אגרגט (ברירת מחדל: 96) |
| SA_GalerkinLowMem | I | שיטת חישוב מטריצת הרשת הגסה (0: רגילה (עדיפות למהירות), ערך חיובי: חיסכון בזיכרון) (ברירת מחדל: 0) (יש להגדיר ערך חיובי אם הזיכרון אינו מספיק בעת ההכנה) |
| (לא בשימוש) | I | שמור להרחבות עתידיות |
שורה 5 ייחודית ל־SA-AMG ואינה נקראת על־ידי ML.
(שורה 5) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| שם משתנה | סוג | תוכן |
|---|---|---|
| SA_Theta | R | סף לקביעת קישורים חזקים (ברירת מחדל: 0.0) (בערך 0.0 המבנה הלא־אפסי של המטריצה משמש ישירות כגרף) |
| SA_ChebyAlpha | R | היחס הקובע את הגבול התחתון של תחום הערכים העצמיים שאליו מכוון מחליק Chebyshev (ברירת מחדל: 20.0) |
| SA_Safety | R | מקדם בטיחות המוחל על האומדן של הערך העצמי המרבי (ברירת מחדל: 1.1) |
| SA_TaperK | R | מקדם K של ריסון ההגסה (ברירת מחדל: 100) (מרמה 2 ואילך ההגסה נעשית הדרגתית יותר כך שיישארו לפחות כ־K אגרגטים. ערך שלילי משבית את הריסון) |
| SA_AggOrder | R | סדר סריקת האגרגציה (0: ברירת מחדל (סדר BFS), 1: סדר BFS, 2: סדר גיבוב של מספרי הצמתים (ניסיוני), 3: סדר דרגה עולה (ניסיוני), 4: סדר דרגה יורד (ניסיוני), ערך שלילי: סדר מספרי הצמתים) (ברירת מחדל: 0) |
| SA_MinAggSize | R | הגודל המזערי של אגרגט (ברירת מחדל: 3) |
| SA_Verify | R | האם לבצע בדיקה עצמית בעת ההכנה (0: לא, ערך חיובי: כן) (ברירת מחדל: 0) (בעיקר לניפוי שגיאות) |
| SA_DumpVTK | R | האם להפיק ב־VTK את האגרגציה ברמה העליונה (0: ללא פלט, ערך חיובי: פלט) (ברירת מחדל: 0) (בעיקר לניפוי שגיאות) |
דוגמה¶
שימוש ב-CG עם קדם־התניה SSOR, מספר איטרציות מרבי 10000 וסבולת עצירה 1.0e-8
שימוש ב-GMRES עם קדם־התניה SSOR, ממד תת־מרחב Krylov של 40 ומספר צבעי יעד בסידור רב־צבעי של 100
שימוש ב-CG עם קדם־התניה ILU(0), עם מקדם 1.1 לרכיב האלכסוני בחישוב מטריצת קדם־ההתניה
שימוש ב-AMG של ML כקדם־התניה ל-CG
שימוש ב-AMG של ML כקדם־התניה ל-CG וב-MUMPS כפותר לרשת הגסה (לבעיות קשות לפתרון)
שימוש ב-AMG של ML כקדם־התניה ל-CG וב-W-cycle כמחזור רב־רשת (לבעיות קשות לפתרון)
שימוש ב-AMG של ML כקדם־התניה ל-CG, ב-MUMPS כפותר לרשת הגסה וב-2 כרמות מרביות (לבעיות קשות מאוד לפתרון)
השתמשו ב־SA-AMG המובנה ב־HEC-MW כקדם־התניה עבור CG
השתמשו ב־SA-AMG כקדם־התניה עבור CG וב־MUMPS כפותר הרשת הגסה
באנליזת מגע עם חיכוך, השתמשו ב־BiCGSTAB עם קדם־התניית SA-AMG והפיקו את היררכיית קדם־התניית AMG