##@namespace hwrf_wcoss # This module contains various utility functions for running on # WCOSS, the machine that the US National Weather Service uses for its # operational forecasting. import os,re ##@var __all__ # Symbols to export by "from hwrf_wcoss import *" __all__=['set_vars_for_coupled_hwrf','set_vars_for_gsi', 'set_vars_for_products','cray_fcst_vars'] def loudenv(logger,var,value): """!Set an environment variable and log a message about it @param logger a logging.Logger for the message @param var the variable to set in os.environ @param value the value of the variable""" logger.info('Set ENV %s=%s',str(var),repr(value)) os.environ[var]=value def cray_ensda_vars(logger): """!Sets variables that seem to speed up the 2016 HWRF on WCOSS Cray when running ensda jobs. @param logger a logging.Logger for log messages """ loudenv(logger,'IOBUF_PARAMS','*') loudenv(logger,'MPICH_GNI_MAX_EAGER_MSG_SIZE','1024000') loudenv(logger,'MPICH_GNI_NUM_BUFS','256') loudenv(logger,'MALLOC_TRIM_THRESHOLD_','%d'%(128 * 1024 * 1024)) loudenv(logger,'MALLOC_MMAP_MAX_','0') loudenv(logger,'OMP_NUM_THREADS','1') loudenv(logger,'MKL_NUM_THREADS','1') loudenv(logger,'FORT_BUFFERED','true') def cray_fcst_vars(logger,wave,ocean,wrf_ranks): loudenv(logger,'MPICH_GNI_MAX_EAGER_MSG_SIZE','1024000') loudenv(logger,'MPICH_GNI_NUM_BUFS','256') loudenv(logger,'MALLOC_TRIM_THRESHOLD_','%d'%(128 * 1024 * 1024)) loudenv(logger,'MALLOC_MMAP_MAX_','0') loudenv(logger,'OMP_NUM_THREADS','1') loudenv(logger,'MKL_NUM_THREADS','1') loudenv(logger,'FORT_BUFFERED','true') #loudenv(logger,'MPICH_RANK_REORDER_METHOD','3') class WCOSSConfigException(Exception): pass # Ideal rank reordering for 4x5 grid of compute nodes, 4x6 per node wrf_4x5_4x6 = [ [0,1,2,3,16,17,18,19,32,33,34,35,48,49,50,51,64,65,66,67,80,81,82,83], [4,5,6,7,20,21,22,23,36,37,38,39,52,53,54,55,68,69,70,71,84,85,86,87], [8,9,10,11,24,25,26,27,40,41,42,43,56,57,58,59,72,73,74,75,88,89,90,91], [12,13,14,15,28,29,30,31,44,45,46,47,60,61,62,63,76,77,78,79,92,93,94,95], [96,97,98,99,112,113,114,115,128,129,130,131,144,145,146,147,160,161,162,163,176,177,178,179], [100,101,102,103,116,117,118,119,132,133,134,135,148,149,150,151,164,165,166,167,180,181,182,183], [104,105,106,107,120,121,122,123,136,137,138,139,152,153,154,155,168,169,170,171,184,185,186,187], [108,109,110,111,124,125,126,127,140,141,142,143,156,157,158,159,172,173,174,175,188,189,190,191], [192,193,194,195,208,209,210,211,224,225,226,227,240,241,242,243,256,257,258,259,272,273,274,275], [196,197,198,199,212,213,214,215,228,229,230,231,244,245,246,247,260,261,262,263,276,277,278,279], [200,201,202,203,216,217,218,219,232,233,234,235,248,249,250,251,264,265,266,267,280,281,282,283], [204,205,206,207,220,221,222,223,236,237,238,239,252,253,254,255,268,269,270,271,284,285,286,287], [288,289,290,291,304,305,306,307,320,321,322,323,336,337,338,339,352,353,354,355,368,369,370,371], [292,293,294,295,308,309,310,311,324,325,326,327,340,341,342,343,356,357,358,359,372,373,374,375], [296,297,298,299,312,313,314,315,328,329,330,331,344,345,346,347,360,361,362,363,376,377,378,379], [300,301,302,303,316,317,318,319,332,333,334,335,348,349,350,351,364,365,366,367,380,381,382,383], [384,385,386,387,400,401,402,403,416,417,418,419,432,433,434,435,448,449,450,451,464,465,466,467], [388,389,390,391,404,405,406,407,420,421,422,423,436,437,438,439,452,453,454,455,468,469,470,471], [392,393,394,395,408,409,410,411,424,425,426,427,440,441,442,443,456,457,458,459,472,473,474,475], [396,397,398,399,412,413,414,415,428,429,430,431,444,445,446,447,460,461,462,463,476,477,478,479], ] # Ideal rank reordering for 3x9 grid of compute nodes, 6x4 per node wrf_3x9_6x4 = [ [0,1,2,3,4,5,18,19,20,21,22,23,36,37,38,39,40,41,54,55,56,57,58,59], [6,7,8,9,10,11,24,25,26,27,28,29,42,43,44,45,46,47,60,61,62,63,64,65], [12,13,14,15,16,17,30,31,32,33,34,35,48,49,50,51,52,53,66,67,68,69,70,71], [72,73,74,75,76,77,90,91,92,93,94,95,108,109,110,111,112,113,126,127,128,129,130,131], [78,79,80,81,82,83,96,97,98,99,100,101,114,115,116,117,118,119,132,133,134,135,136,137], [84,85,86,87,88,89,102,103,104,105,106,107,120,121,122,123,124,125,138,139,140,141,142,143], [144,145,146,147,148,149,162,163,164,165,166,167,180,181,182,183,184,185,198,199,200,201,202,203], [150,151,152,153,154,155,168,169,170,171,172,173,186,187,188,189,190,191,204,205,206,207,208,209], [156,157,158,159,160,161,174,175,176,177,178,179,192,193,194,195,196,197,210,211,212,213,214,215], [216,217,218,219,220,221,234,235,236,237,238,239,252,253,254,255,256,257,270,271,272,273,274,275], [222,223,224,225,226,227,240,241,242,243,244,245,258,259,260,261,262,263,276,277,278,279,280,281], [228,229,230,231,232,233,246,247,248,249,250,251,264,265,266,267,268,269,282,283,284,285,286,287], [288,289,290,291,292,293,306,307,308,309,310,311,324,325,326,327,328,329,342,343,344,345,346,347], [294,295,296,297,298,299,312,313,314,315,316,317,330,331,332,333,334,335,348,349,350,351,352,353], [300,301,302,303,304,305,318,319,320,321,322,323,336,337,338,339,340,341,354,355,356,357,358,359], [360,361,362,363,364,365,378,379,380,381,382,383,396,397,398,399,400,401,414,415,416,417,418,419], [366,367,368,369,370,371,384,385,386,387,388,389,402,403,404,405,406,407,420,421,422,423,424,425], [372,373,374,375,376,377,390,391,392,393,394,395,408,409,410,411,412,413,426,427,428,429,430,431], [432,433,434,435,436,437,450,451,452,453,454,455,468,469,470,471,472,473,486,487,488,489,490,491], [438,439,440,441,442,443,456,457,458,459,460,461,474,475,476,477,478,479,492,493,494,495,496,497], [444,445,446,447,448,449,462,463,464,465,466,467,480,481,482,483,484,485,498,499,500,501,502,503], [504,505,506,507,508,509,522,523,524,525,526,527,540,541,542,543,544,545,558,559,560,561,562,563], [510,511,512,513,514,515,528,529,530,531,532,533,546,547,548,549,550,551,564,565,566,567,568,569], [516,517,518,519,520,521,534,535,536,537,538,539,552,553,554,555,556,557,570,571,572,573,574,575], [576,577,578,579,580,581,594,595,596,597,598,599,612,613,614,615,616,617,630,631,632,633,634,635], [582,583,584,585,586,587,600,601,602,603,604,605,618,619,620,621,622,623,636,637,638,639,640,641], [588,589,590,591,592,593,606,607,608,609,610,611,624,625,626,627,628,629,642,643,644,645,646,647], ] # Ideal rank reordering for 4x13 grid of compute nodes, 6x4 per node wrf_4x13_6x4 = [ [ 0, 1, 2, 3, 4, 5, 24, 25, 26, 27, 28, 29, 48, 49, 50, 51, 52, 53, 72, 73, 74, 75, 76, 77], [ 6, 7, 8, 9, 10, 11, 30, 31, 32, 33, 34, 35, 54, 55, 56, 57, 58, 59, 78, 79, 80, 81, 82, 83], [ 12, 13, 14, 15, 16, 17, 36, 37, 38, 39, 40, 41, 60, 61, 62, 63, 64, 65, 84, 85, 86, 87, 88, 89], [ 18, 19, 20, 21, 22, 23, 42, 43, 44, 45, 46, 47, 66, 67, 68, 69, 70, 71, 90, 91, 92, 93, 94, 95], [ 96, 97, 98, 99, 100, 101, 120, 121, 122, 123, 124, 125, 144, 145, 146, 147, 148, 149, 168, 169, 170, 171, 172, 173], [ 102, 103, 104, 105, 106, 107, 126, 127, 128, 129, 130, 131, 150, 151, 152, 153, 154, 155, 174, 175, 176, 177, 178, 179], [ 108, 109, 110, 111, 112, 113, 132, 133, 134, 135, 136, 137, 156, 157, 158, 159, 160, 161, 180, 181, 182, 183, 184, 185], [ 114, 115, 116, 117, 118, 119, 138, 139, 140, 141, 142, 143, 162, 163, 164, 165, 166, 167, 186, 187, 188, 189, 190, 191], [ 192, 193, 194, 195, 196, 197, 216, 217, 218, 219, 220, 221, 240, 241, 242, 243, 244, 245, 264, 265, 266, 267, 268, 269], [ 198, 199, 200, 201, 202, 203, 222, 223, 224, 225, 226, 227, 246, 247, 248, 249, 250, 251, 270, 271, 272, 273, 274, 275], [ 204, 205, 206, 207, 208, 209, 228, 229, 230, 231, 232, 233, 252, 253, 254, 255, 256, 257, 276, 277, 278, 279, 280, 281], [ 210, 211, 212, 213, 214, 215, 234, 235, 236, 237, 238, 239, 258, 259, 260, 261, 262, 263, 282, 283, 284, 285, 286, 287], [ 288, 289, 290, 291, 292, 293, 312, 313, 314, 315, 316, 317, 336, 337, 338, 339, 340, 341, 360, 361, 362, 363, 364, 365], [ 294, 295, 296, 297, 298, 299, 318, 319, 320, 321, 322, 323, 342, 343, 344, 345, 346, 347, 366, 367, 368, 369, 370, 371], [ 300, 301, 302, 303, 304, 305, 324, 325, 326, 327, 328, 329, 348, 349, 350, 351, 352, 353, 372, 373, 374, 375, 376, 377], [ 306, 307, 308, 309, 310, 311, 330, 331, 332, 333, 334, 335, 354, 355, 356, 357, 358, 359, 378, 379, 380, 381, 382, 383], [ 384, 385, 386, 387, 388, 389, 408, 409, 410, 411, 412, 413, 432, 433, 434, 435, 436, 437, 456, 457, 458, 459, 460, 461], [ 390, 391, 392, 393, 394, 395, 414, 415, 416, 417, 418, 419, 438, 439, 440, 441, 442, 443, 462, 463, 464, 465, 466, 467], [ 396, 397, 398, 399, 400, 401, 420, 421, 422, 423, 424, 425, 444, 445, 446, 447, 448, 449, 468, 469, 470, 471, 472, 473], [ 402, 403, 404, 405, 406, 407, 426, 427, 428, 429, 430, 431, 450, 451, 452, 453, 454, 455, 474, 475, 476, 477, 478, 479], [ 480, 481, 482, 483, 484, 485, 504, 505, 506, 507, 508, 509, 528, 529, 530, 531, 532, 533, 552, 553, 554, 555, 556, 557], [ 486, 487, 488, 489, 490, 491, 510, 511, 512, 513, 514, 515, 534, 535, 536, 537, 538, 539, 558, 559, 560, 561, 562, 563], [ 492, 493, 494, 495, 496, 497, 516, 517, 518, 519, 520, 521, 540, 541, 542, 543, 544, 545, 564, 565, 566, 567, 568, 569], [ 498, 499, 500, 501, 502, 503, 522, 523, 524, 525, 526, 527, 546, 547, 548, 549, 550, 551, 570, 571, 572, 573, 574, 575], [ 576, 577, 578, 579, 580, 581, 600, 601, 602, 603, 604, 605, 624, 625, 626, 627, 628, 629, 648, 649, 650, 651, 652, 653], [ 582, 583, 584, 585, 586, 587, 606, 607, 608, 609, 610, 611, 630, 631, 632, 633, 634, 635, 654, 655, 656, 657, 658, 659], [ 588, 589, 590, 591, 592, 593, 612, 613, 614, 615, 616, 617, 636, 637, 638, 639, 640, 641, 660, 661, 662, 663, 664, 665], [ 594, 595, 596, 597, 598, 599, 618, 619, 620, 621, 622, 623, 642, 643, 644, 645, 646, 647, 666, 667, 668, 669, 670, 671], [ 672, 673, 674, 675, 676, 677, 696, 697, 698, 699, 700, 701, 720, 721, 722, 723, 724, 725, 744, 745, 746, 747, 748, 749], [ 678, 679, 680, 681, 682, 683, 702, 703, 704, 705, 706, 707, 726, 727, 728, 729, 730, 731, 750, 751, 752, 753, 754, 755], [ 684, 685, 686, 687, 688, 689, 708, 709, 710, 711, 712, 713, 732, 733, 734, 735, 736, 737, 756, 757, 758, 759, 760, 761], [ 690, 691, 692, 693, 694, 695, 714, 715, 716, 717, 718, 719, 738, 739, 740, 741, 742, 743, 762, 763, 764, 765, 766, 767], [ 768, 769, 770, 771, 772, 773, 792, 793, 794, 795, 796, 797, 816, 817, 818, 819, 820, 821, 840, 841, 842, 843, 844, 845], [ 774, 775, 776, 777, 778, 779, 798, 799, 800, 801, 802, 803, 822, 823, 824, 825, 826, 827, 846, 847, 848, 849, 850, 851], [ 780, 781, 782, 783, 784, 785, 804, 805, 806, 807, 808, 809, 828, 829, 830, 831, 832, 833, 852, 853, 854, 855, 856, 857], [ 786, 787, 788, 789, 790, 791, 810, 811, 812, 813, 814, 815, 834, 835, 836, 837, 838, 839, 858, 859, 860, 861, 862, 863], [ 864, 865, 866, 867, 868, 869, 888, 889, 890, 891, 892, 893, 912, 913, 914, 915, 916, 917, 936, 937, 938, 939, 940, 941], [ 870, 871, 872, 873, 874, 875, 894, 895, 896, 897, 898, 899, 918, 919, 920, 921, 922, 923, 942, 943, 944, 945, 946, 947], [ 876, 877, 878, 879, 880, 881, 900, 901, 902, 903, 904, 905, 924, 925, 926, 927, 928, 929, 948, 949, 950, 951, 952, 953], [ 882, 883, 884, 885, 886, 887, 906, 907, 908, 909, 910, 911, 930, 931, 932, 933, 934, 935, 954, 955, 956, 957, 958, 959], [ 960, 961, 962, 963, 964, 965, 984, 985, 986, 987, 988, 989,1008,1009,1010,1011,1012,1013,1032,1033,1034,1035,1036,1037], [ 966, 967, 968, 969, 970, 971, 990, 991, 992, 993, 994, 995,1014,1015,1016,1017,1018,1019,1038,1039,1040,1041,1042,1043], [ 972, 973, 974, 975, 976, 977, 996, 997, 998, 999,1000,1001,1020,1021,1022,1023,1024,1025,1044,1045,1046,1047,1048,1049], [ 978, 979, 980, 981, 982, 983,1002,1003,1004,1005,1006,1007,1026,1027,1028,1029,1030,1031,1050,1051,1052,1053,1054,1055], [1056,1057,1058,1059,1060,1061,1080,1081,1082,1083,1084,1085,1104,1105,1106,1107,1108,1109,1128,1129,1130,1131,1132,1133], [1062,1063,1064,1065,1066,1067,1086,1087,1088,1089,1090,1091,1110,1111,1112,1113,1114,1115,1134,1135,1136,1137,1138,1139], [1068,1069,1070,1071,1072,1073,1092,1093,1094,1095,1096,1097,1116,1117,1118,1119,1120,1121,1140,1141,1142,1143,1144,1145], [1074,1075,1076,1077,1078,1079,1098,1099,1100,1101,1102,1103,1122,1123,1124,1125,1126,1127,1146,1147,1148,1149,1150,1151], [1152,1153,1154,1155,1156,1157,1176,1177,1178,1179,1180,1181,1200,1201,1202,1203,1204,1205,1224,1225,1226,1227,1228,1229], [1158,1159,1160,1161,1162,1163,1182,1183,1184,1185,1186,1187,1206,1207,1208,1209,1210,1211,1230,1231,1232,1233,1234,1235], [1164,1165,1166,1167,1168,1169,1188,1189,1190,1191,1192,1193,1212,1213,1214,1215,1216,1217,1236,1237,1238,1239,1240,1241], [1170,1171,1172,1173,1174,1175,1194,1195,1196,1197,1198,1199,1218,1219,1220,1221,1222,1223,1242,1243,1244,1245,1246,1247], ] # Ideal rank reordering for 9x7 grid of compute nodes, 3x8 per node wrf_9x7_3x8 = [ [0,1,2,27,28,29,54,55,56,81,82,83,108,109,110,135,136,137,162,163,164,189,190,191], [3,4,5,30,31,32,57,58,59,84,85,86,111,112,113,138,139,140,165,166,167,192,193,194], [6,7,8,33,34,35,60,61,62,87,88,89,114,115,116,141,142,143,168,169,170,195,196,197], [9,10,11,36,37,38,63,64,65,90,91,92,117,118,119,144,145,146,171,172,173,198,199,200], [12,13,14,39,40,41,66,67,68,93,94,95,120,121,122,147,148,149,174,175,176,201,202,203], [15,16,17,42,43,44,69,70,71,96,97,98,123,124,125,150,151,152,177,178,179,204,205,206], [18,19,20,45,46,47,72,73,74,99,100,101,126,127,128,153,154,155,180,181,182,207,208,209], [21,22,23,48,49,50,75,76,77,102,103,104,129,130,131,156,157,158,183,184,185,210,211,212], [24,25,26,51,52,53,78,79,80,105,106,107,132,133,134,159,160,161,186,187,188,213,214,215], [216,217,218,243,244,245,270,271,272,297,298,299,324,325,326,351,352,353,378,379,380,405,406,407], [219,220,221,246,247,248,273,274,275,300,301,302,327,328,329,354,355,356,381,382,383,408,409,410], [222,223,224,249,250,251,276,277,278,303,304,305,330,331,332,357,358,359,384,385,386,411,412,413], [225,226,227,252,253,254,279,280,281,306,307,308,333,334,335,360,361,362,387,388,389,414,415,416], [228,229,230,255,256,257,282,283,284,309,310,311,336,337,338,363,364,365,390,391,392,417,418,419], [231,232,233,258,259,260,285,286,287,312,313,314,339,340,341,366,367,368,393,394,395,420,421,422], [234,235,236,261,262,263,288,289,290,315,316,317,342,343,344,369,370,371,396,397,398,423,424,425], [237,238,239,264,265,266,291,292,293,318,319,320,345,346,347,372,373,374,399,400,401,426,427,428], [240,241,242,267,268,269,294,295,296,321,322,323,348,349,350,375,376,377,402,403,404,429,430,431], [432,433,434,459,460,461,486,487,488,513,514,515,540,541,542,567,568,569,594,595,596,621,622,623], [435,436,437,462,463,464,489,490,491,516,517,518,543,544,545,570,571,572,597,598,599,624,625,626], [438,439,440,465,466,467,492,493,494,519,520,521,546,547,548,573,574,575,600,601,602,627,628,629], [441,442,443,468,469,470,495,496,497,522,523,524,549,550,551,576,577,578,603,604,605,630,631,632], [444,445,446,471,472,473,498,499,500,525,526,527,552,553,554,579,580,581,606,607,608,633,634,635], [447,448,449,474,475,476,501,502,503,528,529,530,555,556,557,582,583,584,609,610,611,636,637,638], [450,451,452,477,478,479,504,505,506,531,532,533,558,559,560,585,586,587,612,613,614,639,640,641], [453,454,455,480,481,482,507,508,509,534,535,536,561,562,563,588,589,590,615,616,617,642,643,644], [456,457,458,483,484,485,510,511,512,537,538,539,564,565,566,591,592,593,618,619,620,645,646,647], [648,649,650,675,676,677,702,703,704,729,730,731,756,757,758,783,784,785,810,811,812,837,838,839], [651,652,653,678,679,680,705,706,707,732,733,734,759,760,761,786,787,788,813,814,815,840,841,842], [654,655,656,681,682,683,708,709,710,735,736,737,762,763,764,789,790,791,816,817,818,843,844,845], [657,658,659,684,685,686,711,712,713,738,739,740,765,766,767,792,793,794,819,820,821,846,847,848], [660,661,662,687,688,689,714,715,716,741,742,743,768,769,770,795,796,797,822,823,824,849,850,851], [663,664,665,690,691,692,717,718,719,744,745,746,771,772,773,798,799,800,825,826,827,852,853,854], [666,667,668,693,694,695,720,721,722,747,748,749,774,775,776,801,802,803,828,829,830,855,856,857], [669,670,671,696,697,698,723,724,725,750,751,752,777,778,779,804,805,806,831,832,833,858,859,860], [672,673,674,699,700,701,726,727,728,753,754,755,780,781,782,807,808,809,834,835,836,861,862,863], [864,865,866,891,892,893,918,919,920,945,946,947,972,973,974,999,1000,1001,1026,1027,1028,1053,1054,1055], [867,868,869,894,895,896,921,922,923,948,949,950,975,976,977,1002,1003,1004,1029,1030,1031,1056,1057,1058], [870,871,872,897,898,899,924,925,926,951,952,953,978,979,980,1005,1006,1007,1032,1033,1034,1059,1060,1061], [873,874,875,900,901,902,927,928,929,954,955,956,981,982,983,1008,1009,1010,1035,1036,1037,1062,1063,1064], [876,877,878,903,904,905,930,931,932,957,958,959,984,985,986,1011,1012,1013,1038,1039,1040,1065,1066,1067], [879,880,881,906,907,908,933,934,935,960,961,962,987,988,989,1014,1015,1016,1041,1042,1043,1068,1069,1070], [882,883,884,909,910,911,936,937,938,963,964,965,990,991,992,1017,1018,1019,1044,1045,1046,1071,1072,1073], [885,886,887,912,913,914,939,940,941,966,967,968,993,994,995,1020,1021,1022,1047,1048,1049,1074,1075,1076], [888,889,890,915,916,917,942,943,944,969,970,971,996,997,998,1023,1024,1025,1050,1051,1052,1077,1078,1079], [1080,1081,1082,1107,1108,1109,1134,1135,1136,1161,1162,1163,1188,1189,1190,1215,1216,1217,1242,1243,1244,1269,1270,1271], [1083,1084,1085,1110,1111,1112,1137,1138,1139,1164,1165,1166,1191,1192,1193,1218,1219,1220,1245,1246,1247,1272,1273,1274], [1086,1087,1088,1113,1114,1115,1140,1141,1142,1167,1168,1169,1194,1195,1196,1221,1222,1223,1248,1249,1250,1275,1276,1277], [1089,1090,1091,1116,1117,1118,1143,1144,1145,1170,1171,1172,1197,1198,1199,1224,1225,1226,1251,1252,1253,1278,1279,1280], [1092,1093,1094,1119,1120,1121,1146,1147,1148,1173,1174,1175,1200,1201,1202,1227,1228,1229,1254,1255,1256,1281,1282,1283], [1095,1096,1097,1122,1123,1124,1149,1150,1151,1176,1177,1178,1203,1204,1205,1230,1231,1232,1257,1258,1259,1284,1285,1286], [1098,1099,1100,1125,1126,1127,1152,1153,1154,1179,1180,1181,1206,1207,1208,1233,1234,1235,1260,1261,1262,1287,1288,1289], [1101,1102,1103,1128,1129,1130,1155,1156,1157,1182,1183,1184,1209,1210,1211,1236,1237,1238,1263,1264,1265,1290,1291,1292], [1104,1105,1106,1131,1132,1133,1158,1159,1160,1185,1186,1187,1212,1213,1214,1239,1240,1241,1266,1267,1268,1293,1294,1295], [1296,1297,1298,1323,1324,1325,1350,1351,1352,1377,1378,1379,1404,1405,1406,1431,1432,1433,1458,1459,1460,1485,1486,1487], [1299,1300,1301,1326,1327,1328,1353,1354,1355,1380,1381,1382,1407,1408,1409,1434,1435,1436,1461,1462,1463,1488,1489,1490], [1302,1303,1304,1329,1330,1331,1356,1357,1358,1383,1384,1385,1410,1411,1412,1437,1438,1439,1464,1465,1466,1491,1492,1493], [1305,1306,1307,1332,1333,1334,1359,1360,1361,1386,1387,1388,1413,1414,1415,1440,1441,1442,1467,1468,1469,1494,1495,1496], [1308,1309,1310,1335,1336,1337,1362,1363,1364,1389,1390,1391,1416,1417,1418,1443,1444,1445,1470,1471,1472,1497,1498,1499], [1311,1312,1313,1338,1339,1340,1365,1366,1367,1392,1393,1394,1419,1420,1421,1446,1447,1448,1473,1474,1475,1500,1501,1502], [1314,1315,1316,1341,1342,1343,1368,1369,1370,1395,1396,1397,1422,1423,1424,1449,1450,1451,1476,1477,1478,1503,1504,1505], [1317,1318,1319,1344,1345,1346,1371,1372,1373,1398,1399,1400,1425,1426,1427,1452,1453,1454,1479,1480,1481,1506,1507,1508], [1320,1321,1322,1347,1348,1349,1374,1375,1376,1401,1402,1403,1428,1429,1430,1455,1456,1457,1482,1483,1484,1509,1510,1511], ] # Ideal rank reordering for 7x10 grid of compute nodes, 4x6 per node wrf_7x10_4x6 = [ [0,1,2,3,28,29,30,31,56,57,58,59,84,85,86,87,112,113,114,115,140,141,142,143], [4,5,6,7,32,33,34,35,60,61,62,63,88,89,90,91,116,117,118,119,144,145,146,147], [8,9,10,11,36,37,38,39,64,65,66,67,92,93,94,95,120,121,122,123,148,149,150,151], [12,13,14,15,40,41,42,43,68,69,70,71,96,97,98,99,124,125,126,127,152,153,154,155], [16,17,18,19,44,45,46,47,72,73,74,75,100,101,102,103,128,129,130,131,156,157,158,159], [20,21,22,23,48,49,50,51,76,77,78,79,104,105,106,107,132,133,134,135,160,161,162,163], [24,25,26,27,52,53,54,55,80,81,82,83,108,109,110,111,136,137,138,139,164,165,166,167], [168,169,170,171,196,197,198,199,224,225,226,227,252,253,254,255,280,281,282,283,308,309,310,311], [172,173,174,175,200,201,202,203,228,229,230,231,256,257,258,259,284,285,286,287,312,313,314,315], [176,177,178,179,204,205,206,207,232,233,234,235,260,261,262,263,288,289,290,291,316,317,318,319], [180,181,182,183,208,209,210,211,236,237,238,239,264,265,266,267,292,293,294,295,320,321,322,323], [184,185,186,187,212,213,214,215,240,241,242,243,268,269,270,271,296,297,298,299,324,325,326,327], [188,189,190,191,216,217,218,219,244,245,246,247,272,273,274,275,300,301,302,303,328,329,330,331], [192,193,194,195,220,221,222,223,248,249,250,251,276,277,278,279,304,305,306,307,332,333,334,335], [336,337,338,339,364,365,366,367,392,393,394,395,420,421,422,423,448,449,450,451,476,477,478,479], [340,341,342,343,368,369,370,371,396,397,398,399,424,425,426,427,452,453,454,455,480,481,482,483], [344,345,346,347,372,373,374,375,400,401,402,403,428,429,430,431,456,457,458,459,484,485,486,487], [348,349,350,351,376,377,378,379,404,405,406,407,432,433,434,435,460,461,462,463,488,489,490,491], [352,353,354,355,380,381,382,383,408,409,410,411,436,437,438,439,464,465,466,467,492,493,494,495], [356,357,358,359,384,385,386,387,412,413,414,415,440,441,442,443,468,469,470,471,496,497,498,499], [360,361,362,363,388,389,390,391,416,417,418,419,444,445,446,447,472,473,474,475,500,501,502,503], [504,505,506,507,532,533,534,535,560,561,562,563,588,589,590,591,616,617,618,619,644,645,646,647], [508,509,510,511,536,537,538,539,564,565,566,567,592,593,594,595,620,621,622,623,648,649,650,651], [512,513,514,515,540,541,542,543,568,569,570,571,596,597,598,599,624,625,626,627,652,653,654,655], [516,517,518,519,544,545,546,547,572,573,574,575,600,601,602,603,628,629,630,631,656,657,658,659], [520,521,522,523,548,549,550,551,576,577,578,579,604,605,606,607,632,633,634,635,660,661,662,663], [524,525,526,527,552,553,554,555,580,581,582,583,608,609,610,611,636,637,638,639,664,665,666,667], [528,529,530,531,556,557,558,559,584,585,586,587,612,613,614,615,640,641,642,643,668,669,670,671], [672,673,674,675,700,701,702,703,728,729,730,731,756,757,758,759,784,785,786,787,812,813,814,815], [676,677,678,679,704,705,706,707,732,733,734,735,760,761,762,763,788,789,790,791,816,817,818,819], [680,681,682,683,708,709,710,711,736,737,738,739,764,765,766,767,792,793,794,795,820,821,822,823], [684,685,686,687,712,713,714,715,740,741,742,743,768,769,770,771,796,797,798,799,824,825,826,827], [688,689,690,691,716,717,718,719,744,745,746,747,772,773,774,775,800,801,802,803,828,829,830,831], [692,693,694,695,720,721,722,723,748,749,750,751,776,777,778,779,804,805,806,807,832,833,834,835], [696,697,698,699,724,725,726,727,752,753,754,755,780,781,782,783,808,809,810,811,836,837,838,839], [840,841,842,843,868,869,870,871,896,897,898,899,924,925,926,927,952,953,954,955,980,981,982,983], [844,845,846,847,872,873,874,875,900,901,902,903,928,929,930,931,956,957,958,959,984,985,986,987], [848,849,850,851,876,877,878,879,904,905,906,907,932,933,934,935,960,961,962,963,988,989,990,991], [852,853,854,855,880,881,882,883,908,909,910,911,936,937,938,939,964,965,966,967,992,993,994,995], [856,857,858,859,884,885,886,887,912,913,914,915,940,941,942,943,968,969,970,971,996,997,998,999], [860,861,862,863,888,889,890,891,916,917,918,919,944,945,946,947,972,973,974,975,1000,1001,1002,1003], [864,865,866,867,892,893,894,895,920,921,922,923,948,949,950,951,976,977,978,979,1004,1005,1006,1007], [1008,1009,1010,1011,1036,1037,1038,1039,1064,1065,1066,1067,1092,1093,1094,1095,1120,1121,1122,1123,1148,1149,1150,1151], [1012,1013,1014,1015,1040,1041,1042,1043,1068,1069,1070,1071,1096,1097,1098,1099,1124,1125,1126,1127,1152,1153,1154,1155], [1016,1017,1018,1019,1044,1045,1046,1047,1072,1073,1074,1075,1100,1101,1102,1103,1128,1129,1130,1131,1156,1157,1158,1159], [1020,1021,1022,1023,1048,1049,1050,1051,1076,1077,1078,1079,1104,1105,1106,1107,1132,1133,1134,1135,1160,1161,1162,1163], [1024,1025,1026,1027,1052,1053,1054,1055,1080,1081,1082,1083,1108,1109,1110,1111,1136,1137,1138,1139,1164,1165,1166,1167], [1028,1029,1030,1031,1056,1057,1058,1059,1084,1085,1086,1087,1112,1113,1114,1115,1140,1141,1142,1143,1168,1169,1170,1171], [1032,1033,1034,1035,1060,1061,1062,1063,1088,1089,1090,1091,1116,1117,1118,1119,1144,1145,1146,1147,1172,1173,1174,1175], [1176,1177,1178,1179,1204,1205,1206,1207,1232,1233,1234,1235,1260,1261,1262,1263,1288,1289,1290,1291,1316,1317,1318,1319], [1180,1181,1182,1183,1208,1209,1210,1211,1236,1237,1238,1239,1264,1265,1266,1267,1292,1293,1294,1295,1320,1321,1322,1323], [1184,1185,1186,1187,1212,1213,1214,1215,1240,1241,1242,1243,1268,1269,1270,1271,1296,1297,1298,1299,1324,1325,1326,1327], [1188,1189,1190,1191,1216,1217,1218,1219,1244,1245,1246,1247,1272,1273,1274,1275,1300,1301,1302,1303,1328,1329,1330,1331], [1192,1193,1194,1195,1220,1221,1222,1223,1248,1249,1250,1251,1276,1277,1278,1279,1304,1305,1306,1307,1332,1333,1334,1335], [1196,1197,1198,1199,1224,1225,1226,1227,1252,1253,1254,1255,1280,1281,1282,1283,1308,1309,1310,1311,1336,1337,1338,1339], [1200,1201,1202,1203,1228,1229,1230,1231,1256,1257,1258,1259,1284,1285,1286,1287,1312,1313,1314,1315,1340,1341,1342,1343], [1344,1345,1346,1347,1372,1373,1374,1375,1400,1401,1402,1403,1428,1429,1430,1431,1456,1457,1458,1459,1484,1485,1486,1487], [1348,1349,1350,1351,1376,1377,1378,1379,1404,1405,1406,1407,1432,1433,1434,1435,1460,1461,1462,1463,1488,1489,1490,1491], [1352,1353,1354,1355,1380,1381,1382,1383,1408,1409,1410,1411,1436,1437,1438,1439,1464,1465,1466,1467,1492,1493,1494,1495], [1356,1357,1358,1359,1384,1385,1386,1387,1412,1413,1414,1415,1440,1441,1442,1443,1468,1469,1470,1471,1496,1497,1498,1499], [1360,1361,1362,1363,1388,1389,1390,1391,1416,1417,1418,1419,1444,1445,1446,1447,1472,1473,1474,1475,1500,1501,1502,1503], [1364,1365,1366,1367,1392,1393,1394,1395,1420,1421,1422,1423,1448,1449,1450,1451,1476,1477,1478,1479,1504,1505,1506,1507], [1368,1369,1370,1371,1396,1397,1398,1399,1424,1425,1426,1427,1452,1453,1454,1455,1480,1481,1482,1483,1508,1509,1510,1511], [1512,1513,1514,1515,1540,1541,1542,1543,1568,1569,1570,1571,1596,1597,1598,1599,1624,1625,1626,1627,1652,1653,1654,1655], [1516,1517,1518,1519,1544,1545,1546,1547,1572,1573,1574,1575,1600,1601,1602,1603,1628,1629,1630,1631,1656,1657,1658,1659], [1520,1521,1522,1523,1548,1549,1550,1551,1576,1577,1578,1579,1604,1605,1606,1607,1632,1633,1634,1635,1660,1661,1662,1663], [1524,1525,1526,1527,1552,1553,1554,1555,1580,1581,1582,1583,1608,1609,1610,1611,1636,1637,1638,1639,1664,1665,1666,1667], [1528,1529,1530,1531,1556,1557,1558,1559,1584,1585,1586,1587,1612,1613,1614,1615,1640,1641,1642,1643,1668,1669,1670,1671], [1532,1533,1534,1535,1560,1561,1562,1563,1588,1589,1590,1591,1616,1617,1618,1619,1644,1645,1646,1647,1672,1673,1674,1675], [1536,1537,1538,1539,1564,1565,1566,1567,1592,1593,1594,1595,1620,1621,1622,1623,1648,1649,1650,1651,1676,1677,1678,1679], ] # Ideal rank reordering for 5x3 grid of compute nodes, 8x16 per node wrf_5x3_8x16 = [ [0,1,2,3,4,5,6,7,40,41,42,43,44,45,46,47,80,81,82,83,84,85,86,87,120,121,122,123,124,125,126,127,160,161,162,163,164,165,166,167,200,201,202,203,204,205,206,207,240,241,242,243,244,245,246,247,280,281,282,283,284,285,286,287,320,321,322,323,324,325,326,327,360,361,362,363,364,365,366,367,400,401,402,403,404,405,406,407,440,441,442,443,444,445,446,447,480,481,482,483,484,485,486,487,520,521,522,523,524,525,526,527,560,561,562,563,564,565,566,567,600,601,602,603,604,605,606,607], [8,9,10,11,12,13,14,15,48,49,50,51,52,53,54,55,88,89,90,91,92,93,94,95,128,129,130,131,132,133,134,135,168,169,170,171,172,173,174,175,208,209,210,211,212,213,214,215,248,249,250,251,252,253,254,255,288,289,290,291,292,293,294,295,328,329,330,331,332,333,334,335,368,369,370,371,372,373,374,375,408,409,410,411,412,413,414,415,448,449,450,451,452,453,454,455,488,489,490,491,492,493,494,495,528,529,530,531,532,533,534,535,568,569,570,571,572,573,574,575,608,609,610,611,612,613,614,615], [16,17,18,19,20,21,22,23,56,57,58,59,60,61,62,63,96,97,98,99,100,101,102,103,136,137,138,139,140,141,142,143,176,177,178,179,180,181,182,183,216,217,218,219,220,221,222,223,256,257,258,259,260,261,262,263,296,297,298,299,300,301,302,303,336,337,338,339,340,341,342,343,376,377,378,379,380,381,382,383,416,417,418,419,420,421,422,423,456,457,458,459,460,461,462,463,496,497,498,499,500,501,502,503,536,537,538,539,540,541,542,543,576,577,578,579,580,581,582,583,616,617,618,619,620,621,622,623], [24,25,26,27,28,29,30,31,64,65,66,67,68,69,70,71,104,105,106,107,108,109,110,111,144,145,146,147,148,149,150,151,184,185,186,187,188,189,190,191,224,225,226,227,228,229,230,231,264,265,266,267,268,269,270,271,304,305,306,307,308,309,310,311,344,345,346,347,348,349,350,351,384,385,386,387,388,389,390,391,424,425,426,427,428,429,430,431,464,465,466,467,468,469,470,471,504,505,506,507,508,509,510,511,544,545,546,547,548,549,550,551,584,585,586,587,588,589,590,591,624,625,626,627,628,629,630,631], [32,33,34,35,36,37,38,39,72,73,74,75,76,77,78,79,112,113,114,115,116,117,118,119,152,153,154,155,156,157,158,159,192,193,194,195,196,197,198,199,232,233,234,235,236,237,238,239,272,273,274,275,276,277,278,279,312,313,314,315,316,317,318,319,352,353,354,355,356,357,358,359,392,393,394,395,396,397,398,399,432,433,434,435,436,437,438,439,472,473,474,475,476,477,478,479,512,513,514,515,516,517,518,519,552,553,554,555,556,557,558,559,592,593,594,595,596,597,598,599,632,633,634,635,636,637,638,639], [640,641,642,643,644,645,646,647,680,681,682,683,684,685,686,687,720,721,722,723,724,725,726,727,760,761,762,763,764,765,766,767,800,801,802,803,804,805,806,807,840,841,842,843,844,845,846,847,880,881,882,883,884,885,886,887,920,921,922,923,924,925,926,927,960,961,962,963,964,965,966,967,1000,1001,1002,1003,1004,1005,1006,1007,1040,1041,1042,1043,1044,1045,1046,1047,1080,1081,1082,1083,1084,1085,1086,1087,1120,1121,1122,1123,1124,1125,1126,1127,1160,1161,1162,1163,1164,1165,1166,1167,1200,1201,1202,1203,1204,1205,1206,1207,1240,1241,1242,1243,1244,1245,1246,1247], [648,649,650,651,652,653,654,655,688,689,690,691,692,693,694,695,728,729,730,731,732,733,734,735,768,769,770,771,772,773,774,775,808,809,810,811,812,813,814,815,848,849,850,851,852,853,854,855,888,889,890,891,892,893,894,895,928,929,930,931,932,933,934,935,968,969,970,971,972,973,974,975,1008,1009,1010,1011,1012,1013,1014,1015,1048,1049,1050,1051,1052,1053,1054,1055,1088,1089,1090,1091,1092,1093,1094,1095,1128,1129,1130,1131,1132,1133,1134,1135,1168,1169,1170,1171,1172,1173,1174,1175,1208,1209,1210,1211,1212,1213,1214,1215,1248,1249,1250,1251,1252,1253,1254,1255], [656,657,658,659,660,661,662,663,696,697,698,699,700,701,702,703,736,737,738,739,740,741,742,743,776,777,778,779,780,781,782,783,816,817,818,819,820,821,822,823,856,857,858,859,860,861,862,863,896,897,898,899,900,901,902,903,936,937,938,939,940,941,942,943,976,977,978,979,980,981,982,983,1016,1017,1018,1019,1020,1021,1022,1023,1056,1057,1058,1059,1060,1061,1062,1063,1096,1097,1098,1099,1100,1101,1102,1103,1136,1137,1138,1139,1140,1141,1142,1143,1176,1177,1178,1179,1180,1181,1182,1183,1216,1217,1218,1219,1220,1221,1222,1223,1256,1257,1258,1259,1260,1261,1262,1263], [664,665,666,667,668,669,670,671,704,705,706,707,708,709,710,711,744,745,746,747,748,749,750,751,784,785,786,787,788,789,790,791,824,825,826,827,828,829,830,831,864,865,866,867,868,869,870,871,904,905,906,907,908,909,910,911,944,945,946,947,948,949,950,951,984,985,986,987,988,989,990,991,1024,1025,1026,1027,1028,1029,1030,1031,1064,1065,1066,1067,1068,1069,1070,1071,1104,1105,1106,1107,1108,1109,1110,1111,1144,1145,1146,1147,1148,1149,1150,1151,1184,1185,1186,1187,1188,1189,1190,1191,1224,1225,1226,1227,1228,1229,1230,1231,1264,1265,1266,1267,1268,1269,1270,1271], [672,673,674,675,676,677,678,679,712,713,714,715,716,717,718,719,752,753,754,755,756,757,758,759,792,793,794,795,796,797,798,799,832,833,834,835,836,837,838,839,872,873,874,875,876,877,878,879,912,913,914,915,916,917,918,919,952,953,954,955,956,957,958,959,992,993,994,995,996,997,998,999,1032,1033,1034,1035,1036,1037,1038,1039,1072,1073,1074,1075,1076,1077,1078,1079,1112,1113,1114,1115,1116,1117,1118,1119,1152,1153,1154,1155,1156,1157,1158,1159,1192,1193,1194,1195,1196,1197,1198,1199,1232,1233,1234,1235,1236,1237,1238,1239,1272,1273,1274,1275,1276,1277,1278,1279], [1280,1281,1282,1283,1284,1285,1286,1287,1320,1321,1322,1323,1324,1325,1326,1327,1360,1361,1362,1363,1364,1365,1366,1367,1400,1401,1402,1403,1404,1405,1406,1407,1440,1441,1442,1443,1444,1445,1446,1447,1480,1481,1482,1483,1484,1485,1486,1487,1520,1521,1522,1523,1524,1525,1526,1527,1560,1561,1562,1563,1564,1565,1566,1567,1600,1601,1602,1603,1604,1605,1606,1607,1640,1641,1642,1643,1644,1645,1646,1647,1680,1681,1682,1683,1684,1685,1686,1687,1720,1721,1722,1723,1724,1725,1726,1727,1760,1761,1762,1763,1764,1765,1766,1767,1800,1801,1802,1803,1804,1805,1806,1807,1840,1841,1842,1843,1844,1845,1846,1847,1880,1881,1882,1883,1884,1885,1886,1887], [1288,1289,1290,1291,1292,1293,1294,1295,1328,1329,1330,1331,1332,1333,1334,1335,1368,1369,1370,1371,1372,1373,1374,1375,1408,1409,1410,1411,1412,1413,1414,1415,1448,1449,1450,1451,1452,1453,1454,1455,1488,1489,1490,1491,1492,1493,1494,1495,1528,1529,1530,1531,1532,1533,1534,1535,1568,1569,1570,1571,1572,1573,1574,1575,1608,1609,1610,1611,1612,1613,1614,1615,1648,1649,1650,1651,1652,1653,1654,1655,1688,1689,1690,1691,1692,1693,1694,1695,1728,1729,1730,1731,1732,1733,1734,1735,1768,1769,1770,1771,1772,1773,1774,1775,1808,1809,1810,1811,1812,1813,1814,1815,1848,1849,1850,1851,1852,1853,1854,1855,1888,1889,1890,1891,1892,1893,1894,1895], [1296,1297,1298,1299,1300,1301,1302,1303,1336,1337,1338,1339,1340,1341,1342,1343,1376,1377,1378,1379,1380,1381,1382,1383,1416,1417,1418,1419,1420,1421,1422,1423,1456,1457,1458,1459,1460,1461,1462,1463,1496,1497,1498,1499,1500,1501,1502,1503,1536,1537,1538,1539,1540,1541,1542,1543,1576,1577,1578,1579,1580,1581,1582,1583,1616,1617,1618,1619,1620,1621,1622,1623,1656,1657,1658,1659,1660,1661,1662,1663,1696,1697,1698,1699,1700,1701,1702,1703,1736,1737,1738,1739,1740,1741,1742,1743,1776,1777,1778,1779,1780,1781,1782,1783,1816,1817,1818,1819,1820,1821,1822,1823,1856,1857,1858,1859,1860,1861,1862,1863,1896,1897,1898,1899,1900,1901,1902,1903], [1304,1305,1306,1307,1308,1309,1310,1311,1344,1345,1346,1347,1348,1349,1350,1351,1384,1385,1386,1387,1388,1389,1390,1391,1424,1425,1426,1427,1428,1429,1430,1431,1464,1465,1466,1467,1468,1469,1470,1471,1504,1505,1506,1507,1508,1509,1510,1511,1544,1545,1546,1547,1548,1549,1550,1551,1584,1585,1586,1587,1588,1589,1590,1591,1624,1625,1626,1627,1628,1629,1630,1631,1664,1665,1666,1667,1668,1669,1670,1671,1704,1705,1706,1707,1708,1709,1710,1711,1744,1745,1746,1747,1748,1749,1750,1751,1784,1785,1786,1787,1788,1789,1790,1791,1824,1825,1826,1827,1828,1829,1830,1831,1864,1865,1866,1867,1868,1869,1870,1871,1904,1905,1906,1907,1908,1909,1910,1911], [1312,1313,1314,1315,1316,1317,1318,1319,1352,1353,1354,1355,1356,1357,1358,1359,1392,1393,1394,1395,1396,1397,1398,1399,1432,1433,1434,1435,1436,1437,1438,1439,1472,1473,1474,1475,1476,1477,1478,1479,1512,1513,1514,1515,1516,1517,1518,1519,1552,1553,1554,1555,1556,1557,1558,1559,1592,1593,1594,1595,1596,1597,1598,1599,1632,1633,1634,1635,1636,1637,1638,1639,1672,1673,1674,1675,1676,1677,1678,1679,1712,1713,1714,1715,1716,1717,1718,1719,1752,1753,1754,1755,1756,1757,1758,1759,1792,1793,1794,1795,1796,1797,1798,1799,1832,1833,1834,1835,1836,1837,1838,1839,1872,1873,1874,1875,1876,1877,1878,1879,1912,1913,1914,1915,1916,1917,1918,1919], ] # Ideal rank reordering for 8x10 grid of compute nodes, 4x6 per node wrf_8x10_4x6 = [ [0,1,2,3,32,33,34,35,64,65,66,67,96,97,98,99,128,129,130,131,160,161,162,163], [4,5,6,7,36,37,38,39,68,69,70,71,100,101,102,103,132,133,134,135,164,165,166,167], [8,9,10,11,40,41,42,43,72,73,74,75,104,105,106,107,136,137,138,139,168,169,170,171], [12,13,14,15,44,45,46,47,76,77,78,79,108,109,110,111,140,141,142,143,172,173,174,175], [16,17,18,19,48,49,50,51,80,81,82,83,112,113,114,115,144,145,146,147,176,177,178,179], [20,21,22,23,52,53,54,55,84,85,86,87,116,117,118,119,148,149,150,151,180,181,182,183], [24,25,26,27,56,57,58,59,88,89,90,91,120,121,122,123,152,153,154,155,184,185,186,187], [28,29,30,31,60,61,62,63,92,93,94,95,124,125,126,127,156,157,158,159,188,189,190,191], [192,193,194,195,224,225,226,227,256,257,258,259,288,289,290,291,320,321,322,323,352,353,354,355], [196,197,198,199,228,229,230,231,260,261,262,263,292,293,294,295,324,325,326,327,356,357,358,359], [200,201,202,203,232,233,234,235,264,265,266,267,296,297,298,299,328,329,330,331,360,361,362,363], [204,205,206,207,236,237,238,239,268,269,270,271,300,301,302,303,332,333,334,335,364,365,366,367], [208,209,210,211,240,241,242,243,272,273,274,275,304,305,306,307,336,337,338,339,368,369,370,371], [212,213,214,215,244,245,246,247,276,277,278,279,308,309,310,311,340,341,342,343,372,373,374,375], [216,217,218,219,248,249,250,251,280,281,282,283,312,313,314,315,344,345,346,347,376,377,378,379], [220,221,222,223,252,253,254,255,284,285,286,287,316,317,318,319,348,349,350,351,380,381,382,383], [384,385,386,387,416,417,418,419,448,449,450,451,480,481,482,483,512,513,514,515,544,545,546,547], [388,389,390,391,420,421,422,423,452,453,454,455,484,485,486,487,516,517,518,519,548,549,550,551], [392,393,394,395,424,425,426,427,456,457,458,459,488,489,490,491,520,521,522,523,552,553,554,555], [396,397,398,399,428,429,430,431,460,461,462,463,492,493,494,495,524,525,526,527,556,557,558,559], [400,401,402,403,432,433,434,435,464,465,466,467,496,497,498,499,528,529,530,531,560,561,562,563], [404,405,406,407,436,437,438,439,468,469,470,471,500,501,502,503,532,533,534,535,564,565,566,567], [408,409,410,411,440,441,442,443,472,473,474,475,504,505,506,507,536,537,538,539,568,569,570,571], [412,413,414,415,444,445,446,447,476,477,478,479,508,509,510,511,540,541,542,543,572,573,574,575], [576,577,578,579,608,609,610,611,640,641,642,643,672,673,674,675,704,705,706,707,736,737,738,739], [580,581,582,583,612,613,614,615,644,645,646,647,676,677,678,679,708,709,710,711,740,741,742,743], [584,585,586,587,616,617,618,619,648,649,650,651,680,681,682,683,712,713,714,715,744,745,746,747], [588,589,590,591,620,621,622,623,652,653,654,655,684,685,686,687,716,717,718,719,748,749,750,751], [592,593,594,595,624,625,626,627,656,657,658,659,688,689,690,691,720,721,722,723,752,753,754,755], [596,597,598,599,628,629,630,631,660,661,662,663,692,693,694,695,724,725,726,727,756,757,758,759], [600,601,602,603,632,633,634,635,664,665,666,667,696,697,698,699,728,729,730,731,760,761,762,763], [604,605,606,607,636,637,638,639,668,669,670,671,700,701,702,703,732,733,734,735,764,765,766,767], [768,769,770,771,800,801,802,803,832,833,834,835,864,865,866,867,896,897,898,899,928,929,930,931], [772,773,774,775,804,805,806,807,836,837,838,839,868,869,870,871,900,901,902,903,932,933,934,935], [776,777,778,779,808,809,810,811,840,841,842,843,872,873,874,875,904,905,906,907,936,937,938,939], [780,781,782,783,812,813,814,815,844,845,846,847,876,877,878,879,908,909,910,911,940,941,942,943], [784,785,786,787,816,817,818,819,848,849,850,851,880,881,882,883,912,913,914,915,944,945,946,947], [788,789,790,791,820,821,822,823,852,853,854,855,884,885,886,887,916,917,918,919,948,949,950,951], [792,793,794,795,824,825,826,827,856,857,858,859,888,889,890,891,920,921,922,923,952,953,954,955], [796,797,798,799,828,829,830,831,860,861,862,863,892,893,894,895,924,925,926,927,956,957,958,959], [960,961,962,963,992,993,994,995,1024,1025,1026,1027,1056,1057,1058,1059,1088,1089,1090,1091,1120,1121,1122,1123], [964,965,966,967,996,997,998,999,1028,1029,1030,1031,1060,1061,1062,1063,1092,1093,1094,1095,1124,1125,1126,1127], [968,969,970,971,1000,1001,1002,1003,1032,1033,1034,1035,1064,1065,1066,1067,1096,1097,1098,1099,1128,1129,1130,1131], [972,973,974,975,1004,1005,1006,1007,1036,1037,1038,1039,1068,1069,1070,1071,1100,1101,1102,1103,1132,1133,1134,1135], [976,977,978,979,1008,1009,1010,1011,1040,1041,1042,1043,1072,1073,1074,1075,1104,1105,1106,1107,1136,1137,1138,1139], [980,981,982,983,1012,1013,1014,1015,1044,1045,1046,1047,1076,1077,1078,1079,1108,1109,1110,1111,1140,1141,1142,1143], [984,985,986,987,1016,1017,1018,1019,1048,1049,1050,1051,1080,1081,1082,1083,1112,1113,1114,1115,1144,1145,1146,1147], [988,989,990,991,1020,1021,1022,1023,1052,1053,1054,1055,1084,1085,1086,1087,1116,1117,1118,1119,1148,1149,1150,1151], [1152,1153,1154,1155,1184,1185,1186,1187,1216,1217,1218,1219,1248,1249,1250,1251,1280,1281,1282,1283,1312,1313,1314,1315], [1156,1157,1158,1159,1188,1189,1190,1191,1220,1221,1222,1223,1252,1253,1254,1255,1284,1285,1286,1287,1316,1317,1318,1319], [1160,1161,1162,1163,1192,1193,1194,1195,1224,1225,1226,1227,1256,1257,1258,1259,1288,1289,1290,1291,1320,1321,1322,1323], [1164,1165,1166,1167,1196,1197,1198,1199,1228,1229,1230,1231,1260,1261,1262,1263,1292,1293,1294,1295,1324,1325,1326,1327], [1168,1169,1170,1171,1200,1201,1202,1203,1232,1233,1234,1235,1264,1265,1266,1267,1296,1297,1298,1299,1328,1329,1330,1331], [1172,1173,1174,1175,1204,1205,1206,1207,1236,1237,1238,1239,1268,1269,1270,1271,1300,1301,1302,1303,1332,1333,1334,1335], [1176,1177,1178,1179,1208,1209,1210,1211,1240,1241,1242,1243,1272,1273,1274,1275,1304,1305,1306,1307,1336,1337,1338,1339], [1180,1181,1182,1183,1212,1213,1214,1215,1244,1245,1246,1247,1276,1277,1278,1279,1308,1309,1310,1311,1340,1341,1342,1343], [1344,1345,1346,1347,1376,1377,1378,1379,1408,1409,1410,1411,1440,1441,1442,1443,1472,1473,1474,1475,1504,1505,1506,1507], [1348,1349,1350,1351,1380,1381,1382,1383,1412,1413,1414,1415,1444,1445,1446,1447,1476,1477,1478,1479,1508,1509,1510,1511], [1352,1353,1354,1355,1384,1385,1386,1387,1416,1417,1418,1419,1448,1449,1450,1451,1480,1481,1482,1483,1512,1513,1514,1515], [1356,1357,1358,1359,1388,1389,1390,1391,1420,1421,1422,1423,1452,1453,1454,1455,1484,1485,1486,1487,1516,1517,1518,1519], [1360,1361,1362,1363,1392,1393,1394,1395,1424,1425,1426,1427,1456,1457,1458,1459,1488,1489,1490,1491,1520,1521,1522,1523], [1364,1365,1366,1367,1396,1397,1398,1399,1428,1429,1430,1431,1460,1461,1462,1463,1492,1493,1494,1495,1524,1525,1526,1527], [1368,1369,1370,1371,1400,1401,1402,1403,1432,1433,1434,1435,1464,1465,1466,1467,1496,1497,1498,1499,1528,1529,1530,1531], [1372,1373,1374,1375,1404,1405,1406,1407,1436,1437,1438,1439,1468,1469,1470,1471,1500,1501,1502,1503,1532,1533,1534,1535], [1536,1537,1538,1539,1568,1569,1570,1571,1600,1601,1602,1603,1632,1633,1634,1635,1664,1665,1666,1667,1696,1697,1698,1699], [1540,1541,1542,1543,1572,1573,1574,1575,1604,1605,1606,1607,1636,1637,1638,1639,1668,1669,1670,1671,1700,1701,1702,1703], [1544,1545,1546,1547,1576,1577,1578,1579,1608,1609,1610,1611,1640,1641,1642,1643,1672,1673,1674,1675,1704,1705,1706,1707], [1548,1549,1550,1551,1580,1581,1582,1583,1612,1613,1614,1615,1644,1645,1646,1647,1676,1677,1678,1679,1708,1709,1710,1711], [1552,1553,1554,1555,1584,1585,1586,1587,1616,1617,1618,1619,1648,1649,1650,1651,1680,1681,1682,1683,1712,1713,1714,1715], [1556,1557,1558,1559,1588,1589,1590,1591,1620,1621,1622,1623,1652,1653,1654,1655,1684,1685,1686,1687,1716,1717,1718,1719], [1560,1561,1562,1563,1592,1593,1594,1595,1624,1625,1626,1627,1656,1657,1658,1659,1688,1689,1690,1691,1720,1721,1722,1723], [1564,1565,1566,1567,1596,1597,1598,1599,1628,1629,1630,1631,1660,1661,1662,1663,1692,1693,1694,1695,1724,1725,1726,1727], [1728,1729,1730,1731,1760,1761,1762,1763,1792,1793,1794,1795,1824,1825,1826,1827,1856,1857,1858,1859,1888,1889,1890,1891], [1732,1733,1734,1735,1764,1765,1766,1767,1796,1797,1798,1799,1828,1829,1830,1831,1860,1861,1862,1863,1892,1893,1894,1895], [1736,1737,1738,1739,1768,1769,1770,1771,1800,1801,1802,1803,1832,1833,1834,1835,1864,1865,1866,1867,1896,1897,1898,1899], [1740,1741,1742,1743,1772,1773,1774,1775,1804,1805,1806,1807,1836,1837,1838,1839,1868,1869,1870,1871,1900,1901,1902,1903], [1744,1745,1746,1747,1776,1777,1778,1779,1808,1809,1810,1811,1840,1841,1842,1843,1872,1873,1874,1875,1904,1905,1906,1907], [1748,1749,1750,1751,1780,1781,1782,1783,1812,1813,1814,1815,1844,1845,1846,1847,1876,1877,1878,1879,1908,1909,1910,1911], [1752,1753,1754,1755,1784,1785,1786,1787,1816,1817,1818,1819,1848,1849,1850,1851,1880,1881,1882,1883,1912,1913,1914,1915], [1756,1757,1758,1759,1788,1789,1790,1791,1820,1821,1822,1823,1852,1853,1854,1855,1884,1885,1886,1887,1916,1917,1918,1919], ] # Ideal rank reordering for 5x15 grid of compute nodes, 6x4 per node wrf_5x15_6x4 = [ [0,1,2,3,4,5,30,31,32,33,34,35,60,61,62,63,64,65,90,91,92,93,94,95], [6,7,8,9,10,11,36,37,38,39,40,41,66,67,68,69,70,71,96,97,98,99,100,101], [12,13,14,15,16,17,42,43,44,45,46,47,72,73,74,75,76,77,102,103,104,105,106,107], [18,19,20,21,22,23,48,49,50,51,52,53,78,79,80,81,82,83,108,109,110,111,112,113], [24,25,26,27,28,29,54,55,56,57,58,59,84,85,86,87,88,89,114,115,116,117,118,119], [120,121,122,123,124,125,150,151,152,153,154,155,180,181,182,183,184,185,210,211,212,213,214,215], [126,127,128,129,130,131,156,157,158,159,160,161,186,187,188,189,190,191,216,217,218,219,220,221], [132,133,134,135,136,137,162,163,164,165,166,167,192,193,194,195,196,197,222,223,224,225,226,227], [138,139,140,141,142,143,168,169,170,171,172,173,198,199,200,201,202,203,228,229,230,231,232,233], [144,145,146,147,148,149,174,175,176,177,178,179,204,205,206,207,208,209,234,235,236,237,238,239], [240,241,242,243,244,245,270,271,272,273,274,275,300,301,302,303,304,305,330,331,332,333,334,335], [246,247,248,249,250,251,276,277,278,279,280,281,306,307,308,309,310,311,336,337,338,339,340,341], [252,253,254,255,256,257,282,283,284,285,286,287,312,313,314,315,316,317,342,343,344,345,346,347], [258,259,260,261,262,263,288,289,290,291,292,293,318,319,320,321,322,323,348,349,350,351,352,353], [264,265,266,267,268,269,294,295,296,297,298,299,324,325,326,327,328,329,354,355,356,357,358,359], [360,361,362,363,364,365,390,391,392,393,394,395,420,421,422,423,424,425,450,451,452,453,454,455], [366,367,368,369,370,371,396,397,398,399,400,401,426,427,428,429,430,431,456,457,458,459,460,461], [372,373,374,375,376,377,402,403,404,405,406,407,432,433,434,435,436,437,462,463,464,465,466,467], [378,379,380,381,382,383,408,409,410,411,412,413,438,439,440,441,442,443,468,469,470,471,472,473], [384,385,386,387,388,389,414,415,416,417,418,419,444,445,446,447,448,449,474,475,476,477,478,479], [480,481,482,483,484,485,510,511,512,513,514,515,540,541,542,543,544,545,570,571,572,573,574,575], [486,487,488,489,490,491,516,517,518,519,520,521,546,547,548,549,550,551,576,577,578,579,580,581], [492,493,494,495,496,497,522,523,524,525,526,527,552,553,554,555,556,557,582,583,584,585,586,587], [498,499,500,501,502,503,528,529,530,531,532,533,558,559,560,561,562,563,588,589,590,591,592,593], [504,505,506,507,508,509,534,535,536,537,538,539,564,565,566,567,568,569,594,595,596,597,598,599], [600,601,602,603,604,605,630,631,632,633,634,635,660,661,662,663,664,665,690,691,692,693,694,695], [606,607,608,609,610,611,636,637,638,639,640,641,666,667,668,669,670,671,696,697,698,699,700,701], [612,613,614,615,616,617,642,643,644,645,646,647,672,673,674,675,676,677,702,703,704,705,706,707], [618,619,620,621,622,623,648,649,650,651,652,653,678,679,680,681,682,683,708,709,710,711,712,713], [624,625,626,627,628,629,654,655,656,657,658,659,684,685,686,687,688,689,714,715,716,717,718,719], [720,721,722,723,724,725,750,751,752,753,754,755,780,781,782,783,784,785,810,811,812,813,814,815], [726,727,728,729,730,731,756,757,758,759,760,761,786,787,788,789,790,791,816,817,818,819,820,821], [732,733,734,735,736,737,762,763,764,765,766,767,792,793,794,795,796,797,822,823,824,825,826,827], [738,739,740,741,742,743,768,769,770,771,772,773,798,799,800,801,802,803,828,829,830,831,832,833], [744,745,746,747,748,749,774,775,776,777,778,779,804,805,806,807,808,809,834,835,836,837,838,839], [840,841,842,843,844,845,870,871,872,873,874,875,900,901,902,903,904,905,930,931,932,933,934,935], [846,847,848,849,850,851,876,877,878,879,880,881,906,907,908,909,910,911,936,937,938,939,940,941], [852,853,854,855,856,857,882,883,884,885,886,887,912,913,914,915,916,917,942,943,944,945,946,947], [858,859,860,861,862,863,888,889,890,891,892,893,918,919,920,921,922,923,948,949,950,951,952,953], [864,865,866,867,868,869,894,895,896,897,898,899,924,925,926,927,928,929,954,955,956,957,958,959], [960,961,962,963,964,965,990,991,992,993,994,995,1020,1021,1022,1023,1024,1025,1050,1051,1052,1053,1054,1055], [966,967,968,969,970,971,996,997,998,999,1000,1001,1026,1027,1028,1029,1030,1031,1056,1057,1058,1059,1060,1061], [972,973,974,975,976,977,1002,1003,1004,1005,1006,1007,1032,1033,1034,1035,1036,1037,1062,1063,1064,1065,1066,1067], [978,979,980,981,982,983,1008,1009,1010,1011,1012,1013,1038,1039,1040,1041,1042,1043,1068,1069,1070,1071,1072,1073], [984,985,986,987,988,989,1014,1015,1016,1017,1018,1019,1044,1045,1046,1047,1048,1049,1074,1075,1076,1077,1078,1079], [1080,1081,1082,1083,1084,1085,1110,1111,1112,1113,1114,1115,1140,1141,1142,1143,1144,1145,1170,1171,1172,1173,1174,1175], [1086,1087,1088,1089,1090,1091,1116,1117,1118,1119,1120,1121,1146,1147,1148,1149,1150,1151,1176,1177,1178,1179,1180,1181], [1092,1093,1094,1095,1096,1097,1122,1123,1124,1125,1126,1127,1152,1153,1154,1155,1156,1157,1182,1183,1184,1185,1186,1187], [1098,1099,1100,1101,1102,1103,1128,1129,1130,1131,1132,1133,1158,1159,1160,1161,1162,1163,1188,1189,1190,1191,1192,1193], [1104,1105,1106,1107,1108,1109,1134,1135,1136,1137,1138,1139,1164,1165,1166,1167,1168,1169,1194,1195,1196,1197,1198,1199], [1200,1201,1202,1203,1204,1205,1230,1231,1232,1233,1234,1235,1260,1261,1262,1263,1264,1265,1290,1291,1292,1293,1294,1295], [1206,1207,1208,1209,1210,1211,1236,1237,1238,1239,1240,1241,1266,1267,1268,1269,1270,1271,1296,1297,1298,1299,1300,1301], [1212,1213,1214,1215,1216,1217,1242,1243,1244,1245,1246,1247,1272,1273,1274,1275,1276,1277,1302,1303,1304,1305,1306,1307], [1218,1219,1220,1221,1222,1223,1248,1249,1250,1251,1252,1253,1278,1279,1280,1281,1282,1283,1308,1309,1310,1311,1312,1313], [1224,1225,1226,1227,1228,1229,1254,1255,1256,1257,1258,1259,1284,1285,1286,1287,1288,1289,1314,1315,1316,1317,1318,1319], [1320,1321,1322,1323,1324,1325,1350,1351,1352,1353,1354,1355,1380,1381,1382,1383,1384,1385,1410,1411,1412,1413,1414,1415], [1326,1327,1328,1329,1330,1331,1356,1357,1358,1359,1360,1361,1386,1387,1388,1389,1390,1391,1416,1417,1418,1419,1420,1421], [1332,1333,1334,1335,1336,1337,1362,1363,1364,1365,1366,1367,1392,1393,1394,1395,1396,1397,1422,1423,1424,1425,1426,1427], [1338,1339,1340,1341,1342,1343,1368,1369,1370,1371,1372,1373,1398,1399,1400,1401,1402,1403,1428,1429,1430,1431,1432,1433], [1344,1345,1346,1347,1348,1349,1374,1375,1376,1377,1378,1379,1404,1405,1406,1407,1408,1409,1434,1435,1436,1437,1438,1439], [1440,1441,1442,1443,1444,1445,1470,1471,1472,1473,1474,1475,1500,1501,1502,1503,1504,1505,1530,1531,1532,1533,1534,1535], [1446,1447,1448,1449,1450,1451,1476,1477,1478,1479,1480,1481,1506,1507,1508,1509,1510,1511,1536,1537,1538,1539,1540,1541], [1452,1453,1454,1455,1456,1457,1482,1483,1484,1485,1486,1487,1512,1513,1514,1515,1516,1517,1542,1543,1544,1545,1546,1547], [1458,1459,1460,1461,1462,1463,1488,1489,1490,1491,1492,1493,1518,1519,1520,1521,1522,1523,1548,1549,1550,1551,1552,1553], [1464,1465,1466,1467,1468,1469,1494,1495,1496,1497,1498,1499,1524,1525,1526,1527,1528,1529,1554,1555,1556,1557,1558,1559], [1560,1561,1562,1563,1564,1565,1590,1591,1592,1593,1594,1595,1620,1621,1622,1623,1624,1625,1650,1651,1652,1653,1654,1655], [1566,1567,1568,1569,1570,1571,1596,1597,1598,1599,1600,1601,1626,1627,1628,1629,1630,1631,1656,1657,1658,1659,1660,1661], [1572,1573,1574,1575,1576,1577,1602,1603,1604,1605,1606,1607,1632,1633,1634,1635,1636,1637,1662,1663,1664,1665,1666,1667], [1578,1579,1580,1581,1582,1583,1608,1609,1610,1611,1612,1613,1638,1639,1640,1641,1642,1643,1668,1669,1670,1671,1672,1673], [1584,1585,1586,1587,1588,1589,1614,1615,1616,1617,1618,1619,1644,1645,1646,1647,1648,1649,1674,1675,1676,1677,1678,1679], [1680,1681,1682,1683,1684,1685,1710,1711,1712,1713,1714,1715,1740,1741,1742,1743,1744,1745,1770,1771,1772,1773,1774,1775], [1686,1687,1688,1689,1690,1691,1716,1717,1718,1719,1720,1721,1746,1747,1748,1749,1750,1751,1776,1777,1778,1779,1780,1781], [1692,1693,1694,1695,1696,1697,1722,1723,1724,1725,1726,1727,1752,1753,1754,1755,1756,1757,1782,1783,1784,1785,1786,1787], [1698,1699,1700,1701,1702,1703,1728,1729,1730,1731,1732,1733,1758,1759,1760,1761,1762,1763,1788,1789,1790,1791,1792,1793], [1704,1705,1706,1707,1708,1709,1734,1735,1736,1737,1738,1739,1764,1765,1766,1767,1768,1769,1794,1795,1796,1797,1798,1799], ] # Ideal task geometry for a 4x12 grid of compute nodes with 6x4 grid # of MPI ranks on each. wrf_4x12_6x4 = [ [0,1,2,3,4,5,24,25,26,27,28,29,48,49,50,51,52,53,72,73,74,75,76,77], [6,7,8,9,10,11,30,31,32,33,34,35,54,55,56,57,58,59,78,79,80,81,82,83], [12,13,14,15,16,17,36,37,38,39,40,41,60,61,62,63,64,65,84,85,86,87,88,89], [18,19,20,21,22,23,42,43,44,45,46,47,66,67,68,69,70,71,90,91,92,93,94,95], [96,97,98,99,100,101,120,121,122,123,124,125,144,145,146,147,148,149,168,169,170,171,172,173], [102,103,104,105,106,107,126,127,128,129,130,131,150,151,152,153,154,155,174,175,176,177,178,179], [108,109,110,111,112,113,132,133,134,135,136,137,156,157,158,159,160,161,180,181,182,183,184,185], [114,115,116,117,118,119,138,139,140,141,142,143,162,163,164,165,166,167,186,187,188,189,190,191], [192,193,194,195,196,197,216,217,218,219,220,221,240,241,242,243,244,245,264,265,266,267,268,269], [198,199,200,201,202,203,222,223,224,225,226,227,246,247,248,249,250,251,270,271,272,273,274,275], [204,205,206,207,208,209,228,229,230,231,232,233,252,253,254,255,256,257,276,277,278,279,280,281], [210,211,212,213,214,215,234,235,236,237,238,239,258,259,260,261,262,263,282,283,284,285,286,287], [288,289,290,291,292,293,312,313,314,315,316,317,336,337,338,339,340,341,360,361,362,363,364,365], [294,295,296,297,298,299,318,319,320,321,322,323,342,343,344,345,346,347,366,367,368,369,370,371], [300,301,302,303,304,305,324,325,326,327,328,329,348,349,350,351,352,353,372,373,374,375,376,377], [306,307,308,309,310,311,330,331,332,333,334,335,354,355,356,357,358,359,378,379,380,381,382,383], [384,385,386,387,388,389,408,409,410,411,412,413,432,433,434,435,436,437,456,457,458,459,460,461], [390,391,392,393,394,395,414,415,416,417,418,419,438,439,440,441,442,443,462,463,464,465,466,467], [396,397,398,399,400,401,420,421,422,423,424,425,444,445,446,447,448,449,468,469,470,471,472,473], [402,403,404,405,406,407,426,427,428,429,430,431,450,451,452,453,454,455,474,475,476,477,478,479], [480,481,482,483,484,485,504,505,506,507,508,509,528,529,530,531,532,533,552,553,554,555,556,557], [486,487,488,489,490,491,510,511,512,513,514,515,534,535,536,537,538,539,558,559,560,561,562,563], [492,493,494,495,496,497,516,517,518,519,520,521,540,541,542,543,544,545,564,565,566,567,568,569], [498,499,500,501,502,503,522,523,524,525,526,527,546,547,548,549,550,551,570,571,572,573,574,575], [576,577,578,579,580,581,600,601,602,603,604,605,624,625,626,627,628,629,648,649,650,651,652,653], [582,583,584,585,586,587,606,607,608,609,610,611,630,631,632,633,634,635,654,655,656,657,658,659], [588,589,590,591,592,593,612,613,614,615,616,617,636,637,638,639,640,641,660,661,662,663,664,665], [594,595,596,597,598,599,618,619,620,621,622,623,642,643,644,645,646,647,666,667,668,669,670,671], [672,673,674,675,676,677,696,697,698,699,700,701,720,721,722,723,724,725,744,745,746,747,748,749], [678,679,680,681,682,683,702,703,704,705,706,707,726,727,728,729,730,731,750,751,752,753,754,755], [684,685,686,687,688,689,708,709,710,711,712,713,732,733,734,735,736,737,756,757,758,759,760,761], [690,691,692,693,694,695,714,715,716,717,718,719,738,739,740,741,742,743,762,763,764,765,766,767], [768,769,770,771,772,773,792,793,794,795,796,797,816,817,818,819,820,821,840,841,842,843,844,845], [774,775,776,777,778,779,798,799,800,801,802,803,822,823,824,825,826,827,846,847,848,849,850,851], [780,781,782,783,784,785,804,805,806,807,808,809,828,829,830,831,832,833,852,853,854,855,856,857], [786,787,788,789,790,791,810,811,812,813,814,815,834,835,836,837,838,839,858,859,860,861,862,863], [864,865,866,867,868,869,888,889,890,891,892,893,912,913,914,915,916,917,936,937,938,939,940,941], [870,871,872,873,874,875,894,895,896,897,898,899,918,919,920,921,922,923,942,943,944,945,946,947], [876,877,878,879,880,881,900,901,902,903,904,905,924,925,926,927,928,929,948,949,950,951,952,953], [882,883,884,885,886,887,906,907,908,909,910,911,930,931,932,933,934,935,954,955,956,957,958,959], [960,961,962,963,964,965,984,985,986,987,988,989,1008,1009,1010,1011,1012,1013,1032,1033,1034,1035,1036,1037], [966,967,968,969,970,971,990,991,992,993,994,995,1014,1015,1016,1017,1018,1019,1038,1039,1040,1041,1042,1043], [972,973,974,975,976,977,996,997,998,999,1000,1001,1020,1021,1022,1023,1024,1025,1044,1045,1046,1047,1048,1049], [978,979,980,981,982,983,1002,1003,1004,1005,1006,1007,1026,1027,1028,1029,1030,1031,1050,1051,1052,1053,1054,1055], [1056,1057,1058,1059,1060,1061,1080,1081,1082,1083,1084,1085,1104,1105,1106,1107,1108,1109,1128,1129,1130,1131,1132,1133], [1062,1063,1064,1065,1066,1067,1086,1087,1088,1089,1090,1091,1110,1111,1112,1113,1114,1115,1134,1135,1136,1137,1138,1139], [1068,1069,1070,1071,1072,1073,1092,1093,1094,1095,1096,1097,1116,1117,1118,1119,1120,1121,1140,1141,1142,1143,1144,1145], [1074,1075,1076,1077,1078,1079,1098,1099,1100,1101,1102,1103,1122,1123,1124,1125,1126,1127,1146,1147,1148,1149,1150,1151] ] def plusprint(logger,f,irank,nranks): while nranks>0: n=min(nranks,24) f.write(','.join([ '%d'%x for x in range(irank,irank+n) ])+'\n') logger.info('Send ranks %d through %d'%(irank,irank+n-1)) irank=irank+n nranks=nranks-n return irank def cray_run_exe_callback(task,runner,components,ranks): coupler=None ocean=None wave=None wrfcompute=None wrfio=None logger=task.conf.log('cray_run_exe_callback') logger.info('Setting up Cray-specific settings for forecast job.') wrfcompute=task.confint('wrf_compute_ranks',0) if not wrfcompute: wrfcompute=task.confint('nproc_x')*task.confint('nproc_y') if wrfcompute<2: raise WCOSSConfigException( 'Please set nproc_x and nproc_y in [%s] section.'%( task.section)) logger.info('Write MPICH_RANK_ORDER file...') with open('MPICH_RANK_ORDER','wt') as f: irank=0 for c in components: r=ranks.get(c) if c=='wrf': wrfio=r-wrfcompute logger.info('WRF component %s has %s ranks so wrfio=%s.'%( c,repr(r),repr(wrfio))) elif c=='wrf_compute': wrfio=0 logger.info('WRF component %s has %s ranks so wrfio=%s.'%( c,repr(r),repr(wrfio))) else: logger.info('Component %s has %s ranks.'%(c,repr(r))) irank=plusprint(logger,f,irank,r) logger.info('Up to rank %s'%(repr(irank),)) continue if not r and c.find('wrf')>=0: iog=task.confint('nio_groups',0) tpg=task.confstr('nio_tasks_per_group','') wrfio=iog*sum([int(x) for x in re.split('(?:\s|,)+',tpg)]) if wrfcompute==5*15*6*4: logger.info('Using wrf_5x15_6x4 grid for WRF compute.') grid=wrf_5x15_6x4 #ZZ elif wrfcompute==5*3*8*16: #ZZ logger.info('Using wrf_5x3_8x16 grid for WRF compute.') #ZZ grid=wrf_5x3_8x16 elif wrfcompute==8*10*4*6: logger.info('Using wrf_8x10_4x6 grid for WRF compute.') grid=wrf_8x10_4x6 elif wrfcompute==7*10*4*6: logger.info('Using wrf_7x10_4x6 grid for WRF compute.') grid=wrf_7x10_4x6 elif wrfcompute==9*7*3*8: logger.info('Using wrf_9x7_3x8 grid for WRF compute.') grid=wrf_9x7_3x8 elif wrfcompute==4*13*6*4: logger.info('Using wrf_4x13_6x4 grid for WRF compute.') grid=wrf_4x13_6x4 elif wrfcompute==3*9*6*4: logger.info('Using wrf_3x9_6x4 grid for WRF compute.') grid=wrf_3x9_6x4 elif wrfcompute==4*5*4*6: logger.info('Using wrf_4x5_4x6 grid for WRF compute.') grid=wrf_4x5_4x6 else: raise WCOSSConfigException( 'WRF compute task count %d has no task geo in hwrf_wcoss.py.' ' Update hwrf_wcoss.py.'%(wrfcompute,)) logger.info('Write WRF compute grid.') for igrid in grid: f.write(','.join([ '%d'%(x+irank) for x in igrid ])+'\n') irank=irank+wrfcompute logger.info('Up to rank %s'%(repr(irank),)) if wrfio>0: logger.info('Write %s ranks for WRF I/O'%(repr(wrfio),)) irank=plusprint(logger,f,irank,wrfio) logger.info('Up to rank %s'%(repr(irank),)) logger.info('Wrote %s ranks to MPICH_RANK_ORDER file.'%(repr(irank),)) with open('MPICH_RANK_ORDER','rt') as f: iline=0 for line in f: iline=iline+1 logger.info('MPICH_RANK_ORDER:%04d:%s'%( iline,line.rstrip('\n'))) logger.info('Finished writing MPICH_RANK_ORDER file.') return runner.env(MPICH_RANK_REORDER_METHOD='3', IOBUF_PARAMS='*') def fcst_wcoss1(logger,coupled): """!Sets task geometry for Phase 1 WCOSS @param logger a logging.Logger for messages @param coupled if True, a coupled forecast, if False, uncoupled""" if coupled: logger.info('SETTING WCOSS PHASE 1 VARIABLES FOR HWRF COUPLED FORECAST') # Take this, you 72 character line purists: loudenv(logger,'LSB_PJL_TASK_GEOMETRY','{(0,1,2,3,4,5,6,7,8,9,10,11,12)(13,14,15,16,29,30,31,32,45,46,47,48,61,62,63,64)(17,18,19,20,33,34,35,36,49,50,51,52,65,66,67,68)(21,22,23,24,37,38,39,40,53,54,55,56,69,70,71,72)(25,26,27,28,41,42,43,44,57,58,59,60,73,74,75,76)(77,78,79,80,93,94,95,96,109,110,111,112,125,126,127,128)(81,82,83,84,97,98,99,100,113,114,115,116,129,130,131,132)(85,86,87,88,101,102,103,104,117,118,119,120,133,134,135,136)(89,90,91,92,105,106,107,108,121,122,123,124,137,138,139,140)(141,142,143,144,157,158,159,160,173,174,175,176,189,190,191,192)(145,146,147,148,161,162,163,164,177,178,179,180,193,194,195,196)(149,150,151,152,165,166,167,168,181,182,183,184,197,198,199,200)(153,154,155,156,169,170,171,172,185,186,187,188,201,202,203,204)(205,206,207,208,221,222,223,224,237,238,239,240,253,254,255,256)(209,210,211,212,225,226,227,228,241,242,243,244,257,258,259,260)(213,214,215,216,229,230,231,232,245,246,247,248,261,262,263,264)(217,218,219,220,233,234,235,236,249,250,251,252,265,266,267,268)(269,270,271,272,285,286,287,288,301,302,303,304,317,318,319,320)(273,274,275,276,289,290,291,292,305,306,307,308,321,322,323,324)(277,278,279,280,293,294,295,296,309,310,311,312,325,326,327,328)(281,282,283,284,297,298,299,300,313,314,315,316,329,330,331,332)(333,334,335,336,349,350,351,352,365,366,367,368,381,382,383,384)(337,338,339,340,353,354,355,356,369,370,371,372,385,386,387,388)(341,342,343,344,357,358,359,360,373,374,375,376,389,390,391,392)(345,346,347,348,361,362,363,364,377,378,379,380,393,394,395,396)(397,398,399,400,413,414,415,416,429,430,431,432,445,446,447,448)(401,402,403,404,417,418,419,420,433,434,435,436,449,450,451,452)(405,406,407,408,421,422,423,424,437,438,439,440,453,454,455,456)(409,410,411,412,425,426,427,428,441,442,443,444,457,458,459,460)(461,462,463,464,465,466,467,468,469,470,471,472)}') else: logger.info('SETTING WCOSS PHASE 1 VARIABLES FOR HWRF ATM-ONLY FORECAST') # Take this, you 72 character line purists: loudenv(logger,'LSB_PJL_TASK_GEOMETRY','{(0,1,2,3,16,17,18,19,32,33,34,35,48,49,50,51)(4,5,6,7,20,21,22,23,36,37,38,39,52,53,54,55)(8,9,10,11,24,25,26,27,40,41,42,43,56,57,58,59)(12,13,14,15,28,29,30,31,44,45,46,47,60,61,62,63)(64,65,66,67,80,81,82,83,96,97,98,99,112,113,114,115)(68,69,70,71,84,85,86,87,100,101,102,103,116,117,118,119)(72,73,74,75,88,89,90,91,104,105,106,107,120,121,122,123)(76,77,78,79,92,93,94,95,108,109,110,111,124,125,126,127)(128,129,130,131,144,145,146,147,160,161,162,163,176,177,178,179)(132,133,134,135,148,149,150,151,164,165,166,167,180,181,182,183)(136,137,138,139,152,153,154,155,168,169,170,171,184,185,186,187)(140,141,142,143,156,157,158,159,172,173,174,175,188,189,190,191)(192,193,194,195,208,209,210,211,224,225,226,227,240,241,242,243)(196,197,198,199,212,213,214,215,228,229,230,231,244,245,246,247)(200,201,202,203,216,217,218,219,232,233,234,235,248,249,250,251)(204,205,206,207,220,221,222,223,236,237,238,239,252,253,254,255)(256,257,258,259,272,273,274,275,288,289,290,291,304,305,306,307)(260,261,262,263,276,277,278,279,292,293,294,295,308,309,310,311)(264,265,266,267,280,281,282,283,296,297,298,299,312,313,314,315)(268,269,270,271,284,285,286,287,300,301,302,303,316,317,318,319)(320,321,322,323,336,337,338,339,352,353,354,355,368,369,370,371)(324,325,326,327,340,341,342,343,356,357,358,359,372,373,374,375)(328,329,330,331,344,345,346,347,360,361,362,363,376,377,378,379)(332,333,334,335,348,349,350,351,364,365,366,367,380,381,382,383)(384,385,386,387,400,401,402,403,416,417,418,419,432,433,434,435)(388,389,390,391,404,405,406,407,420,421,422,423,436,437,438,439)(392,393,394,395,408,409,410,411,424,425,426,427,440,441,442,443)(396,397,398,399,412,413,414,415,428,429,430,431,444,445,446,447)(448,449,450,451,452,453,454,455,456,457,458,459)}') def fcst_wcoss2(logger,coupled): """!Sets task geometry for Phase 2 WCOSS @param logger a logging.Logger for messages @param coupled if True, a coupled forecast, if False, uncoupled""" if coupled: logger.info('SETTING WCOSS PHASE 2 VARIABLES FOR HWRF COUPLED FORECAST') # Take this, you 72 character line purists: loudenv(logger,'LSB_PJL_TASK_GEOMETRY','{(0,1,2,3,4,5,6,7,8,9,10,11,12)(13,14,15,16,29,30,31,32,45,46,47,48,61,62,63,64,77,78,79,80,93,94,95,96)(17,18,19,20,33,34,35,36,49,50,51,52,65,66,67,68,81,82,83,84,97,98,99,100)(21,22,23,24,37,38,39,40,53,54,55,56,69,70,71,72,85,86,87,88,101,102,103,104)(25,26,27,28,41,42,43,44,57,58,59,60,73,74,75,76,89,90,91,92,105,106,107,108)(109,110,111,112,125,126,127,128,141,142,143,144,157,158,159,160,173,174,175,176,189,190,191,192)(113,114,115,116,129,130,131,132,145,146,147,148,161,162,163,164,177,178,179,180,193,194,195,196)(117,118,119,120,133,134,135,136,149,150,151,152,165,166,167,168,181,182,183,184,197,198,199,200)(121,122,123,124,137,138,139,140,153,154,155,156,169,170,171,172,185,186,187,188,201,202,203,204)(205,206,207,208,221,222,223,224,237,238,239,240,253,254,255,256,269,270,271,272,285,286,287,288)(209,210,211,212,225,226,227,228,241,242,243,244,257,258,259,260,273,274,275,276,289,290,291,292)(213,214,215,216,229,230,231,232,245,246,247,248,261,262,263,264,277,278,279,280,293,294,295,296)(217,218,219,220,233,234,235,236,249,250,251,252,265,266,267,268,281,282,283,284,297,298,299,300)(301,302,303,304,317,318,319,320,333,334,335,336,349,350,351,352,365,366,367,368,381,382,383,384)(305,306,307,308,321,322,323,324,337,338,339,340,353,354,355,356,369,370,371,372,385,386,387,388)(309,310,311,312,325,326,327,328,341,342,343,344,357,358,359,360,373,374,375,376,389,390,391,392)(313,314,315,316,329,330,331,332,345,346,347,348,361,362,363,364,377,378,379,380,393,394,395,396)(397,398,399,400,413,414,415,416,429,430,431,432,445,446,447,448,461,462,463,464,477,478,479,480)(401,402,403,404,417,418,419,420,433,434,435,436,449,450,451,452,465,466,467,468,481,482,483,484)(405,406,407,408,421,422,423,424,437,438,439,440,453,454,455,456,469,470,471,472,485,486,487,488)(409,410,411,412,425,426,427,428,441,442,443,444,457,458,459,460,473,474,475,476,489,490,491,492)(493,494,495,496,497,498,499,500,501,502,503,504)}') else: logger.info('SETTING WCOSS PHASE 2 VARIABLES FOR HWRF ATM-ONLY FORECAST') # Take this, you 72 character line purists: loudenv(logger,'LSB_PJL_TASK_GEOMETRY','{(0,1,2,3,16,17,18,19,32,33,34,35,48,49,50,51,64,65,66,67,80,81,82,83)(4,5,6,7,20,21,22,23,36,37,38,39,52,53,54,55,68,69,70,71,84,85,86,87)(8,9,10,11,24,25,26,27,40,41,42,43,56,57,58,59,72,73,74,75,88,89,90,91)(12,13,14,15,28,29,30,31,44,45,46,47,60,61,62,63,76,77,78,79,92,93,94,95)(96,97,98,99,112,113,114,115,128,129,130,131,144,145,146,147,160,161,162,163,176,177,178,179)(100,101,102,103,116,117,118,119,132,133,134,135,148,149,150,151,164,165,166,167,180,181,182,183)(104,105,106,107,120,121,122,123,136,137,138,139,152,153,154,155,168,169,170,171,184,185,186,187)(108,109,110,111,124,125,126,127,140,141,142,143,156,157,158,159,172,173,174,175,188,189,190,191)(192,193,194,195,208,209,210,211,224,225,226,227,240,241,242,243,256,257,258,259,272,273,274,275)(196,197,198,199,212,213,214,215,228,229,230,231,244,245,246,247,260,261,262,263,276,277,278,279)(200,201,202,203,216,217,218,219,232,233,234,235,248,249,250,251,264,265,266,267,280,281,282,283)(204,205,206,207,220,221,222,223,236,237,238,239,252,253,254,255,268,269,270,271,284,285,286,287)(288,289,290,291,304,305,306,307,320,321,322,323,336,337,338,339,352,353,354,355,368,369,370,371)(292,293,294,295,308,309,310,311,324,325,326,327,340,341,342,343,356,357,358,359,372,373,374,375)(296,297,298,299,312,313,314,315,328,329,330,331,344,345,346,347,360,361,362,363,376,377,378,379)(300,301,302,303,316,317,318,319,332,333,334,335,348,349,350,351,364,365,366,367,380,381,382,383)(384,385,386,387,400,401,402,403,416,417,418,419,432,433,434,435,448,449,450,451,464,465,466,467)(388,389,390,391,404,405,406,407,420,421,422,423,436,437,438,439,452,453,454,455,468,469,470,471)(392,393,394,395,408,409,410,411,424,425,426,427,440,441,442,443,456,457,458,459,472,473,474,475)(396,397,398,399,412,413,414,415,428,429,430,431,444,445,446,447,460,461,462,463,476,477,478,479)(480,481,482,483,484,485,486,487,488,489,490,491)}') def set_vars_for_products(logger): """!Sets variables to speed up the products job on WCOSS @param logger a logging.Logger for log messages""" loudenv(logger,'MP_USE_BULK_XFER','yes') #loudenv(logger,'MP_EUIDEVICE','sn_single') #loudenv(logger,'MP_EUILIB','us') loudenv(logger,'OMP_NUM_THREADS','1') loudenv(logger,'MKL_NUM_THREADS','1') loudenv(logger,'FORT_BUFFERED','TRUE') #loudenv(logger,'MP_POLLING_INTERVAL',str(3*3600000)) #loudenv(logger,'MP_RETRANSMIT_INTERVAL',str(3*3600000)) def set_vars_for_coupled_hwrf(logger,wave,ocean,wrf_ranks): """!Sets variables that seem to speed up the H15B (2015 pre-baseline) version of HWRF on Phase I WCOSS. @param logger a logging.Logger for log messages @param wave "WW3" or the empty string @param ocean "POM", "HYCOM" or the empty string @param wrf_ranks Number of WRF ranks. If this number is small, then the function assumes a custom task count is in use, and will not set task geometry. This is a kludge used to prevent 2km task geometry settings for the 3km configuration. """ loudenv(logger,'MP_USE_BULK_XFER','yes') loudenv(logger,'MP_EUIDEVICE','sn_full') loudenv(logger,'MP_EUILIB','us') loudenv(logger,'MPICH_ALLTOALL_THROTTLE','0') loudenv(logger,'MP_EAGER_LIMIT','100K') loudenv(logger,'OMP_NUM_THREADS','1') loudenv(logger,'MKL_NUM_THREADS','1') loudenv(logger,'FORT_BUFFERED','TRUE') which_wcoss=os.environ.get('WHICH_WCOSS','2') if not wave and not ocean: coupled=False elif not wave and ocean=='HYCOM': coupled=True else: logger.warning('No known LSB_PJL_TASK_GEOMETRY for this ' 'configuration. Will not set that variable.') return if wrf_ranks<400: logger.warning('Not setting LSB_PJL_TASK_GEOMETRY due to small ' 'wrf rank count %d'%wrf_ranks) elif which_wcoss=='2': fcst_wcoss2(logger,coupled) elif which_wcoss=='1': fcst_wcoss1(logger,coupled) else: raise AssertionError('OOPES! FORGOT TO SET WHICH_WCOSS (%s)' %(which_wcoss,)) def set_vars_for_ensda_hwrf(logger): """!Sets variables that seem to speed up the H15B (2015 pre-baseline) version of HWRF on Phase 2 WCOSS when running ensda jobs. @param logger a logging.Logger for log messages""" loudenv(logger,'MP_USE_BULK_XFER','yes') loudenv(logger,'MP_EUIDEVICE','sn_full') loudenv(logger,'MP_EUILIB','us') loudenv(logger,'MPICH_ALLTOALL_THROTTLE','0') loudenv(logger,'MP_EAGER_LIMIT','100K') loudenv(logger,'OMP_NUM_THREADS','1') loudenv(logger,'MKL_NUM_THREADS','1') loudenv(logger,'FORT_BUFFERED','TRUE') def set_vars_for_gsi(logger): """!Set variables for running GSI quickly on WCOSS. This routine is copied verbatim from the old ksh-based hwrf_nmm_gsi_d*.sh scripts and modified line-by-line for Python. It speeds up the 2014 HWRF GSI jobs by more than a factor of three. @param logger a logging.Logger for log messages""" logger.info('SETTING WCOSS VARIABLES FOR GSI') ################# set environment variables ################## # Set environment variables for NCEP IBM loudenv(logger,'MEMORY_AFFINITY','MCM') loudenv(logger,'MP_SHARED_MEMORY','yes') # Set environment variables for threads loudenv(logger,'AIXTHREAD_SCOPE','S') loudenv(logger,'XLSMPOPTS',"parthds=1:stack=128000000") # Recommended MPI environment variable setttings from IBM # (Appendix E, HPC Clusters Using InfiniBand on IBM Power Systems # Servers). loudenv(logger,'LAPI_DEBUG_ENABLE_AFFINITY','YES') loudenv(logger,'MP_FIFO_MTU','4K') loudenv(logger,'MP_SYNC_QP','YES') loudenv(logger,'MP_SHM_ATTACH_THRESH','500000') loudenv(logger,'MP_EUIDEVELOP','min') loudenv(logger,'MP_USE_BULK_XFER','yes') loudenv(logger,'MP_BULK_MIN_MSG_SIZE','64k') loudenv(logger,'MP_RC_MAX_QP','8192') loudenv(logger,'LAPI_DEBUG_RC_DREG_THRESHOLD','1000000') loudenv(logger,'LAPI_DEBUG_QP_NOTIFICATION','no') loudenv(logger,'LAPI_DEBUG_RC_INIT_SETUP','yes') # Set environment variables for user preferences loudenv(logger,'XLFRTEOPTS',"nlwidth=80") loudenv(logger,'MP_LABELIO','yes') loudenv(logger,'MP_INFOLEVEL','1') loudenv(logger,'MP_USE_TOKEN_FLOW_CONTROL','yes')