diff --git a/benchmarks/pcie_collectives/serving.csv b/benchmarks/pcie_collectives/serving.csv new file mode 100644 index 00000000..8c81db98 --- /dev/null +++ b/benchmarks/pcie_collectives/serving.csv @@ -0,0 +1,353 @@ +machine,placement,gpus,process_cohort,variant,alpha,concurrency,tokens_per_second,completed_steps_per_second,gpu_ms_per_step,emitted_tokens_per_step,verified_drafts_per_request_round,width_one_graph_fraction +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,1,339.5768729399098,131.19576667997,7.613060427674836,2.618350268977884,5.165869695158398,0.0 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,1,339.38051922804084,130.52835697457772,7.64951943766897,2.604686091919495,5.274256533493541,0.0 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,1,338.0981987975753,132.80367253572038,7.520883339238264,2.533215234720992,4.86064363743726,0.0 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,1,328.846135116077,133.35191638759298,7.48713969773596,2.490149955895325,4.741840635107321,0.00029403116730373417 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,1,328.29781736901043,131.50896847099997,7.591563391771019,2.5274299344066784,5.1532498509242695,0.0 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,8,1199.8018591168632,59.36317416356103,16.799225195508587,20.04557463672391,3.0583278255122273,0.001321003963011889 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,8,1186.986045332438,62.61779460659546,15.931200624921727,19.020037570444583,2.676387582314205,0.0 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,8,1149.312291318797,61.20637693345964,16.287895620755926,18.798206278026907,2.8440359608283834,0.0006406149903907751 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,8,1179.6691653543971,62.38240425441784,15.98808456002514,18.829038340666248,2.783794404275385,0.0006285355122564425 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,8,1182.9735672217612,62.14729765203184,16.043138362776027,18.851104100946372,2.6538309792472186,0.0 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,16,1658.6358897386083,46.26750321909088,21.49349265423729,35.772881355932206,2.31541313559322,0.002542372881355932 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,16,1691.339615212946,45.6792773373747,21.77163243862661,36.93133047210301,2.4009446621222694,0.0008583690987124463 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,16,1679.5554848164213,45.600623387237164,21.762250608770422,36.53912295786758,2.411068044788975,0.0 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,16,1634.2920460679743,44.698973193850115,22.215085071929824,36.6,2.5063193757555777,0.0 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,16,1614.0308766329506,44.898787278785925,22.078439810084035,35.6453781512605,2.531853180044299,0.0 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,32,2295.803044341115,31.524533115762395,31.330539060945274,72.86567164179104,2.91658830904247,0.026119402985074626 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,32,2310.455380392696,33.17132148720671,29.887123921985815,69.4869976359338,2.3259338867477024,0.07801418439716312 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,32,2323.8756797334327,31.01473668243295,31.89432871681416,74.84450063211125,2.9840880303989867,0.0025284450063211127 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,32,2321.1359911219274,34.03386314858482,29.072766510368663,68.10138248847926,2.25414265129683,0.12327188940092165 +frank1,host_bridges,"0,4,8,12",1,ordinary,0.6,32,2316.955084314862,34.15144906144713,29.051984466130882,67.77037887485649,2.3314796211251436,0.1377726750861079 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,1,329.0889428819729,132.7252016077411,7.5240379559822745,2.470605612998523,4.978138847858198,0.0002954209748892171 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,1,338.6964008274735,132.41047628609402,7.540512672490376,2.5688480900207287,4.998223275096239,0.0002961208172934557 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,1,327.01479156912825,132.76364726222675,7.520613396337862,2.4518606024808034,4.994093325457767,0.00029533372711163615 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,1,344.12153080120714,131.07705956951398,7.618873309003889,2.6272808854322465,5.320370924319474,0.0 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,1,347.5261725337142,130.7642396192808,7.636138928935533,2.7106446776611692,5.286356821589205,0.0 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,8,1261.101553992852,65.87203010423558,15.145784305357143,19.12142857142857,2.5862788963460104,0.0011904761904761906 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,8,1316.14166090272,63.872579838047116,15.605219467157767,20.804788213627994,2.8935565624760002,0.0 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,8,1260.7330195444845,63.597801515663086,15.689662064734895,19.849568434032058,2.895114056720099,0.0 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,8,1267.5201467152049,66.6562639110789,14.967150945294117,18.927647058823528,2.446961894953656,0.0 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,8,1342.7844245507836,62.18626592373839,16.03869363114754,21.440731399747794,2.9601860611794386,0.0 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,16,1735.911502712365,47.52201448903135,20.959187623762375,36.240924092409244,2.336937403000517,0.0033003300330033004 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,16,1800.8991847841226,51.24688733343442,19.46970193573068,34.951798010711556,1.9687034992559882,0.0 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,16,1824.7578144913734,49.44334902957906,20.149413795400474,36.89928628072958,2.094119400019867,0.0 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,16,1822.5122014350125,51.991814386242666,19.198729652337857,35.06636500754148,1.9661217161217162,0.0007541478129713424 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,16,1814.9869401966748,51.75653210306154,19.290954496969697,34.932575757575755,1.9697271176805002,0.0 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,32,2364.34835129373,32.89679483097948,30.180164374255064,71.74731823599524,2.585545942720764,0.04290822407628129 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,32,2383.75060611557,36.66093674063647,26.997129658823532,65.01069518716578,1.9434689363983648,0.18288770053475936 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,32,2361.269694368842,32.46539659252941,30.541473710144928,72.72342995169082,2.6336389815095482,0.0 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,32,2388.216831252402,33.13212859712784,29.87115461775148,72.203550295858,2.4230569563927618,0.0 +frank1,host_bridges,"0,4,8,12",2,clustered_full,0.6,32,2399.760448992658,33.484959384544126,29.62746255503513,71.65456674473067,2.392998824566559,0.0 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,1,342.2698021343662,138.52805489083522,7.2080347625247665,2.4783470138692327,3.866119445230682,0.0 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,1,341.7648518905426,137.82158536425752,7.2430265809388334,2.5106685633001424,4.02275960170697,0.0 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,1,413.8549426651345,130.7245959886385,7.639529703659268,3.2315536892621477,4.880923815236953,0.0 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,1,369.19812917559625,137.4297369183141,7.266193949215406,2.61283880171184,3.9671897289586306,0.0002853067047075606 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,1,333.87358694755125,139.86037953179942,7.138158434538828,2.3894028595458368,3.6058312307261002,0.0 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,8,1198.3082272929946,66.4604560298919,15.011371156342182,17.9882005899705,2.1396103896103895,0.0017699115044247787 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,8,1198.9076507899522,65.47996613309083,15.22746180718563,18.226946107784432,2.38928035982009,0.0005988023952095808 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,8,1216.3027795548562,65.9898432884915,15.126064617944147,18.194295900178254,2.169266191325015,0.0 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,8,1192.229551274512,65.83283386894686,15.150274992257295,17.930315664085764,2.204586063132817,0.0005955926146515784 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,8,1210.7217840421765,64.85771332236808,15.379382112274579,18.54741128563118,2.3939084814922764,0.0 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,16,1727.9944477151662,54.07003716671669,18.4122680551124,31.883248730964468,1.4651711924439197,0.04133430021754895 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,16,1694.9589639389767,53.521111388696916,18.58118445934066,31.643223443223444,1.480339138405133,0.047619047619047616 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,16,1641.0108255245273,50.10986892032777,19.794759184663537,32.55320813771518,1.8910808693949481,0.15101721439749607 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,16,1680.6734057242854,57.206612006930015,17.422870005483205,29.348869088416723,1.1427958097200757,0.0 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,16,1607.3732595077015,56.22656311461887,17.672979054393306,28.51813110181311,1.5198308926080892,0.4211994421199442 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,32,2249.4362104312295,45.992809568253975,21.568121260869567,48.68115942028985,1.1605712760277629,0.6112531969309463 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,32,2259.4649982628835,48.06791084608518,20.6976912299843,46.85400313971743,0.8964030549396403,0.6200941915227629 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,32,2237.127315400975,48.97257300769632,20.27171298478783,45.67333867093675,0.8086478618751255,0.6589271417133707 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,32,2212.3341910213676,52.18778659320232,19.039015833959432,42.26671675432006,0.6187607370625751,0.7377911344853494 +frank1,host_bridges,"0,4,8,12",3,ordinary,0.8,32,2182.926517604446,54.22697985282933,18.1871252219812,40.228488792480114,0.555241497829233,0.8127259580621836 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,1,336.717817829808,139.38993085009201,7.163010160337552,2.4261603375527425,3.738396624472574,0.0 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,1,372.5430938079874,138.0583143055802,7.230506769667708,2.6120420335132066,3.886395910252769,0.00028401022436807724 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,1,335.78430265918644,138.8805257711416,7.1875663376623375,2.4234895539243366,3.7741389045736873,0.0 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,1,334.4483306942265,138.72382058548948,7.19761618089316,2.4030525720746185,3.844544940644432,0.0002826455624646693 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,1,343.8353666654302,138.25321672641147,7.21992867612025,2.479013045944413,3.8942144072603515,0.0002836074872376631 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,8,1236.6627342091133,67.87192932487142,14.695477110340843,18.19064124783362,2.4752353367125273,0.0028885037550548816 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,8,1358.0851004208826,67.32282244279949,14.81689271403611,20.042516016307513,2.419772859638905,0.0 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,8,1283.4527067900485,66.5780755972512,14.98732717196702,19.07773851590106,2.5541813898704357,0.0 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,8,1319.6049837901746,65.55827291663266,15.214917958732057,20.232057416267942,2.5797188154352377,0.0005980861244019139 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,8,1287.6284940732612,63.95085772641622,15.59068824218271,20.02513795217658,2.880515693346635,0.0 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,16,1803.215132822013,50.73711117813345,19.62318325888717,35.65378670788253,1.9443637420104591,0.011591962905718702 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,16,1799.8372750233382,51.756984611944915,19.276331575,34.695454545454545,1.964209325538286,0.0 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,16,1781.3876737854137,52.031282274483736,19.172772159758853,34.192916352675205,1.9656409288276382,0.0015071590052750565 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,16,1812.1192042184946,51.5213969726461,19.35591646651446,35.13622526636225,1.9665620243531203,0.0 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,16,1807.0025288832735,51.4038519457673,19.42174702364607,35.1487414187643,1.967963386727689,0.0 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,32,2319.5810206411065,49.247143934793144,20.221224858280255,46.98407643312102,0.8986912626199676,0.6202229299363057 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,32,2346.7385775134753,42.62083704976564,23.25466137350506,54.826126954921804,1.3229722326345839,0.44710211591536336 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,32,2263.2475020490874,51.08995638414304,19.440899271680735,44.11895625479662,0.8291356955569988,0.7221795855717574 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,32,2331.312856479491,44.7380219808576,22.27482971165644,52.36546888694128,1.2074772003076586,0.4890446976336547 +frank1,host_bridges,"0,4,8,12",4,clustered_full,0.8,32,2289.3474286584033,44.97423926576229,21.91816429614094,50.86744966442953,1.1298066820760664,0.535234899328859 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,1,338.66669091562295,129.12039633316817,7.7356679984816274,2.626784087458245,5.733070148800486,0.0003036744609778318 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,1,319.89363238725764,131.55234080154622,7.592415151117734,2.425037257824143,5.129061102831595,0.00029806259314456036 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,1,326.83792205627003,130.76661494891204,7.637777060269865,2.503448275862069,5.27976011994003,0.0 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,1,332.19850787463105,128.21723590666676,7.788548971253823,2.62262996941896,5.680428134556575,0.0 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,1,335.51122717643204,130.92445285623876,7.6284549386043725,2.5741239892183287,5.324049116501946,0.0002994908655286014 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,8,1255.816875831093,66.57941453979073,14.986535073616018,18.78916372202591,2.5893015030946067,0.0005889281507656066 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,8,1292.1214222107444,67.71677481354949,14.739367800810653,18.97741748697163,2.4711844772661453,0.0 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,8,1227.781659644538,64.46305493975213,15.479092576642337,18.831508515815084,2.8730991484184916,0.0 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,8,1261.3689278553284,66.77601207940027,14.939924419847328,18.74163241338814,2.575770925110132,0.0005871990604815032 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,8,1223.438692939409,63.95255995422721,15.597689660331085,19.01042305334151,2.9086649254877863,0.0 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,16,1781.5886539801074,52.0723767866035,19.139976115963854,34.378765060240966,2.0031617195979425,0.0007530120481927711 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,16,1803.0307881265253,52.22790867663779,19.083289426426425,34.46621621621622,1.991752674489844,0.0015015015015015015 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,16,1784.8146153449268,51.012803508224984,19.529005018447346,35.27594158339738,2.0415303176130895,0.0007686395080707148 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,16,1759.2764502669538,50.54250620596106,19.716263593483323,34.65632273079907,2.079567494181536,0.0 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,16,1791.5887283391266,51.405011353331716,19.397854948893976,35.02059496567506,1.9855072463768115,0.0 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,32,2380.8195206494706,35.014852438930625,28.334432472564387,68.06830907054871,2.217689935520045,0.0851063829787234 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,32,2285.4810801392364,37.52442212317257,26.253959908045978,61.025078369905955,1.8276515151515151,0.290491118077325 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,32,2238.505340591715,47.758588051231605,20.741596972085386,46.481937602627255,0.8879703314532952,0.6231527093596059 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,32,2322.7678005879984,33.83889053912771,29.425941615295482,68.51796060254925,2.626636601687518,0.12282734646581692 +frank2,host_bridges,"0,4,8,12",1,clustered_full,0.6,32,2277.9116787722173,37.83834718580093,26.064294113989636,60.31917098445596,1.7464018235102572,0.28808290155440414 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,1,344.06599586060105,130.57203187841887,7.647819666366367,2.6732732732732734,5.120720720720721,0.0 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,1,375.9882355572555,130.53166850162083,7.64886801772304,2.9675578251727246,5.228597176329228,0.0 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,1,345.22403438589106,128.93466747179704,7.746206218978102,2.6824817518248176,5.480231143552311,0.00030413625304136254 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,1,337.0223617707214,133.08464946499134,7.501600791985857,2.5406599882144962,4.659104301708898,0.0 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,1,350.16863548952443,130.21727399751694,7.669117706714845,2.637157482685938,5.1743450767841015,0.00030111412225233364 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,8,1188.2775121346313,62.30707092274893,16.00044175456262,19.066079295154186,2.7074476460399937,0.0006293266205160479 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,8,1157.4664048913955,64.3056057360136,15.51332400609756,18.20670731707317,2.506950809654751,0.0 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,8,1146.930228694041,61.83701908083342,16.125088336715283,18.68421052631579,2.8009516256938936,0.0006341154090044388 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,8,1165.0700098913305,60.85447807683064,16.39431836662371,19.105670103092784,2.8268363402061856,0.0 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,8,1140.5571607695601,60.935241023157445,16.364840372586873,18.763835263835265,2.9720881595881594,0.0 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,16,1685.7077903996858,44.85752796705349,22.167042860139862,37.20454545454545,2.4792636826822987,0.0017482517482517483 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,16,1678.456833279399,46.54275011780105,21.35082808508846,35.88542544229149,2.2798416886543538,0.0016849199663016006 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,16,1761.0938395726942,48.62209175245481,20.48305721532258,36.090322580645164,1.969949494949495,0.0 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,16,1733.9730960845231,50.583567924577814,19.711413686046512,34.03023255813954,1.7942918163285118,0.0 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,16,1647.1909623562203,45.640776878930325,21.808605280927836,35.955326460481096,2.407751854639286,0.000859106529209622 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,32,2305.6372886961867,32.937331500125154,30.058437448809524,69.94642857142857,2.5833457415128054,0.09404761904761905 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,32,2320.1991939051777,31.133300467969743,31.75177804156171,74.42569269521411,2.9891595711132135,0.003778337531486146 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,32,2300.8522990087404,31.01569562671424,31.81662422629583,74.17572692793932,2.9884706814580033,0.0037926675094816687 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,32,2323.051455891357,31.447225001475136,31.428922635910226,73.27306733167082,2.8459797033567527,0.0 +frank2,host_bridges,"0,4,8,12",2,ordinary,0.6,32,2280.4242445447217,36.15204935771952,27.26123724078091,62.99349240780911,1.9863957117655042,0.2678958785249458 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,1,335.9008870842817,137.43421985257405,7.26564595064194,2.410841654778887,3.9566333808844507,0.0002853067047075606 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,1,336.25076210769214,136.76661512253253,7.299041275516054,2.455275229357798,3.9956995412844036,0.0 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,1,335.6662919143945,138.37601549586114,7.215885102862001,2.408330971946727,3.81354491357325,0.0 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,1,341.9008979655399,137.5502999146744,7.2593759452679585,2.4968643101482324,3.854332953249715,0.0 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,1,342.37662569533904,135.62938805120018,7.3615072656837235,2.565770453888407,4.358774212200058,0.0002891008962127783 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,8,1270.6545515852765,67.2865554748469,14.828363938228438,18.77039627039627,2.5002916727431823,0.0005827505827505828 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,8,1235.1561158363586,65.01076348946775,15.327548701447528,18.8124246079614,2.7933353483451717,0.0 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,8,1277.3992700713766,68.77645252715521,14.507274802736603,18.521664766248573,2.398145506419401,0.0005701254275940707 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,8,1260.9234440604139,69.01113551659589,14.4531292375,18.157386363636363,2.3983231490692054,0.0 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,8,1286.206019972113,68.73467984560817,14.518118981745578,18.770108385624642,2.4075606276747505,0.0 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,16,1835.3051425862452,51.75662208857042,19.21131635757576,35.339393939393936,1.9190239279791519,0.009848484848484848 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,16,1843.4914792066613,51.326204838116645,19.400827825821235,35.88999236058059,1.9574895878213414,0.0015278838808250573 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,16,1812.3295678434376,51.24898012312115,19.437449146136192,35.361897475133894,1.938739342848932,0.0 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,16,1807.380042059699,51.208723508738636,19.449499748851455,35.381316998468606,1.969781273983116,0.0 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,16,1836.2565568067919,51.32754325426447,19.419422813598167,35.669977081741784,1.9638646602127863,0.0007639419404125286 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,32,2340.816206900451,43.68003211676664,22.706270397666067,53.525134649910235,1.255167378117277,0.47217235188509876 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,32,2219.6284040557666,57.71789925563086,17.250409138586956,38.405570652173914,0.431413390010627,0.8539402173913043 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,32,2214.690505775745,51.171015733826344,19.290969479693487,43.24214559386973,0.7280794320798158,0.7264367816091954 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,32,2256.5041046839174,52.973568214029264,18.72167966987417,42.36861584011843,0.7081493189530937,0.7572168763878608 +frank2,host_bridges,"0,4,8,12",3,clustered_full,0.8,32,2281.0870992544287,52.267395127170104,18.970767288822206,43.47636909227307,0.7057457786116322,0.7119279819954989 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,1,332.6684799089351,136.45180149237333,7.317098703448276,2.467241379310345,4.091954022988506,0.0 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,1,420.9261722771533,134.8493057093271,7.403792916545507,3.2233207327711546,4.266065716778133,0.0 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,1,413.39550630886134,132.2959176325439,7.547871573503261,3.1437462951985773,4.529342027267338,0.0002963841138114997 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,1,343.7453563979883,138.09931330277206,7.2294556550255535,2.5079500283929583,3.8094832481544576,0.0 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,1,336.72170926275027,139.43216293114577,7.159261120359956,2.388638920134983,3.635545556805399,0.0 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,8,1160.1733752489415,64.2715816581999,15.510904750466707,17.925326695706286,2.395470112079701,0.002489110143123833 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,8,1213.7442452745104,65.16795791120083,15.307676456077015,18.494584837545126,2.2966254896053027,0.0006016847172081829 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,8,1204.9551126892234,65.08939532095899,15.323618739156625,18.52409638554217,2.259563253012048,0.0 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,8,1155.0860098467583,63.99029757023171,15.58168177022059,18.01776960784314,2.46006438755174,0.00980392156862745 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,8,1206.817681833139,64.65851824809089,15.426551810187993,18.692540933899334,2.3584017016104526,0.0006064281382656155 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,16,1687.2610809267821,53.01271262922329,18.78505346819527,31.767011834319526,1.5951178841076474,0.13757396449704143 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,16,1737.8673918708403,51.83684957110907,19.18525779954614,33.56051437216339,1.633851549909944,0.015128593040847202 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,16,1643.1297191912313,52.0718987926221,19.08202494051205,31.51581325301205,1.7291313359713585,0.1980421686746988 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,16,1638.1476149139742,59.167680359261254,16.840203625579854,27.722995361166337,1.172033195020747,0.27501656726308815 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,16,1710.19974072285,51.79696839227958,19.239031613928844,33.10749432248297,1.5855911330049262,0.001514004542013626 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,32,2237.6787068342687,47.48400851740419,20.76119094384806,47.00825763831544,0.8383295431052306,0.6564822460776218 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,32,2188.032290809094,51.64363108577365,19.149333851176916,42.34624145785877,0.6489422391252674,0.7547456340167046 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,32,2185.5361298516495,53.9928877826468,18.33715871895425,40.19317356572259,0.5495267995267995,0.8046477850399419 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,32,2241.775330446004,44.189823973497,22.451786244010645,50.58207630878438,1.3313833639757089,0.554569653948536 +frank2,host_bridges,"0,4,8,12",4,ordinary,0.8,32,2230.7537549394115,45.21009491604108,21.92102063573287,49.04683434518647,1.2101390246551538,0.5949696444058976 +frank1,switched,"0,1,2,3",1,ordinary,0.6,1,367.5378094783485,140.95879348546592,7.083060677607789,2.6317107093184977,5.2344923504867875,0.0 +frank1,switched,"0,1,2,3",1,ordinary,0.6,1,359.43709160661075,141.9784284320688,7.032610457056062,2.5363159348246342,5.049986191659762,0.0 +frank1,switched,"0,1,2,3",1,ordinary,0.6,1,354.8499911625159,143.6637473104562,6.950210340611354,2.476528384279476,4.869541484716157,0.0002729257641921397 +frank1,switched,"0,1,2,3",1,ordinary,0.6,8,1338.5789087288958,68.81258195203709,14.48659170940171,19.504843304843305,2.675669897377423,0.0005698005698005698 +frank1,switched,"0,1,2,3",1,ordinary,0.6,8,1392.4721428925495,66.46036682368776,14.986643605309734,20.88141592920354,2.8382809038546744,0.0 +frank1,switched,"0,1,2,3",1,ordinary,0.6,8,1357.6229856764414,71.43994728764991,13.968521395718989,18.907244785949505,2.3984600577478346,0.0005488474204171241 +frank1,switched,"0,1,2,3",1,ordinary,0.6,16,1892.1380403030937,54.34463262482377,18.33183643001443,34.544011544011546,1.9813311688311688,0.0007215007215007215 +frank1,switched,"0,1,2,3",1,ordinary,0.6,16,1923.2420868949027,54.697375027844494,18.243052648028677,34.980645161290326,1.96681654676259,0.0014336917562724014 +frank1,switched,"0,1,2,3",1,ordinary,0.6,16,1917.3087284969608,53.325258989948814,18.667437686764707,35.77426470588235,1.978332873309412,0.0 +frank1,switched,"0,1,2,3",1,ordinary,0.6,32,2531.3560962762735,36.42562948717254,27.12920889558665,69.41765339074273,2.2681051921780173,0.04951560818083961 +frank1,switched,"0,1,2,3",1,ordinary,0.6,32,2564.1185009241917,36.033677779191066,27.47090656147987,71.05984766050054,2.2895868897234553,0.035908596300326445 +frank1,switched,"0,1,2,3",1,ordinary,0.6,32,2474.9220286667205,43.248220238069486,22.840739432456935,56.8558476881233,1.4567007382169221,0.38803263825929285 +frank1,switched,"4,5,6,7",1,clustered_full,0.6,1,395.7517250414275,138.68410264541717,7.196916410800113,2.775233248515691,5.642917726887193,0.0002827254735651682 +frank1,switched,"4,5,6,7",1,clustered_full,0.6,1,365.3755979448807,142.0575185255069,7.03022585923268,2.5953629588738614,5.11012972674579,0.0 +frank1,switched,"4,5,6,7",1,clustered_full,0.6,1,361.0170402523842,144.0558432824707,6.931362952912357,2.504354926510615,4.747958628198149,0.0 +frank1,switched,"4,5,6,7",1,clustered_full,0.6,8,1341.6226935492082,66.30325028146743,15.03235620993495,20.321111768184505,2.897041420118343,0.0005913660555884093 +frank1,switched,"4,5,6,7",1,clustered_full,0.6,8,1317.5800912576112,67.91078046464033,14.689995531755196,19.32794457274827,2.900115640358485,0.0 +frank1,switched,"4,5,6,7",1,clustered_full,0.6,8,1322.696020759836,67.28371051007485,14.821018682983684,19.437062937062937,2.895836376917458,0.0005827505827505828 +frank1,switched,"4,5,6,7",1,clustered_full,0.6,16,1901.915268426518,53.48188095883141,18.614657151026393,35.382697947214076,2.003117549972492,0.002932551319648094 +frank1,switched,"4,5,6,7",1,clustered_full,0.6,16,1866.4855158577368,53.91317960341882,18.48370963781818,34.41236363636364,1.970250569476082,0.0007272727272727272 +frank1,switched,"4,5,6,7",1,clustered_full,0.6,16,1830.3133352538389,52.07048169853711,19.138090087349397,34.99698795180723,2.1885956644674835,0.0 +frank1,switched,"4,5,6,7",1,clustered_full,0.6,32,2558.406875003507,33.17122322193989,29.84682186997636,76.78250591016548,2.9547813194959227,0.00591016548463357 +frank1,switched,"4,5,6,7",1,clustered_full,0.6,32,2496.9060295927793,33.87711766058088,29.233600947916667,73.12731481481481,2.9981079901033327,0.0 +frank1,switched,"4,5,6,7",1,clustered_full,0.6,32,2483.219627775154,33.75890795054954,29.17724524970964,73.37166085946573,2.9986850756081527,0.0011614401858304297 +frank1,switched,"0,1,2,3",2,clustered_full,0.6,1,363.46362104806474,141.4694354271475,7.056620257206208,2.6238913525498893,5.182649667405765,0.0002771618625277162 +frank1,switched,"0,1,2,3",2,clustered_full,0.6,1,367.7608839415298,142.48804182058882,7.0071304523940565,2.591909741331866,5.007705008255366,0.0 +frank1,switched,"0,1,2,3",2,clustered_full,0.6,1,355.98939317814614,141.3521549384559,7.064947111234397,2.5398058252427185,5.174202496532594,0.0 +frank1,switched,"0,1,2,3",2,clustered_full,0.6,8,1312.75265861639,68.06788950361165,14.63603503859447,19.2713133640553,2.765494378783511,0.000576036866359447 +frank1,switched,"0,1,2,3",2,clustered_full,0.6,8,1330.8885458952948,68.02907114605333,14.649048864553313,19.63227665706052,2.8878787878787877,0.0 +frank1,switched,"0,1,2,3",2,clustered_full,0.6,8,1378.0572081717687,69.12726771389175,14.416754441860466,19.903573454339195,2.4879175550817343,0.0017016449234259785 +frank1,switched,"0,1,2,3",2,clustered_full,0.6,16,1901.9072557100326,53.677990507430394,18.55471426880935,35.5018261504748,1.9828594935551695,0.003652300949598247 +frank1,switched,"0,1,2,3",2,clustered_full,0.6,16,1870.0454918215676,55.0111159376942,18.09374739914469,34.01639344262295,1.7967229216894365,0.0 +frank1,switched,"0,1,2,3",2,clustered_full,0.6,16,1918.601053223188,53.52104815549216,18.61361284981685,35.87472527472527,1.9763465505386202,0.0 +frank1,switched,"0,1,2,3",2,clustered_full,0.6,32,2535.998873902063,35.7199278510275,27.742532007683867,71.25027442371021,2.3407823152675435,0.01646542261251372 +frank1,switched,"0,1,2,3",2,clustered_full,0.6,32,2468.204668473438,33.9162839170466,29.046698225433524,72.50635838150289,2.910030572135682,0.028901734104046242 +frank1,switched,"0,1,2,3",2,clustered_full,0.6,32,2432.619527765294,48.659115830880545,20.34853570024174,50.197421434327154,1.0780539557441648,0.5398871877518131 +frank1,switched,"4,5,6,7",2,ordinary,0.8,1,367.476969863125,153.27053940027588,6.513102669736505,2.372217958557176,3.3885904323356355,0.00025581990278843696 +frank1,switched,"4,5,6,7",2,ordinary,0.8,1,367.0420491628224,150.09483315911822,6.650953487722048,2.475705329153605,3.81687565308255,0.0 +frank1,switched,"4,5,6,7",2,ordinary,0.8,1,362.2572614615374,151.27154302691244,6.599047979263867,2.4178330741316745,3.6635562467599794,0.0 +frank1,switched,"4,5,6,7",2,ordinary,0.8,8,1375.3880717374968,71.83193565011098,13.876054533296942,19.04585152838428,2.386400873839432,0.0005458515283842794 +frank1,switched,"4,5,6,7",2,ordinary,0.8,8,1327.551080196784,71.79318216319851,13.87878386073184,18.463134898962316,2.3771198030634575,0.0 +frank1,switched,"4,5,6,7",2,ordinary,0.8,8,1351.6612036404028,71.91029569857035,13.865503181025082,18.757360959651034,2.391485581522482,0.0010905125408942203 +frank1,switched,"4,5,6,7",2,ordinary,0.8,16,1878.854764475149,56.73640032128226,17.543356547339325,33.109191430545955,1.6462376280416648,0.007601935038009675 +frank1,switched,"4,5,6,7",2,ordinary,0.8,16,1907.4888754369917,54.148585186639934,18.38911639391745,35.07748008689356,1.9512051200581,0.003620564808110065 +frank1,switched,"4,5,6,7",2,ordinary,0.8,16,1906.5972185829607,55.363807043927395,17.971770164305948,34.288243626062325,1.7866383129541024,0.0035410764872521247 +frank1,switched,"4,5,6,7",2,ordinary,0.8,32,2473.342566264543,39.83667975950882,24.67644283070866,61.62795275590551,1.9733460992031626,0.3218503937007874 +frank1,switched,"4,5,6,7",2,ordinary,0.8,32,2526.5438898363536,40.778013576530796,24.181215873076923,61.60288461538462,1.6974207544895745,0.28365384615384615 +frank1,switched,"4,5,6,7",2,ordinary,0.8,32,2364.9867105289836,56.85421422363856,17.439100411034484,41.66068965517241,0.6893103000389661,0.7675862068965518 +frank1,switched,"0,1,2,3",3,ordinary,0.8,1,376.1225628287844,146.83994939338206,6.7995005604806416,2.5762349799732975,4.218691588785047,0.000267022696929239 +frank1,switched,"0,1,2,3",3,ordinary,0.8,1,371.4385540062852,146.99687115335715,6.790426758869032,2.5444118431581755,4.110962923446253,0.0 +frank1,switched,"0,1,2,3",3,ordinary,0.8,1,384.20480757513224,148.95709161672204,6.702764196893919,2.614372203211371,3.9255067122927088,0.0 +frank1,switched,"0,1,2,3",3,ordinary,0.8,8,1400.428649984687,69.5987753980556,14.325139776901409,20.01295774647887,2.4606116121758737,0.0005633802816901409 +frank1,switched,"0,1,2,3",3,ordinary,0.8,8,1306.4191891868768,69.51852414689866,14.334494336717428,18.743936830231245,2.607415254237288,0.0 +frank1,switched,"0,1,2,3",3,ordinary,0.8,8,1331.608270436319,70.69523286487309,14.105747168607875,18.723793677204657,2.515848741832337,0.0005546311702717693 +frank1,switched,"0,1,2,3",3,ordinary,0.8,16,1897.788621243234,56.1081095658273,17.738078296296294,33.856044723969255,1.7555720653789004,0.013976240391334731 +frank1,switched,"0,1,2,3",3,ordinary,0.8,16,1910.5959710660377,54.57978023037077,18.224088845545978,35.01005747126437,1.9620599856321839,0.00646551724137931 +frank1,switched,"0,1,2,3",3,ordinary,0.8,16,1880.279842763649,54.38374043707995,18.268414236481615,34.36553713049748,1.9602508572459845,0.0007209805335255948 +frank1,switched,"0,1,2,3",3,ordinary,0.8,32,2495.303591366265,44.89466356700126,22.123438144104806,55.455021834061135,1.3904386828574553,0.4148471615720524 +frank1,switched,"0,1,2,3",3,ordinary,0.8,32,2444.5293529522496,51.23696000601792,19.354175109720178,47.46980854197349,0.7659771391549817,0.6782032400589102 +frank1,switched,"0,1,2,3",3,ordinary,0.8,32,2451.5377690199257,36.83409094763458,26.79489052117264,66.73615635179154,2.3244061798135167,0.0 +frank1,switched,"4,5,6,7",3,clustered_full,0.8,1,385.57276143625097,147.46784173173907,6.769587484179739,2.653815474607817,4.146237702738634,0.00026588673225206064 +frank1,switched,"4,5,6,7",3,clustered_full,0.8,1,377.89232715588577,147.89855480307625,6.751521264846236,2.5882820784729588,4.013785790031814,0.0002651113467656416 +frank1,switched,"4,5,6,7",3,clustered_full,0.8,1,373.2070589448662,148.8798429293753,6.706196791150909,2.5225177771925202,3.93889913089281,0.0002633658151171978 +frank1,switched,"4,5,6,7",3,clustered_full,0.8,8,1346.0965728733547,67.67563394684208,14.72935939281576,19.909617612977982,2.638695652173913,0.0005793742757821553 +frank1,switched,"4,5,6,7",3,clustered_full,0.8,8,1322.6100817753725,72.41998006824828,13.777101150514348,18.1429344883595,2.39242136659436,0.0 +frank1,switched,"4,5,6,7",3,clustered_full,0.8,8,1352.8797014780582,71.94932386999321,13.860830306267031,18.814713896457764,2.388501980062816,0.0016348773841961854 +frank1,switched,"4,5,6,7",3,clustered_full,0.8,16,1899.637084349875,54.34483843569242,18.317796587301586,34.96248196248196,1.9464196973119494,0.011544011544011544 +frank1,switched,"4,5,6,7",3,clustered_full,0.8,16,1912.607914183284,53.83474463043186,18.45577831609614,35.65112891478514,1.928245598029377,0.016751638747268753 +frank1,switched,"4,5,6,7",3,clustered_full,0.8,16,1921.6275661922284,53.678169434877006,18.554236214024833,35.72607742878013,1.9602906232864192,0.0 +frank1,switched,"4,5,6,7",3,clustered_full,0.8,32,2464.3371516443294,45.13027167019636,21.917973196351,54.73848827106863,1.416023270987386,0.4613379669852302 +frank1,switched,"4,5,6,7",3,clustered_full,0.8,32,2400.4465925442637,55.364069288334726,17.901272990793203,43.157223796033996,0.7002397549171957,0.7358356940509915 +frank1,switched,"4,5,6,7",3,clustered_full,0.8,32,2484.0894572042816,44.392738189481264,22.269851815315313,56.01171171171171,1.3618780619035482,0.37027027027027026 +frank1,switched,"0,1,2,3",4,clustered_full,0.8,1,370.2910028709779,147.7030025699128,6.759050516325988,2.542341385718078,4.127156888770905,0.0005309264666843643 +frank1,switched,"0,1,2,3",4,clustered_full,0.8,1,381.76826576559756,145.74184102003093,6.851041902340597,2.631423190745225,4.343018563357546,0.0 +frank1,switched,"0,1,2,3",4,clustered_full,0.8,1,357.2381277896978,151.19273977897626,6.6040425894709545,2.3368775933609958,3.591804979253112,0.0 +frank1,switched,"0,1,2,3",4,clustered_full,0.8,8,1330.4533617614893,71.75461171611144,13.894262000546448,18.497814207650272,2.374214266192949,0.0 +frank1,switched,"0,1,2,3",4,clustered_full,0.8,8,1311.6430121882063,71.24385027246123,13.990513362685746,18.31205283434232,2.4045586007436994,0.0 +frank1,switched,"0,1,2,3",4,clustered_full,0.8,8,1343.784043777529,73.24351763861648,13.613195238222698,18.2441113490364,2.0840488328414275,0.0 +frank1,switched,"0,1,2,3",4,clustered_full,0.8,16,1927.9571611031852,54.97186111256273,18.08553259272468,34.903708987161195,1.8352972683449384,0.0042796005706134095 +frank1,switched,"0,1,2,3",4,clustered_full,0.8,16,1907.6988647299859,54.9322602311632,18.08129529907209,34.59528907922912,1.8906298825945271,0.024982155603140613 +frank1,switched,"0,1,2,3",4,clustered_full,0.8,16,1923.7537793941444,57.71747158815132,17.241250561820653,33.26086956521739,1.5475684407413706,0.0006793478260869565 +frank1,switched,"0,1,2,3",4,clustered_full,0.8,32,2529.61583101669,40.268182139029406,24.527595220058423,62.6222005842259,1.7678696512867367,0.317429406037001 +frank1,switched,"0,1,2,3",4,clustered_full,0.8,32,2296.4059162051426,69.00860917768581,14.45076098125,33.06193181818182,0.05898085083621581,0.9545454545454546 +frank1,switched,"0,1,2,3",4,clustered_full,0.8,32,2341.3053295262234,58.34318076864106,16.95800658064516,40.08467741935484,0.49835199661948026,0.8010752688172043 +frank1,switched,"4,5,6,7",4,ordinary,0.6,1,384.02853164512834,140.68392460976187,7.099020360925307,2.720178372352285,5.4336677814938685,0.0005574136008918618 +frank1,switched,"4,5,6,7",4,ordinary,0.6,1,382.98865181176177,139.743092127183,7.146857615881032,2.7589786756453423,5.609427609427609,0.0 +frank1,switched,"4,5,6,7",4,ordinary,0.6,1,422.2375124433206,136.410483350614,7.321932693590112,3.122161540672607,6.005748778384593,0.0002874389192296637 +frank1,switched,"4,5,6,7",4,ordinary,0.6,8,1371.5340082194195,67.910917659009,14.673618243648962,20.131062355658198,2.7409708176827507,0.0005773672055427252 +frank1,switched,"4,5,6,7",4,ordinary,0.6,8,1336.9259507992033,66.38153357452587,15.017767461311282,20.1116361488482,2.9759615384615383,0.0 +frank1,switched,"4,5,6,7",4,ordinary,0.6,8,1287.9128156364463,65.83284192926067,15.125323074449078,19.347826086956523,3.057712408541138,0.0011911852293031567 +frank1,switched,"4,5,6,7",4,ordinary,0.6,16,1905.3034497120514,53.717144465842345,18.526628778832116,35.481021897810216,1.9617406408556932,0.00291970802919708 +frank1,switched,"4,5,6,7",4,ordinary,0.6,16,1899.5097069556011,53.91328501709441,18.483525896727272,35.11636363636364,1.9696238273066764,0.0007272727272727272 +frank1,switched,"4,5,6,7",4,ordinary,0.6,16,1928.978182037877,53.91322847510154,18.48566857381818,35.777454545454546,1.9753271537622683,0.0 +frank1,switched,"4,5,6,7",4,ordinary,0.6,32,2530.757733830068,35.09278217723731,28.228837500558658,71.67039106145252,2.464957204995089,0.021229050279329607 +frank1,switched,"4,5,6,7",4,ordinary,0.6,32,2520.8843288484977,38.0725522574089,25.88867544284243,66.17713697219361,2.032817537072856,0.1596292481977343 +frank1,switched,"4,5,6,7",4,ordinary,0.6,32,2553.701738393796,35.171050530643456,28.13560732664437,72.4035674470457,2.382595911509381,0.0 +frank2,switched,"0,1,2,3",1,ordinary,0.8,1,381.36118320160847,147.39372666193773,6.7746871401968605,2.573024740622506,4.109337589784517,0.0 +frank2,switched,"0,1,2,3",1,ordinary,0.8,1,369.3548952976971,149.07892008330532,6.696065262493424,2.467911625460284,3.945817990531299,0.0 +frank2,switched,"0,1,2,3",1,ordinary,0.8,1,360.02716372246414,148.9220389784041,6.70338151869405,2.4520800421274354,3.9965771458662456,0.0 +frank2,switched,"0,1,2,3",1,ordinary,0.8,8,1341.809446300089,71.36254978585548,13.971671648351649,18.74230769230769,2.4256868131868132,0.001098901098901099 +frank2,switched,"0,1,2,3",1,ordinary,0.8,8,1355.2059377356816,70.73531679576496,14.087135450665189,19.111419068736144,2.392669068736142,0.0 +frank2,switched,"0,1,2,3",1,ordinary,0.8,8,1386.9276917292204,70.85511805023782,14.075055355285002,19.63530713890426,2.4604207030168834,0.0005534034311012728 +frank2,switched,"0,1,2,3",1,ordinary,0.8,16,1879.406192392615,54.38507330080059,18.29762240591204,34.58111031002163,1.8842475640562975,0.03604902667627974 +frank2,switched,"0,1,2,3",1,ordinary,0.8,16,1892.504409886923,53.91460706558869,18.436562953454548,34.944,1.9023701002734732,0.0 +frank2,switched,"0,1,2,3",1,ordinary,0.8,16,1857.172554415242,60.14948447558648,16.520372423076925,30.80052151238592,1.4124938635247914,0.2848761408083442 +frank2,switched,"0,1,2,3",1,ordinary,0.8,32,2499.938845446124,40.34918977075061,24.4527468707483,61.76482021379981,1.715580150814887,0.2857142857142857 +frank2,switched,"0,1,2,3",1,ordinary,0.8,32,2434.510701061253,44.93551649070511,21.936671038394415,53.90575916230367,1.447204629831841,0.49040139616055844 +frank2,switched,"0,1,2,3",1,ordinary,0.8,32,2330.4005892863356,65.63896932644361,15.137682386499403,34.994623655913976,0.16348171462829736,0.9169653524492234 +frank2,switched,"4,5,6,7",1,clustered_full,0.8,1,397.16746901676623,145.27662702507985,6.873461281241565,2.7940620782726047,4.392982456140351,0.0 +frank2,switched,"4,5,6,7",1,clustered_full,0.8,1,375.82216438804807,149.1966424138253,6.691872176346912,2.4893561103810775,3.776872536136662,0.00026281208935611036 +frank2,switched,"4,5,6,7",1,clustered_full,0.8,1,365.9440462206238,148.76630670733385,6.709443559304165,2.4501845018450186,3.8542435424354244,0.0 +frank2,switched,"4,5,6,7",1,clustered_full,0.8,8,1346.0436591522086,71.60169847194825,13.919953964403067,18.687294633077766,2.3819863013698632,0.000547645125958379 +frank2,switched,"4,5,6,7",1,clustered_full,0.8,8,1369.588999117734,71.59922876724355,13.922079370208104,19.115553121577218,2.351618211738892,0.0 +frank2,switched,"4,5,6,7",1,clustered_full,0.8,8,1347.1290326187882,72.81353912150416,13.692975558966074,18.51103931071621,2.3334458091510326,0.0005385029617662897 +frank2,switched,"4,5,6,7",1,clustered_full,0.8,16,1933.4243838014881,57.0106741083918,17.467472648555706,33.828748280605225,1.6811027008429382,0.0068775790921595595 +frank2,switched,"4,5,6,7",1,clustered_full,0.8,16,1931.34827211085,55.44517216461432,17.980310819660538,34.562942008486566,1.9674134419551934,0.0007072135785007072 +frank2,switched,"4,5,6,7",1,clustered_full,0.8,16,1947.902953893792,54.34612611676519,18.330727836940834,35.823232323232325,1.9697653429602888,0.0 +frank2,switched,"4,5,6,7",1,clustered_full,0.8,32,2510.612801337139,43.83722587460475,22.525015017889086,57.13327370304115,1.5082449941107186,0.40250447227191416 +frank2,switched,"4,5,6,7",1,clustered_full,0.8,32,2453.5863291386772,45.71909557906906,21.592323878216124,53.33104631217839,1.424769263790513,0.49485420240137223 +frank2,switched,"4,5,6,7",1,clustered_full,0.8,32,2558.225373819602,39.32790544775279,25.2318710887338,65.18344965104686,1.9149500624219726,0.193419740777667 +frank2,switched,"0,1,2,3",2,clustered_full,0.8,1,399.355549748587,147.5869227140874,6.76585984272051,2.7146652497343253,4.101487778958555,0.0 +frank2,switched,"0,1,2,3",2,clustered_full,0.8,1,361.50755230238275,147.78398033995003,6.756242551339878,2.479437516582648,4.163438577872115,0.0002653223666755107 +frank2,switched,"0,1,2,3",2,clustered_full,0.8,1,357.30916238663,151.43170501250586,6.592484258933195,2.3842568617296735,3.642413257379596,0.0002589331952356292 +frank2,switched,"0,1,2,3",2,clustered_full,0.8,8,1372.3252786782928,70.42088846244978,14.162844972160356,19.600222717149222,2.4430203399275565,0.0005567928730512249 +frank2,switched,"0,1,2,3",2,clustered_full,0.8,8,1322.1768030889523,72.53976470012755,13.744415412972973,18.157297297297298,2.1943541835905767,0.0 +frank2,switched,"0,1,2,3",2,clustered_full,0.8,8,1339.4699374799525,67.20710349247764,14.822644292298715,19.730455075845974,2.8609324758842445,0.0011668611435239206 +frank2,switched,"0,1,2,3",2,clustered_full,0.8,16,1893.3203211358123,54.777889252222636,18.16860173801002,34.63779527559055,1.9347017433782996,0.01145311381531854 +frank2,switched,"0,1,2,3",2,clustered_full,0.8,16,1893.1141408884332,54.26718750154182,18.355659627167633,34.60910404624278,1.965407950738024,0.000722543352601156 +frank2,switched,"0,1,2,3",2,clustered_full,0.8,16,1899.4757907925868,53.83775383952292,18.489470912600144,35.182083029861616,1.966304942549699,0.0 +frank2,switched,"0,1,2,3",2,clustered_full,0.8,32,2490.3367847308027,41.05316166896588,23.946747130850046,60.57402101241643,1.9056338028169013,0.33715377268385865 +frank2,switched,"0,1,2,3",2,clustered_full,0.8,32,2491.5042778189713,40.97496661974321,24.056620765550242,60.43253588516746,1.9736905189979623,0.3406698564593301 +frank2,switched,"0,1,2,3",2,clustered_full,0.8,32,2389.713026400272,52.934010356652564,18.600890727407407,45.09777777777778,0.842639947926353,0.6666666666666666 +frank2,switched,"4,5,6,7",2,ordinary,0.6,1,357.1232971957928,142.96126752162223,6.984329496708722,2.499725726823917,4.961601755348327,0.0 +frank2,switched,"4,5,6,7",2,ordinary,0.6,1,349.15215902471857,140.57096591116445,7.103702404184101,2.5202231520223153,5.4198047419804745,0.0002789400278940028 +frank2,switched,"4,5,6,7",2,ordinary,0.6,1,357.7948337574639,143.54997905294607,6.954624681780935,2.4791040699262497,4.772193389784212,0.0 +frank2,switched,"4,5,6,7",2,ordinary,0.6,8,1318.1810102129477,66.81470776360291,14.912558620892018,19.605046948356808,2.93761009982384,0.0011737089201877935 +frank2,switched,"4,5,6,7",2,ordinary,0.6,8,1333.1602275501743,73.32533421089533,13.60142052513369,18.02245989304813,2.199116229244778,0.0 +frank2,switched,"4,5,6,7",2,ordinary,0.6,8,1319.2588745205833,72.22582827283962,13.808464365363736,18.240499457111834,2.390733433120152,0.0010857763300760044 +frank2,switched,"4,5,6,7",2,ordinary,0.6,16,1925.6095288354209,54.26850677714085,18.326821888728325,35.533236994219656,1.9876565537821584,0.0036127167630057803 +frank2,switched,"4,5,6,7",2,ordinary,0.6,16,1930.357709141982,54.464193921160856,18.288549406047515,35.39308855291576,1.973418633988106,0.0007199424046076314 +frank2,switched,"4,5,6,7",2,ordinary,0.6,16,1903.8512462717013,53.75855453858817,18.52416165134938,35.31363967906638,1.9447891951085965,0.0 +frank2,switched,"4,5,6,7",2,ordinary,0.6,32,2538.0995538422135,35.87682262325285,27.61418136174863,70.96830601092896,2.3219178082191783,0.025136612021857924 +frank2,switched,"4,5,6,7",2,ordinary,0.6,32,2554.560857983746,36.15250983687725,27.40584406724512,70.46095444685466,2.335197245047564,0.02386117136659436 +frank2,switched,"4,5,6,7",2,ordinary,0.6,32,2493.1504728221084,39.2890178917317,25.17129046207585,63.41816367265469,1.8836917675089346,0.2085828343313373 +frank2,switched,"0,1,2,3",3,ordinary,0.6,1,369.16950777636333,144.05934668963124,6.930168657593903,2.5430048992923244,4.773543821448013,0.00027218290691344586 +frank2,switched,"0,1,2,3",3,ordinary,0.6,1,369.9981681867804,140.8837598622072,7.086776456164765,2.650431394377957,5.31858653311074,0.00027831895352073476 +frank2,switched,"0,1,2,3",3,ordinary,0.6,1,353.00408611141495,143.5497888351379,6.957061226714012,2.4687243922425566,4.908494946735865,0.0 +frank2,switched,"0,1,2,3",3,ordinary,0.6,8,1336.3924642990476,67.59911177744638,14.751016045823665,19.696635730858468,2.8253553814911516,0.001160092807424594 +frank2,switched,"0,1,2,3",3,ordinary,0.6,8,1294.9793256198107,71.91251023715003,13.874356625408941,18.117775354416576,2.419361440851412,0.0 +frank2,switched,"0,1,2,3",3,ordinary,0.6,8,1319.5305514188851,68.18589989942001,14.624033711903394,19.353076480736057,2.8886327618498777,0.0005750431282346176 +frank2,switched,"0,1,2,3",3,ordinary,0.6,16,1892.281975184928,54.62104888040678,18.219665766690596,34.706389088298636,1.919824025857425,0.002871500358937545 +frank2,switched,"0,1,2,3",3,ordinary,0.6,16,1884.2627911627685,52.69922280589704,18.90940456622024,35.786458333333336,2.0951804423748546,0.0 +frank2,switched,"0,1,2,3",3,ordinary,0.6,16,1896.6733840289908,52.22858216523397,19.033809640390388,35.974474474474476,2.0353338651400685,0.0 +frank2,switched,"0,1,2,3",3,ordinary,0.6,32,2566.5154857779185,36.23050829768784,27.390136865800866,70.82251082251082,2.3516017374779423,0.01406926406926407 +frank2,switched,"0,1,2,3",3,ordinary,0.6,32,2583.6608439127226,36.23044231222825,27.404327244588742,71.19588744588745,2.339574554845725,0.016233766233766232 +frank2,switched,"0,1,2,3",3,ordinary,0.6,32,2532.7604245517296,34.308991933796015,28.68375988114286,73.60571428571428,2.692327034988146,0.017142857142857144 +frank2,switched,"4,5,6,7",3,clustered_full,0.6,1,374.1492704089187,142.1756992121426,7.022248913127413,2.611969111969112,4.886376172090458,0.0005515719801434088 +frank2,switched,"4,5,6,7",3,clustered_full,0.6,1,351.62432512846067,140.60973917944068,7.099996715839375,2.5264919129949805,5.232013385387619,0.0 +frank2,switched,"4,5,6,7",3,clustered_full,0.6,1,364.47121792852084,143.4695522979685,6.958412532385898,2.571194315386718,4.831647991254441,0.0 +frank2,switched,"4,5,6,7",3,clustered_full,0.6,8,1309.8078757458213,68.14842135120782,14.629067013233602,19.12313003452244,2.777417962003454,0.0005753739930955121 +frank2,switched,"4,5,6,7",3,clustered_full,0.6,8,1304.5526445802077,68.541647050436,14.537028081235697,19.041189931350115,2.6254834550923936,0.0 +frank2,switched,"4,5,6,7",3,clustered_full,0.6,8,1337.9220612801248,67.04960641985998,14.867652191812866,19.827485380116958,2.831133597301657,0.0005847953216374269 +frank2,switched,"4,5,6,7",3,clustered_full,0.6,16,1843.4515664986368,51.16928034719359,19.462407877394636,35.772413793103446,2.2267996738765525,0.006130268199233717 +frank2,switched,"4,5,6,7",3,clustered_full,0.6,16,1933.5142097196392,54.620901872171316,18.253870252692032,35.458722182340274,1.9761840446605439,0.0014357501794687725 +frank2,switched,"4,5,6,7",3,clustered_full,0.6,16,1931.3717042506175,54.26767232628102,18.374858121387284,35.3106936416185,1.9651772793053546,0.0 +frank2,switched,"4,5,6,7",3,clustered_full,0.6,32,2487.147235192438,36.26996342306652,27.2092091827027,68.88864864864865,2.495588135478178,0.10054054054054054 +frank2,switched,"4,5,6,7",3,clustered_full,0.6,32,2378.3482610590013,55.404681067543436,17.953949631280963,42.75583864118896,0.45904867256637166,0.6341118188251946 +frank2,switched,"4,5,6,7",3,clustered_full,0.6,32,2442.293161968592,50.07173754896806,19.81404281127643,48.56147220046985,0.8898296765326658,0.5755677368833203 +frank2,switched,"0,1,2,3",4,clustered_full,0.6,1,353.55923318564186,142.29579919110157,7.015941378892257,2.493248828878479,5.091485257646735,0.0 +frank2,switched,"0,1,2,3",4,clustered_full,0.6,1,360.1620637973273,143.27692085421376,6.968889633278599,2.5593869731800765,4.836070060207991,0.0002736726874657909 +frank2,switched,"0,1,2,3",4,clustered_full,0.6,1,356.7529300331321,142.61278850676808,7.001904189166896,2.471817431949409,4.9909265878471265,0.00027495188342040145 +frank2,switched,"0,1,2,3",4,clustered_full,0.6,8,1318.381268005084,67.99149345226458,14.658002292964245,19.241061130334487,2.771224371931851,0.0017301038062283738 +frank2,switched,"0,1,2,3",4,clustered_full,0.6,8,1329.4060683079044,67.16831898838693,14.848295789842382,19.780502043199068,2.8975912408759124,0.0 +frank2,switched,"0,1,2,3",4,clustered_full,0.6,8,1377.751730141726,67.48168948759388,14.773663782103428,20.32423009877978,2.7414294015107497,0.0005810575246949448 +frank2,switched,"0,1,2,3",4,clustered_full,0.6,16,1898.1974695419767,54.54229797321902,18.242018254493168,34.69590222861251,1.974584290928755,0.0014378145219266715 +frank2,switched,"0,1,2,3",4,clustered_full,0.6,16,1920.3761411855278,54.19083803488631,18.36992395586107,35.28654124457308,1.9695263181797538,0.001447178002894356 +frank2,switched,"0,1,2,3",4,clustered_full,0.6,16,1902.8094764025323,53.83679376781626,18.494520887836856,35.36270939548434,1.9661372763782403,0.0014566642388929353 +frank2,switched,"0,1,2,3",4,clustered_full,0.6,32,2493.3092191921237,33.84463430158959,29.16548154960981,73.51059085841695,2.85741723704428,0.020066889632107024 +frank2,switched,"0,1,2,3",4,clustered_full,0.6,32,2441.273043318879,45.562462252199836,21.665197506024096,53.341652323580035,1.1761443187937535,0.4406196213425129 +frank2,switched,"0,1,2,3",4,clustered_full,0.6,32,2521.374133575628,33.995558534184475,29.13023321568627,74.04152249134948,2.953865606936416,0.012687427912341407 +frank2,switched,"4,5,6,7",4,ordinary,0.8,1,353.3684717316786,147.94393510607196,6.7483164335628665,2.371588880387656,3.993369038510584,0.0 +frank2,switched,"4,5,6,7",4,ordinary,0.8,1,357.1974902975374,148.6475967479651,6.717534184911633,2.42785544711158,3.8815615932471643,0.0002637826431020839 +frank2,switched,"4,5,6,7",4,ordinary,0.8,1,361.92237439061836,149.12280101105796,6.694802772285038,2.4464896134630556,3.820404943465685,0.00026295030239284776 +frank2,switched,"4,5,6,7",4,ordinary,0.8,8,1351.8127032077157,71.2076217600095,14.00927534856828,18.922356828193834,2.4106060606060606,0.0005506607929515419 +frank2,switched,"4,5,6,7",4,ordinary,0.8,8,1327.9896253869897,69.95184772651905,14.247060341367712,18.94506726457399,2.5454800673778775,0.0005605381165919282 +frank2,switched,"4,5,6,7",4,ordinary,0.8,8,1344.3794579732662,70.81492193171971,14.07888315227021,19.028239202657808,2.3875086745315754,0.0011074197120708748 +frank2,switched,"4,5,6,7",4,ordinary,0.8,16,1907.5090370541484,56.18882127811277,17.689566297976274,33.80600139567341,1.7467708151509862,0.011863224005582694 +frank2,switched,"4,5,6,7",4,ordinary,0.8,16,1905.7172137894697,54.34592275641473,18.311492882395385,34.96536796536797,1.9268942472681296,0.0036075036075036075 +frank2,switched,"4,5,6,7",4,ordinary,0.8,16,1920.8958814693442,54.61940069118729,18.180487367552047,34.91744436468055,1.9026481149012566,0.021536252692031587 +frank2,switched,"4,5,6,7",4,ordinary,0.8,32,2490.2904785268634,44.778215043263685,22.085919969352016,55.62346760070052,1.3992584454820105,0.4115586690017513 +frank2,switched,"4,5,6,7",4,ordinary,0.8,32,2436.2789229953883,42.582329615894885,23.02654446593002,57.48710865561694,1.6610267534345626,0.3821362799263352 +frank2,switched,"4,5,6,7",4,ordinary,0.8,32,2312.929862244941,62.81542581285265,15.868003051186017,36.72846441947566,0.1925063588338877,0.813358302122347 diff --git a/docs/model-preparation.md b/docs/model-preparation.md index 11039f3b..32147074 100644 --- a/docs/model-preparation.md +++ b/docs/model-preparation.md @@ -104,10 +104,10 @@ patches before starting their process: uv run --locked --extra prepare python -m ignition.patches ``` -`python scripts/setup_preparation.py` updates FlashInfer to the tip of its `main` -branch, syncs preparation/test dependencies, rebuilds FlashInfer and Heliopause, -and applies the bundled patches before exiting. It updates `uv.lock` when the -branch advances. +`python scripts/setup_preparation.py` resolves the FlashInfer revision declared +in `pyproject.toml`, syncs preparation/test dependencies, rebuilds FlashInfer and +Heliopause, and applies the bundled patches before exiting. It updates `uv.lock` +when the declared dependency resolves differently. Build dependencies include a C/C++ compiler, CMake, Ninja, pkg-config, Protobuf's `protoc`, OpenSSL headers, Python headers, and liburing headers. On Ubuntu: @@ -140,10 +140,10 @@ together. Refresh and commit `helios/Cargo.lock`, `flare/Cargo.lock`, and and Heliopause against the pinned revision. Compare rendered prompts and token IDs with upstream when changing encoder behavior. -The preparation dependency tracks the `main` branch of -`local-inference-lab/flashinfer`; `uv.lock` pins the resolved commit. The setup -script updates it automatically. To update the lock alone, run -`uv lock --upgrade-package flashinfer-python`, then sync the environment. +The preparation dependency pins a revision of `local-inference-lab/flashinfer` +in `pyproject.toml`; `uv.lock` records the same commit. To update FlashInfer, +change that revision and run `uv lock --upgrade-package flashinfer-python`, +then sync the environment. For local FlashInfer development, install the sibling checkout explicitly with `uv pip install --python .venv/bin/python --no-deps -e ../flashinfer`; `uv sync --locked --extra prepare --extra test` restores the Git dependency. diff --git a/ignition/components/collectives.py b/ignition/components/collectives.py index 69040b18..867905a7 100644 --- a/ignition/components/collectives.py +++ b/ignition/components/collectives.py @@ -143,10 +143,15 @@ def prepare(state): inplace=source.data_ptr() == output.data_ptr()) self.runtime_profiles = tuple((mode, active) for mode, counts in row["profiles"].items() for active in counts) self.runtime_cache_policy = ladder["cache_policy"] - # One active CTA is legal at every payload; runtime selects from the supplied profiles. + cluster_size = row.get("cluster_size", 1) + mode, active = self.runtime_profiles[0] + # Phased modes need a complete cluster, so use a declared clustered profile. + initial_active = active if cluster_size > 1 else 1 plan_options = dict(joint_only=True, override=CollectiveConfig( implementation=row["implementation"], threads=row["threads"], blocks=row["blocks"], - submode=self.runtime_profiles[0][0], active_blocks=1)) + submode=mode, active_blocks=initial_active)) + if cluster_size > 1: + plan_options["joint_cluster_size"] = cluster_size self.plan = runtime.plan(source, out=output, **plan_options) group = runtime.exchange_group diff --git a/ignition/preparation/collective_ladder.py b/ignition/preparation/collective_ladder.py index 4f7b838c..6f564cfe 100644 --- a/ignition/preparation/collective_ladder.py +++ b/ignition/preparation/collective_ladder.py @@ -12,6 +12,10 @@ "joint_latency": ("full", "payload_rsag", "pull"), "joint_bandwidth": ("payload_rsag", "bulk_push", "bulk_pull", "pull"), } +CLUSTER_MODES = { + "joint_latency": ("full_phased", "payload_rsag_phased"), + "joint_bandwidth": ("payload_rsag_phased",), +} GATHER_MODES = { "gather_joint": ("barrier", "word_exchange"), "gather_selected_barrier": ("barrier",), @@ -89,7 +93,8 @@ def require(condition, message): require(isinstance(data["buckets"], list) and bool(data["buckets"]), "buckets must be nonempty") previous = data["min_bytes"] - 16 for row in data["buckets"]: - require(isinstance(row, dict) and set(row) == {"max_bytes", "implementation", "threads", "blocks", "profiles"}, + required = {"max_bytes", "implementation", "threads", "blocks", "profiles"} + require(isinstance(row, dict) and required <= set(row) <= required | {"cluster_size"}, "invalid bucket fields") upper = row["max_bytes"] require(type(upper) is int and upper > previous and upper % 16 == 0, @@ -98,12 +103,23 @@ def require(condition, message): require(isinstance(row["implementation"], str) and row["implementation"] in MODES, "unknown joint kernel") require(type(row["threads"]) is int and row["threads"] in (32, 64, 128, 256, 512), "invalid threads") require(type(row["blocks"]) is int and 1 <= row["blocks"] <= 64, "invalid physical grid") + cluster_size = row.get("cluster_size", 1) + require(type(cluster_size) is int and cluster_size in (1, 8), "cluster_size must be 1 or 8") + if cluster_size == 8: + require(tuple(data["compute_capability"]) in ((12, 0), (12, 1)), + "clustered joint reductions require SM120 or SM121") + require(row["threads"] == 512 and row["blocks"] == 64, + "clustered joint reductions require 512 threads and 64 physical CTAs") require(isinstance(row["profiles"], dict) and bool(row["profiles"]), "profiles must be nonempty") for mode, counts in row["profiles"].items(): - require(mode in MODES[row["implementation"]], "mode does not belong to joint kernel") + phased = mode in CLUSTER_MODES[row["implementation"]] + require(mode in MODES[row["implementation"]] or (cluster_size == 8 and phased), + "mode does not belong to the prepared joint kernel") require(isinstance(counts, list) and bool(counts) and all(type(v) is int and 1 <= v <= row["blocks"] for v in counts), "invalid active CTA counts") require(len(set(counts)) == len(counts), "duplicate active CTA counts") + if phased: + require(counts == [cluster_size], "phased profiles require exactly one complete active cluster") _validate_gathers(data["all_gather"], data["world_size"]) return data diff --git a/ignition/preparation/ladders/README.md b/ignition/preparation/ladders/README.md index 5b421ed7..58578830 100644 --- a/ignition/preparation/ladders/README.md +++ b/ignition/preparation/ladders/README.md @@ -77,6 +77,55 @@ validate exact payload bytes and select among the supplied profiles. Gathers with equal byte sizes use the same recommendations regardless of row width. RoCE gathers and reduction-only ladders retain their preparation policy. +### Thread-block clusters + +A bucket may set `"cluster_size": 8` to launch eight-CTA CUDA thread-block +clusters. Omitting the field, or setting it to `1`, retains an ordinary launch. +Clustered buckets require SM120 or SM121 with at least 64 SMs, 512 threads per +CTA, and 64 physical CTAs. Preparation checks that the compiled function can +keep eight clusters resident. Ordinary profiles retain their active-CTA counts. +Phased full all-reduce is named `full_phased`; phased reduce-scatter followed +by all-gather is named `payload_rsag_phased`. The latency family admits both; +the bandwidth family admits `payload_rsag_phased`. Each phased profile must select +exactly eight active CTAs. + +Phased execution uses the first complete cluster to write one peer destination +at a time. All its CTAs participate in each phase barrier; other clusters return +without changing collective state. System-scope publication fences remain +required for peer-visible writes. This uses existing kernel launch attributes +in execution ABI 5 and does not require cooperative launch. + +`gb202_pcie_tp4_clustered.json` adds phased RSAG to 36 compatible buckets used +by packed DeepSeek V4.1 TP4 verification graphs with eight, sixteen, or thirty-two +requests, seven draft positions, and up to 128 target rows. It retains every +ordinary candidate, kernel family, thread count, and physical grid from +`gb202_pcie_tp4.json`. Its 256-thread buckets use ordinary launches. +`gb202_pcie_tp4_clustered_full.json` adds one further choice: phased Full in the +bucket containing 80 KiB. This also covers the target reductions for one request +verified at eight rows. + +The compiled cluster geometry also applies when startup selects an ordinary +profile; startup selection cannot disable clustering. Cluster scheduling can +affect those profiles, so retaining every ordinary candidate does not guarantee +unchanged latency. Qualify these catalogs on the intended GPU topology and +complete serving workload; component improvements do not establish a throughput gain. +`gb202_pcie_tp4.json` remains the ordinary catalog. + +Select the catalog with both phased modes during export: + +```sh +.venv/bin/ignition export deepseek-v4.1-flash --gpus 0,1,2,3 \ + --collective-tuning runtime \ + --collective-ladder ignition/preparation/ladders/gb202_pcie_tp4_clustered_full.json +``` + +Use `gb202_pcie_tp4_clustered.json` in the same flag to exclude the phased Full +choice at 80 KiB. `--collective-tuning static` uses preparation-time autotuning +and accepts no ladder; these catalogs require the explicit `runtime` policy. +Changing the catalog requires package export because cluster geometry is compiled +into its kernels and captured launch attributes. Existing packages retain their +prepared geometry and profiles. + ## GB202 PCIe TP4 recommendations `gb202_pcie_tp4.json` contains 210 buckets from 16 bytes through 8 MiB. diff --git a/ignition/preparation/ladders/gb202_pcie_tp4_clustered.json b/ignition/preparation/ladders/gb202_pcie_tp4_clustered.json new file mode 100644 index 00000000..3f43eabe --- /dev/null +++ b/ignition/preparation/ladders/gb202_pcie_tp4_clustered.json @@ -0,0 +1,437 @@ +{ + "version": 2, + "name": "gb202_pcie_tp4_clustered", + "compute_capability": [ + 12, + 0 + ], + "world_size": 4, + "dtype": "bfloat16", + "inplace": false, + "cache_policy": "cold", + "min_bytes": 16, + "buckets": [ + {"max_bytes": 1008,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1]}}, + {"max_bytes": 1024,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [8,32,36]}}, + {"max_bytes": 1072,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [4,16,32,64]}}, + {"max_bytes": 1120,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,32,36]}}, + {"max_bytes": 1168,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,8,64]}}, + {"max_bytes": 1216,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [2,4,16,64]}}, + {"max_bytes": 1264,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [4,16,36,64]}}, + {"max_bytes": 1328,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [2,4,8,36]}}, + {"max_bytes": 1392,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [8,64]}}, + {"max_bytes": 1456,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [2,4,8]}}, + {"max_bytes": 1520,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [8,16,64]}}, + {"max_bytes": 1584,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [8,36]}}, + {"max_bytes": 1648,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [1,4,32,64]}}, + {"max_bytes": 1728,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [2,36,64]}}, + {"max_bytes": 1792,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [4,32,64]}}, + {"max_bytes": 1872,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [4,8,16,32]}}, + {"max_bytes": 1968,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,4,32]}}, + {"max_bytes": 2048,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,16,36,64]}}, + {"max_bytes": 2144,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,3,4,36]}}, + {"max_bytes": 2240,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,8,32]}}, + {"max_bytes": 2336,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [2,8,16,64]}}, + {"max_bytes": 2432,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,8]}}, + {"max_bytes": 2544,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,36,64]}}, + {"max_bytes": 2656,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [1,4,32]}}, + {"max_bytes": 2768,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,2,16]}}, + {"max_bytes": 2896,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [1,8,16]}}, + {"max_bytes": 3024,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,8,64]}}, + {"max_bytes": 3152,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [1,8,32]}}, + {"max_bytes": 3296,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [8,64]}}, + {"max_bytes": 3440,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [1,8]}}, + {"max_bytes": 3600,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [8,16,36,64]}}, + {"max_bytes": 3760,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [32,64]}}, + {"max_bytes": 3920,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,2,8]}}, + {"max_bytes": 4096,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [1,4,16,36]}}, + {"max_bytes": 4272,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,2,32]}}, + {"max_bytes": 4464,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [1,8]}}, + {"max_bytes": 4672,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [1,16,36]}}, + {"max_bytes": 4864,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [1,4]}}, + {"max_bytes": 5088,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,2,16,32]}}, + {"max_bytes": 5312,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [1,64]}}, + {"max_bytes": 5552,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,2,6,16]}}, + {"max_bytes": 5792,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,6,36],"payload_rsag": [16]}}, + {"max_bytes": 6048,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,2,8]}}, + {"max_bytes": 6320,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [32],"payload_rsag": [64]}}, + {"max_bytes": 6592,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [1,4,64],"payload_rsag": [1]}}, + {"max_bytes": 6896,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [2,64],"payload_rsag": [4,64]}}, + {"max_bytes": 7200,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [64],"payload_rsag": [64]}}, + {"max_bytes": 7520,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [36],"payload_rsag": [2,64]}}, + {"max_bytes": 7840,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [16,32],"payload_rsag": [1],"pull": [4]}}, + {"max_bytes": 8192,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [8,32],"payload_rsag": [1],"pull": [2]}}, + {"max_bytes": 8560,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [4,32],"payload_rsag": [1],"pull": [4]}}, + {"max_bytes": 8928,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [4,8],"pull": [5]}}, + {"max_bytes": 9328,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [16],"pull": [3,4]}}, + {"max_bytes": 9744,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [36],"pull": [5]}}, + {"max_bytes": 10176,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [64],"pull": [3,4]}}, + {"max_bytes": 10624,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [32],"pull": [3]}}, + {"max_bytes": 11088,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [8,64],"pull": [6]}}, + {"max_bytes": 11584,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [16,36],"payload_rsag": [2],"pull": [6]}}, + {"max_bytes": 12096,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [4,8],"pull": [6]}}, + {"max_bytes": 12640,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [7],"pull": [7,8]}}, + {"max_bytes": 13200,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [16,32],"payload_rsag": [4],"pull": [13]}}, + {"max_bytes": 13776,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [7],"pull": [7]}}, + {"max_bytes": 14384,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [32],"payload_rsag": [4],"pull": [15]}}, + {"max_bytes": 15024,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [36],"pull": [8]}}, + {"max_bytes": 15696,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [36],"pull": [8]}}, + {"max_bytes": 16384,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [16,32],"pull": [8]}}, + {"max_bytes": 17104,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [32],"pull": [9]}}, + {"max_bytes": 17872,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [36],"payload_rsag": [4],"pull": [18]}}, + {"max_bytes": 18656,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [16,36],"payload_rsag": [2],"pull": [10]}}, + {"max_bytes": 19488,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [64],"payload_rsag": [4],"pull": [20]}}, + {"max_bytes": 20352,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [16],"pull": [10]}}, + {"max_bytes": 21248,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [8,32],"pull": [11]}}, + {"max_bytes": 22192,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [22,64],"payload_rsag": [4],"pull": [22]}}, + {"max_bytes": 23168,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [4],"pull": [12]}}, + {"max_bytes": 24192,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [64],"payload_rsag": [32],"pull": [16,24]}}, + {"max_bytes": 25264,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [13]}}, + {"max_bytes": 26384,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [8]}}, + {"max_bytes": 27552,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"payload_rsag": [27],"pull": [16,27]}}, + {"max_bytes": 28768,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [36,64],"pull": [8]}}, + {"max_bytes": 30048,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"payload_rsag": [16,32],"pull": [8]}}, + {"max_bytes": 31376,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [8]}}, + {"max_bytes": 32768,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [16,32],"pull": [4,8]}}, + {"max_bytes": 34224,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [9],"pull": [8,9,16]}}, + {"max_bytes": 35728,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [9,64],"pull": [9]}}, + {"max_bytes": 37312,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [10,32],"pull": [10]}}, + {"max_bytes": 38960,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [10],"pull": [8,10]}}, + {"max_bytes": 40688,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [10],"pull": [10]}}, + {"max_bytes": 42496,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [11],"pull": [4,11]}}, + {"max_bytes": 44384,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [11,32],"pull": [4,8]}}, + {"max_bytes": 46336,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [12,16],"pull": [8]}}, + {"max_bytes": 48400,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [12,16],"pull": [8,12]}}, + {"max_bytes": 50528,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [13],"pull": [8]}}, + {"max_bytes": 52768,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [13],"pull": [8]}}, + {"max_bytes": 55104,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [14,64],"pull": [8]}}, + {"max_bytes": 57552,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [8]}}, + {"max_bytes": 60096,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [16,32],"pull": [8]}}, + {"max_bytes": 62752,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [4,8]}}, + {"max_bytes": 65536,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [4,8]}}, + {"max_bytes": 68432,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [17,36],"pull": [4,8]}}, + {"max_bytes": 71472,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"payload_rsag": [36,64],"pull": [8,16]}}, + {"max_bytes": 74624,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,10]}}, + {"max_bytes": 77936,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [4,8]}}, + {"max_bytes": 81392,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [5],"payload_rsag": [36],"pull": [8]}}, + {"max_bytes": 84992,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [4,8]}}, + {"max_bytes": 88752,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,4,8]}}, + {"max_bytes": 92688,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [8]}}, + {"max_bytes": 96784,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [4,8,16]}}, + {"max_bytes": 101072,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [4,8]}}, + {"max_bytes": 105552,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 110224,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [2,8]}}, + {"max_bytes": 115104,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36,64],"pull": [2,8]}}, + {"max_bytes": 120192,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,8]}}, + {"max_bytes": 125520,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 131072,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [8],"payload_rsag": [36],"pull": [8]}}, + {"max_bytes": 136880,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [4,8]}}, + {"max_bytes": 142928,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [35,36],"pull": [4,8]}}, + {"max_bytes": 149264,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,8]}}, + {"max_bytes": 155872,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,4,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 162768,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,8]}}, + {"max_bytes": 169984,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 177504,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [22],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 185360,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [23,32],"pull": [2,8]}}, + {"max_bytes": 193568,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,8]}}, + {"max_bytes": 202144,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 211088,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,4,8]}}, + {"max_bytes": 220432,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,4,8]}}, + {"max_bytes": 230192,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 240384,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8],"payload_rsag": [64]}}, + {"max_bytes": 251024,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [62],"pull": [4,8]}}, + {"max_bytes": 262144,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [8],"payload_rsag": [64],"pull": [32]}}, + {"max_bytes": 273744,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,8]}}, + {"max_bytes": 285872,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 298528,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [2,8,16],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 311744,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [2,8]}}, + {"max_bytes": 325552,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,4,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 339952,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [11],"payload_rsag": [42],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 355008,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,8]}}, + {"max_bytes": 370720,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [46],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 387136,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,4,8]}}, + {"max_bytes": 404288,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [13],"payload_rsag": [50],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 422176,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [13],"payload_rsag": [52],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 440864,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [14],"payload_rsag": [64],"pull": [2,8]}}, + {"max_bytes": 460384,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [15],"payload_rsag": [57],"pull": [2,16],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 480768,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8],"payload_rsag": [59],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 502064,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [62],"pull": [2,16,32],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 524288,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8],"payload_rsag": [64],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 547504,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [17],"payload_rsag": [64],"pull": [8]}}, + {"max_bytes": 571744,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [18],"bulk_push": [18],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 597056,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [19],"bulk_push": [19],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 623488,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [20],"bulk_push": [36],"pull": [8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 651088,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [20],"bulk_push": [20],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 679920,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [8,16],"bulk_push": [42]}}, + {"max_bytes": 710016,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [44],"bulk_push": [44],"pull": [4,8]}}, + {"max_bytes": 741456,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [23],"bulk_push": [16],"pull": [8]}}, + {"max_bytes": 774288,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [24],"bulk_push": [16,36],"pull": [8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 808560,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [50],"bulk_push": [32],"pull": [4,16]}}, + {"max_bytes": 844368,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [26],"bulk_push": [16,64],"pull": [8]}}, + {"max_bytes": 881744,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,32]}}, + {"max_bytes": 920784,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [16,57],"bulk_push": [32,57]}}, + {"max_bytes": 961552,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [30],"bulk_push": [30],"pull": [8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1004112,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [31],"bulk_push": [64],"pull": [16],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1048576,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [8,16,32],"bulk_push": [64]}}, + {"max_bytes": 1095008,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [34],"bulk_push": [64],"pull": [8]}}, + {"max_bytes": 1143488,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [35,36],"bulk_push": [36],"pull": [8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1194112,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [37],"bulk_push": [37],"pull": [8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1246976,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8],"bulk_push": [39],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1302176,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [40],"bulk_push": [40],"pull": [16],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1359840,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8,16],"bulk_push": [42],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1420032,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [16,44],"bulk_push": [44],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1482912,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [46],"bulk_push": [46],"pull": [16],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1548560,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,32]}}, + {"max_bytes": 1617120,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8,32],"bulk_push": [36,64],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1688720,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [32,64],"pull": [8,32]}}, + {"max_bytes": 1763488,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [54],"bulk_push": [32,64],"pull": [16],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1841568,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 1923104,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [32,64],"pull": [8,32]}}, + {"max_bytes": 2008240,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,36]}}, + {"max_bytes": 2097152,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8],"bulk_push": [64]}}, + {"max_bytes": 2190000,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [36],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 2286960,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [36],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 2388208,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32],"bulk_push": [36,64]}}, + {"max_bytes": 2493952,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32,36],"bulk_push": [64]}}, + {"max_bytes": 2604368,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 2719664,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [64]}}, + {"max_bytes": 2840080,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,36]}}, + {"max_bytes": 2965824,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,16]}}, + {"max_bytes": 3097136,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [64],"pull": [16]}}, + {"max_bytes": 3234256,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32],"bulk_push": [32,64]}}, + {"max_bytes": 3377440,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [64]}}, + {"max_bytes": 3526976,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [32,64],"pull": [8,32]}}, + {"max_bytes": 3683120,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 3846192,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [64]}}, + {"max_bytes": 4016480,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [32,64],"pull": [32]}}, + {"max_bytes": 4194304,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32,36],"bulk_push": [36,64]}}, + {"max_bytes": 4380000,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,32]}}, + {"max_bytes": 4573920,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32,36],"bulk_push": [36,64]}}, + {"max_bytes": 4776432,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32],"bulk_push": [36,64]}}, + {"max_bytes": 4987904,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32,36],"bulk_push": [36,64]}}, + {"max_bytes": 5208736,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 5439344,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 5680160,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,36]}}, + {"max_bytes": 5931648,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,32]}}, + {"max_bytes": 6194256,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 6468496,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [36,64],"bulk_push": [64]}}, + {"max_bytes": 6754880,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,36]}}, + {"max_bytes": 7053952,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [36,64],"bulk_push": [8,64]}}, + {"max_bytes": 7366256,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 7692384,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,32]}}, + {"max_bytes": 8032960,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,36]}}, + {"max_bytes": 8388608,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32],"bulk_push": [36,64]}} + ], + "all_gather": { + "min_bytes": 128, + "buckets": [ + {"max_bytes": 128,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [1]}}, + {"max_bytes": 256,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [1]}}, + {"max_bytes": 384,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [2]}}, + {"max_bytes": 512,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [2]}}, + {"max_bytes": 640,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [3]}}, + {"max_bytes": 768,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [3]}}, + {"max_bytes": 896,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [4]}}, + {"max_bytes": 1024,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [4]}}, + {"max_bytes": 1152,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [5]}}, + {"max_bytes": 1280,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [5]}}, + {"max_bytes": 1408,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [6]}}, + {"max_bytes": 1536,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [6]}}, + {"max_bytes": 1664,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [7]}}, + {"max_bytes": 1792,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [7]}}, + {"max_bytes": 1920,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [8]}}, + {"max_bytes": 2048,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [1,2],"word_exchange": [8]}}, + {"max_bytes": 2176,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [9]}}, + {"max_bytes": 2304,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [9]}}, + {"max_bytes": 2432,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [10]}}, + {"max_bytes": 2560,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [10]}}, + {"max_bytes": 2688,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [11]}}, + {"max_bytes": 2816,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [11]}}, + {"max_bytes": 2944,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [12]}}, + {"max_bytes": 3072,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [12]}}, + {"max_bytes": 3200,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [13]}}, + {"max_bytes": 3328,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [13]}}, + {"max_bytes": 3456,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [14]}}, + {"max_bytes": 3584,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [14]}}, + {"max_bytes": 3712,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [15]}}, + {"max_bytes": 3968,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [16]}}, + {"max_bytes": 4096,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [16]}}, + {"max_bytes": 4224,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [17]}}, + {"max_bytes": 4480,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [18]}}, + {"max_bytes": 4608,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [18]}}, + {"max_bytes": 4864,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [19]}}, + {"max_bytes": 5120,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [20]}}, + {"max_bytes": 5376,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [21]}}, + {"max_bytes": 5504,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [22]}}, + {"max_bytes": 5760,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [23]}}, + {"max_bytes": 6016,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [24]}}, + {"max_bytes": 6272,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [25]}}, + {"max_bytes": 6656,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [26]}}, + {"max_bytes": 6912,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [27]}}, + {"max_bytes": 7168,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [28]}}, + {"max_bytes": 7552,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [30]}}, + {"max_bytes": 7808,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [31]}}, + {"max_bytes": 8192,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [32]}}, + {"max_bytes": 8576,"implementation": "gather_joint","threads": 256,"blocks": 34,"profiles": {"barrier": [1,2,4],"word_exchange": [34]}}, + {"max_bytes": 8960,"implementation": "gather_joint","threads": 256,"blocks": 35,"profiles": {"barrier": [1,2,4],"word_exchange": [35]}}, + {"max_bytes": 9344,"implementation": "gather_joint","threads": 256,"blocks": 37,"profiles": {"barrier": [1,2,4],"word_exchange": [37]}}, + {"max_bytes": 9728,"implementation": "gather_joint","threads": 256,"blocks": 38,"profiles": {"barrier": [1,2,4],"word_exchange": [38]}}, + {"max_bytes": 10240,"implementation": "gather_joint","threads": 256,"blocks": 40,"profiles": {"barrier": [1,2,4],"word_exchange": [40]}}, + {"max_bytes": 10624,"implementation": "gather_joint","threads": 256,"blocks": 42,"profiles": {"barrier": [1,2,4],"word_exchange": [42]}}, + {"max_bytes": 11136,"implementation": "gather_joint","threads": 256,"blocks": 44,"profiles": {"barrier": [1,2,4],"word_exchange": [44]}}, + {"max_bytes": 11520,"implementation": "gather_joint","threads": 256,"blocks": 45,"profiles": {"barrier": [1,2,4],"word_exchange": [45]}}, + {"max_bytes": 12032,"implementation": "gather_joint","threads": 256,"blocks": 47,"profiles": {"barrier": [1,2,8],"word_exchange": [47]}}, + {"max_bytes": 12672,"implementation": "gather_joint","threads": 256,"blocks": 50,"profiles": {"barrier": [1,2,4],"word_exchange": [50]}}, + {"max_bytes": 13184,"implementation": "gather_joint","threads": 256,"blocks": 52,"profiles": {"barrier": [1,2,4],"word_exchange": [52]}}, + {"max_bytes": 13824,"implementation": "gather_joint","threads": 256,"blocks": 54,"profiles": {"barrier": [1,2,8],"word_exchange": [54]}}, + {"max_bytes": 14336,"implementation": "gather_joint","threads": 256,"blocks": 56,"profiles": {"barrier": [1,2,8],"word_exchange": [56]}}, + {"max_bytes": 14976,"implementation": "gather_joint","threads": 256,"blocks": 59,"profiles": {"barrier": [1,2,4],"word_exchange": [59]}}, + {"max_bytes": 15744,"implementation": "gather_joint","threads": 256,"blocks": 62,"profiles": {"barrier": [1,2,4],"word_exchange": [62]}}, + {"max_bytes": 16384,"implementation": "gather_joint","threads": 256,"blocks": 64,"profiles": {"barrier": [1,2,4],"word_exchange": [64]}}, + {"max_bytes": 17152,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,34]}}, + {"max_bytes": 17920,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,35]}}, + {"max_bytes": 18688,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,37]}}, + {"max_bytes": 19456,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,38]}}, + {"max_bytes": 20352,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,40]}}, + {"max_bytes": 21248,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,42]}}, + {"max_bytes": 22144,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,44]}}, + {"max_bytes": 23168,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,46]}}, + {"max_bytes": 24192,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,48]}}, + {"max_bytes": 25216,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,50]}}, + {"max_bytes": 26368,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,52]}}, + {"max_bytes": 27520,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,54]}}, + {"max_bytes": 28800,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,57]}}, + {"max_bytes": 30080,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,59]}}, + {"max_bytes": 31360,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,62]}}, + {"max_bytes": 32768,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 34176,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 35712,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 37376,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 38912,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 40704,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 42496,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 44416,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 46336,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 48384,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 50560,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 52736,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 55040,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 57600,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 60160,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 62720,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 65536,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 68480,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 71424,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 74624,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 77952,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 81408,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 84992,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 88704,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 92672,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 96768,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 101120,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 105600,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 110208,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 115072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 120192,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 125568,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 131072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 136832,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 142976,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 149248,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 155904,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 162816,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 169984,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 177536,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 185344,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 193536,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 202112,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 211072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 220416,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 230144,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 240384,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 251008,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 262144,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 273792,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 285824,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 298496,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 311808,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 325504,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 339968,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 355072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 370688,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 387072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 404224,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 422144,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 440832,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 460416,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 480768,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 502016,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 524288,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 547456,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 571776,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 596992,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 623488,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 651136,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 679936,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 710016,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 741504,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 774272,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 808576,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 844416,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 881792,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 920832,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 961536,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 1004160,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 1048576,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,64]}}, + {"max_bytes": 1095040,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,64]}}, + {"max_bytes": 1143552,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1194112,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,64]}}, + {"max_bytes": 1246976,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1302144,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1359872,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,64]}}, + {"max_bytes": 1420032,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1482880,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1548544,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,64]}}, + {"max_bytes": 1617152,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,64]}}, + {"max_bytes": 1688704,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1763456,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1841536,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1923072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2008192,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2097152,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2189952,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2286976,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2388224,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2493952,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2604416,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2719616,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2840064,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2965760,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 3097088,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 3234304,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 3377408,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 3526912,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 3683072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 3846144,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 4016512,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 4194304,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 4380032,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 4573952,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 4776448,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 4987904,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 5208704,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 5439360,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 5680128,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 5931648,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 6194304,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 6468480,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 6754816,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 7053952,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 7366272,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 7692416,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 8033024,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 8388608,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}} + ] + } +} diff --git a/ignition/preparation/ladders/gb202_pcie_tp4_clustered_full.json b/ignition/preparation/ladders/gb202_pcie_tp4_clustered_full.json new file mode 100644 index 00000000..bf1e9acb --- /dev/null +++ b/ignition/preparation/ladders/gb202_pcie_tp4_clustered_full.json @@ -0,0 +1,437 @@ +{ + "version": 2, + "name": "gb202_pcie_tp4_clustered_full", + "compute_capability": [ + 12, + 0 + ], + "world_size": 4, + "dtype": "bfloat16", + "inplace": false, + "cache_policy": "cold", + "min_bytes": 16, + "buckets": [ + {"max_bytes": 1008,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1]}}, + {"max_bytes": 1024,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [8,32,36]}}, + {"max_bytes": 1072,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [4,16,32,64]}}, + {"max_bytes": 1120,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,32,36]}}, + {"max_bytes": 1168,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,8,64]}}, + {"max_bytes": 1216,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [2,4,16,64]}}, + {"max_bytes": 1264,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [4,16,36,64]}}, + {"max_bytes": 1328,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [2,4,8,36]}}, + {"max_bytes": 1392,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [8,64]}}, + {"max_bytes": 1456,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [2,4,8]}}, + {"max_bytes": 1520,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [8,16,64]}}, + {"max_bytes": 1584,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [8,36]}}, + {"max_bytes": 1648,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [1,4,32,64]}}, + {"max_bytes": 1728,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [2,36,64]}}, + {"max_bytes": 1792,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [4,32,64]}}, + {"max_bytes": 1872,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [4,8,16,32]}}, + {"max_bytes": 1968,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,4,32]}}, + {"max_bytes": 2048,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,16,36,64]}}, + {"max_bytes": 2144,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,3,4,36]}}, + {"max_bytes": 2240,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,8,32]}}, + {"max_bytes": 2336,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [2,8,16,64]}}, + {"max_bytes": 2432,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,8]}}, + {"max_bytes": 2544,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,36,64]}}, + {"max_bytes": 2656,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [1,4,32]}}, + {"max_bytes": 2768,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,2,16]}}, + {"max_bytes": 2896,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [1,8,16]}}, + {"max_bytes": 3024,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [2,8,64]}}, + {"max_bytes": 3152,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [1,8,32]}}, + {"max_bytes": 3296,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [8,64]}}, + {"max_bytes": 3440,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [1,8]}}, + {"max_bytes": 3600,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [8,16,36,64]}}, + {"max_bytes": 3760,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [32,64]}}, + {"max_bytes": 3920,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,2,8]}}, + {"max_bytes": 4096,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"full": [1,4,16,36]}}, + {"max_bytes": 4272,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,2,32]}}, + {"max_bytes": 4464,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [1,8]}}, + {"max_bytes": 4672,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [1,16,36]}}, + {"max_bytes": 4864,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [1,4]}}, + {"max_bytes": 5088,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,2,16,32]}}, + {"max_bytes": 5312,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [1,64]}}, + {"max_bytes": 5552,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,2,6,16]}}, + {"max_bytes": 5792,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,6,36],"payload_rsag": [16]}}, + {"max_bytes": 6048,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [1,2,8]}}, + {"max_bytes": 6320,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [32],"payload_rsag": [64]}}, + {"max_bytes": 6592,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [1,4,64],"payload_rsag": [1]}}, + {"max_bytes": 6896,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [2,64],"payload_rsag": [4,64]}}, + {"max_bytes": 7200,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [64],"payload_rsag": [64]}}, + {"max_bytes": 7520,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [36],"payload_rsag": [2,64]}}, + {"max_bytes": 7840,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [16,32],"payload_rsag": [1],"pull": [4]}}, + {"max_bytes": 8192,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [8,32],"payload_rsag": [1],"pull": [2]}}, + {"max_bytes": 8560,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [4,32],"payload_rsag": [1],"pull": [4]}}, + {"max_bytes": 8928,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [4,8],"pull": [5]}}, + {"max_bytes": 9328,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [16],"pull": [3,4]}}, + {"max_bytes": 9744,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [36],"pull": [5]}}, + {"max_bytes": 10176,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [64],"pull": [3,4]}}, + {"max_bytes": 10624,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"full": [32],"pull": [3]}}, + {"max_bytes": 11088,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [8,64],"pull": [6]}}, + {"max_bytes": 11584,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [16,36],"payload_rsag": [2],"pull": [6]}}, + {"max_bytes": 12096,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [4,8],"pull": [6]}}, + {"max_bytes": 12640,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [7],"pull": [7,8]}}, + {"max_bytes": 13200,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [16,32],"payload_rsag": [4],"pull": [13]}}, + {"max_bytes": 13776,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [7],"pull": [7]}}, + {"max_bytes": 14384,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [32],"payload_rsag": [4],"pull": [15]}}, + {"max_bytes": 15024,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [36],"pull": [8]}}, + {"max_bytes": 15696,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [36],"pull": [8]}}, + {"max_bytes": 16384,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [16,32],"pull": [8]}}, + {"max_bytes": 17104,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [32],"pull": [9]}}, + {"max_bytes": 17872,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [36],"payload_rsag": [4],"pull": [18]}}, + {"max_bytes": 18656,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [16,36],"payload_rsag": [2],"pull": [10]}}, + {"max_bytes": 19488,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [64],"payload_rsag": [4],"pull": [20]}}, + {"max_bytes": 20352,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [16],"pull": [10]}}, + {"max_bytes": 21248,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [8,32],"pull": [11]}}, + {"max_bytes": 22192,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [22,64],"payload_rsag": [4],"pull": [22]}}, + {"max_bytes": 23168,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"full": [4],"pull": [12]}}, + {"max_bytes": 24192,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"full": [64],"payload_rsag": [32],"pull": [16,24]}}, + {"max_bytes": 25264,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [13]}}, + {"max_bytes": 26384,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [8]}}, + {"max_bytes": 27552,"implementation": "joint_latency","threads": 64,"blocks": 64,"profiles": {"payload_rsag": [27],"pull": [16,27]}}, + {"max_bytes": 28768,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [36,64],"pull": [8]}}, + {"max_bytes": 30048,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"payload_rsag": [16,32],"pull": [8]}}, + {"max_bytes": 31376,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [8]}}, + {"max_bytes": 32768,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [16,32],"pull": [4,8]}}, + {"max_bytes": 34224,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [9],"pull": [8,9,16]}}, + {"max_bytes": 35728,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [9,64],"pull": [9]}}, + {"max_bytes": 37312,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [10,32],"pull": [10]}}, + {"max_bytes": 38960,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [10],"pull": [8,10]}}, + {"max_bytes": 40688,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [10],"pull": [10]}}, + {"max_bytes": 42496,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [11],"pull": [4,11]}}, + {"max_bytes": 44384,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [11,32],"pull": [4,8]}}, + {"max_bytes": 46336,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [12,16],"pull": [8]}}, + {"max_bytes": 48400,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [12,16],"pull": [8,12]}}, + {"max_bytes": 50528,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [13],"pull": [8]}}, + {"max_bytes": 52768,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [13],"pull": [8]}}, + {"max_bytes": 55104,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [14,64],"pull": [8]}}, + {"max_bytes": 57552,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [8]}}, + {"max_bytes": 60096,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [16,32],"pull": [8]}}, + {"max_bytes": 62752,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [4,8]}}, + {"max_bytes": 65536,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [4,8]}}, + {"max_bytes": 68432,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [17,36],"pull": [4,8]}}, + {"max_bytes": 71472,"implementation": "joint_latency","threads": 128,"blocks": 64,"profiles": {"payload_rsag": [36,64],"pull": [8,16]}}, + {"max_bytes": 74624,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,10]}}, + {"max_bytes": 77936,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [4,8]}}, + {"max_bytes": 81392,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [5],"payload_rsag": [36],"pull": [8]}}, + {"max_bytes": 84992,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [4,8],"full_phased": [8]},"cluster_size": 8}, + {"max_bytes": 88752,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,4,8]}}, + {"max_bytes": 92688,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [8]}}, + {"max_bytes": 96784,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [4,8,16]}}, + {"max_bytes": 101072,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [4,8]}}, + {"max_bytes": 105552,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 110224,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [2,8]}}, + {"max_bytes": 115104,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36,64],"pull": [2,8]}}, + {"max_bytes": 120192,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,8]}}, + {"max_bytes": 125520,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 131072,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [8],"payload_rsag": [36],"pull": [8]}}, + {"max_bytes": 136880,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [4,8]}}, + {"max_bytes": 142928,"implementation": "joint_latency","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [35,36],"pull": [4,8]}}, + {"max_bytes": 149264,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,8]}}, + {"max_bytes": 155872,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,4,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 162768,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,8]}}, + {"max_bytes": 169984,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 177504,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [22],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 185360,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [23,32],"pull": [2,8]}}, + {"max_bytes": 193568,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,8]}}, + {"max_bytes": 202144,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 211088,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,4,8]}}, + {"max_bytes": 220432,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [32],"pull": [2,4,8]}}, + {"max_bytes": 230192,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 240384,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8],"payload_rsag": [64]}}, + {"max_bytes": 251024,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"payload_rsag": [62],"pull": [4,8]}}, + {"max_bytes": 262144,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [8],"payload_rsag": [64],"pull": [32]}}, + {"max_bytes": 273744,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,8]}}, + {"max_bytes": 285872,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 298528,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [2,8,16],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 311744,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [36],"pull": [2,8]}}, + {"max_bytes": 325552,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,4,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 339952,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [11],"payload_rsag": [42],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 355008,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,8]}}, + {"max_bytes": 370720,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [46],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 387136,"implementation": "joint_latency","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [64],"pull": [2,4,8]}}, + {"max_bytes": 404288,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [13],"payload_rsag": [50],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 422176,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [13],"payload_rsag": [52],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 440864,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [14],"payload_rsag": [64],"pull": [2,8]}}, + {"max_bytes": 460384,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [15],"payload_rsag": [57],"pull": [2,16],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 480768,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8],"payload_rsag": [59],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 502064,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"payload_rsag": [62],"pull": [2,16,32],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 524288,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8],"payload_rsag": [64],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 547504,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [17],"payload_rsag": [64],"pull": [8]}}, + {"max_bytes": 571744,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [18],"bulk_push": [18],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 597056,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [19],"bulk_push": [19],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 623488,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [20],"bulk_push": [36],"pull": [8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 651088,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [20],"bulk_push": [20],"pull": [2,8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 679920,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [8,16],"bulk_push": [42]}}, + {"max_bytes": 710016,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [44],"bulk_push": [44],"pull": [4,8]}}, + {"max_bytes": 741456,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [23],"bulk_push": [16],"pull": [8]}}, + {"max_bytes": 774288,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [24],"bulk_push": [16,36],"pull": [8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 808560,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [50],"bulk_push": [32],"pull": [4,16]}}, + {"max_bytes": 844368,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [26],"bulk_push": [16,64],"pull": [8]}}, + {"max_bytes": 881744,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,32]}}, + {"max_bytes": 920784,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [16,57],"bulk_push": [32,57]}}, + {"max_bytes": 961552,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [30],"bulk_push": [30],"pull": [8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1004112,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [31],"bulk_push": [64],"pull": [16],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1048576,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [8,16,32],"bulk_push": [64]}}, + {"max_bytes": 1095008,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [34],"bulk_push": [64],"pull": [8]}}, + {"max_bytes": 1143488,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [35,36],"bulk_push": [36],"pull": [8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1194112,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [37],"bulk_push": [37],"pull": [8],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1246976,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8],"bulk_push": [39],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1302176,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [40],"bulk_push": [40],"pull": [16],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1359840,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8,16],"bulk_push": [42],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1420032,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [16,44],"bulk_push": [44],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1482912,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [46],"bulk_push": [46],"pull": [16],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1548560,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,32]}}, + {"max_bytes": 1617120,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8,32],"bulk_push": [36,64],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1688720,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [32,64],"pull": [8,32]}}, + {"max_bytes": 1763488,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [54],"bulk_push": [32,64],"pull": [16],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 1841568,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 1923104,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [32,64],"pull": [8,32]}}, + {"max_bytes": 2008240,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,36]}}, + {"max_bytes": 2097152,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [8],"bulk_push": [64]}}, + {"max_bytes": 2190000,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [36],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 2286960,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [36],"payload_rsag_phased": [8]},"cluster_size": 8}, + {"max_bytes": 2388208,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32],"bulk_push": [36,64]}}, + {"max_bytes": 2493952,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32,36],"bulk_push": [64]}}, + {"max_bytes": 2604368,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 2719664,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [64]}}, + {"max_bytes": 2840080,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,36]}}, + {"max_bytes": 2965824,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,16]}}, + {"max_bytes": 3097136,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [64],"pull": [16]}}, + {"max_bytes": 3234256,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32],"bulk_push": [32,64]}}, + {"max_bytes": 3377440,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [64]}}, + {"max_bytes": 3526976,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [32,64],"pull": [8,32]}}, + {"max_bytes": 3683120,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 3846192,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [64]}}, + {"max_bytes": 4016480,"implementation": "joint_bandwidth","threads": 256,"blocks": 64,"profiles": {"bulk_pull": [64],"bulk_push": [32,64],"pull": [32]}}, + {"max_bytes": 4194304,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32,36],"bulk_push": [36,64]}}, + {"max_bytes": 4380000,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,32]}}, + {"max_bytes": 4573920,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32,36],"bulk_push": [36,64]}}, + {"max_bytes": 4776432,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32],"bulk_push": [36,64]}}, + {"max_bytes": 4987904,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32,36],"bulk_push": [36,64]}}, + {"max_bytes": 5208736,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 5439344,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 5680160,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,36]}}, + {"max_bytes": 5931648,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,32]}}, + {"max_bytes": 6194256,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 6468496,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [36,64],"bulk_push": [64]}}, + {"max_bytes": 6754880,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,36]}}, + {"max_bytes": 7053952,"implementation": "joint_bandwidth","threads": 512,"blocks": 64,"profiles": {"bulk_pull": [36,64],"bulk_push": [8,64]}}, + {"max_bytes": 7366256,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [36,64],"pull": [8,36]}}, + {"max_bytes": 7692384,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,32]}}, + {"max_bytes": 8032960,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_push": [64],"pull": [8,36]}}, + {"max_bytes": 8388608,"implementation": "joint_bandwidth","threads": 128,"blocks": 64,"profiles": {"bulk_pull": [32],"bulk_push": [36,64]}} + ], + "all_gather": { + "min_bytes": 128, + "buckets": [ + {"max_bytes": 128,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [1]}}, + {"max_bytes": 256,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [1]}}, + {"max_bytes": 384,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [2]}}, + {"max_bytes": 512,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [2]}}, + {"max_bytes": 640,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [3]}}, + {"max_bytes": 768,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [3]}}, + {"max_bytes": 896,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [4]}}, + {"max_bytes": 1024,"implementation": "gather_joint","threads": 32,"blocks": 4,"profiles": {"word_exchange": [4]}}, + {"max_bytes": 1152,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [5]}}, + {"max_bytes": 1280,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [5]}}, + {"max_bytes": 1408,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [6]}}, + {"max_bytes": 1536,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [6]}}, + {"max_bytes": 1664,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [7]}}, + {"max_bytes": 1792,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [7]}}, + {"max_bytes": 1920,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [2],"word_exchange": [8]}}, + {"max_bytes": 2048,"implementation": "gather_joint","threads": 256,"blocks": 8,"profiles": {"barrier": [1,2],"word_exchange": [8]}}, + {"max_bytes": 2176,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [9]}}, + {"max_bytes": 2304,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [9]}}, + {"max_bytes": 2432,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [10]}}, + {"max_bytes": 2560,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [10]}}, + {"max_bytes": 2688,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [11]}}, + {"max_bytes": 2816,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [11]}}, + {"max_bytes": 2944,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [12]}}, + {"max_bytes": 3072,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [12]}}, + {"max_bytes": 3200,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2],"word_exchange": [13]}}, + {"max_bytes": 3328,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [13]}}, + {"max_bytes": 3456,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [14]}}, + {"max_bytes": 3584,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [14]}}, + {"max_bytes": 3712,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [15]}}, + {"max_bytes": 3968,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [16]}}, + {"max_bytes": 4096,"implementation": "gather_joint","threads": 256,"blocks": 16,"profiles": {"barrier": [1,2,4],"word_exchange": [16]}}, + {"max_bytes": 4224,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [17]}}, + {"max_bytes": 4480,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [18]}}, + {"max_bytes": 4608,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [18]}}, + {"max_bytes": 4864,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [19]}}, + {"max_bytes": 5120,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [20]}}, + {"max_bytes": 5376,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [21]}}, + {"max_bytes": 5504,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [22]}}, + {"max_bytes": 5760,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [23]}}, + {"max_bytes": 6016,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [24]}}, + {"max_bytes": 6272,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [25]}}, + {"max_bytes": 6656,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [26]}}, + {"max_bytes": 6912,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [27]}}, + {"max_bytes": 7168,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [28]}}, + {"max_bytes": 7552,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [30]}}, + {"max_bytes": 7808,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [31]}}, + {"max_bytes": 8192,"implementation": "gather_joint","threads": 256,"blocks": 32,"profiles": {"barrier": [1,2,4],"word_exchange": [32]}}, + {"max_bytes": 8576,"implementation": "gather_joint","threads": 256,"blocks": 34,"profiles": {"barrier": [1,2,4],"word_exchange": [34]}}, + {"max_bytes": 8960,"implementation": "gather_joint","threads": 256,"blocks": 35,"profiles": {"barrier": [1,2,4],"word_exchange": [35]}}, + {"max_bytes": 9344,"implementation": "gather_joint","threads": 256,"blocks": 37,"profiles": {"barrier": [1,2,4],"word_exchange": [37]}}, + {"max_bytes": 9728,"implementation": "gather_joint","threads": 256,"blocks": 38,"profiles": {"barrier": [1,2,4],"word_exchange": [38]}}, + {"max_bytes": 10240,"implementation": "gather_joint","threads": 256,"blocks": 40,"profiles": {"barrier": [1,2,4],"word_exchange": [40]}}, + {"max_bytes": 10624,"implementation": "gather_joint","threads": 256,"blocks": 42,"profiles": {"barrier": [1,2,4],"word_exchange": [42]}}, + {"max_bytes": 11136,"implementation": "gather_joint","threads": 256,"blocks": 44,"profiles": {"barrier": [1,2,4],"word_exchange": [44]}}, + {"max_bytes": 11520,"implementation": "gather_joint","threads": 256,"blocks": 45,"profiles": {"barrier": [1,2,4],"word_exchange": [45]}}, + {"max_bytes": 12032,"implementation": "gather_joint","threads": 256,"blocks": 47,"profiles": {"barrier": [1,2,8],"word_exchange": [47]}}, + {"max_bytes": 12672,"implementation": "gather_joint","threads": 256,"blocks": 50,"profiles": {"barrier": [1,2,4],"word_exchange": [50]}}, + {"max_bytes": 13184,"implementation": "gather_joint","threads": 256,"blocks": 52,"profiles": {"barrier": [1,2,4],"word_exchange": [52]}}, + {"max_bytes": 13824,"implementation": "gather_joint","threads": 256,"blocks": 54,"profiles": {"barrier": [1,2,8],"word_exchange": [54]}}, + {"max_bytes": 14336,"implementation": "gather_joint","threads": 256,"blocks": 56,"profiles": {"barrier": [1,2,8],"word_exchange": [56]}}, + {"max_bytes": 14976,"implementation": "gather_joint","threads": 256,"blocks": 59,"profiles": {"barrier": [1,2,4],"word_exchange": [59]}}, + {"max_bytes": 15744,"implementation": "gather_joint","threads": 256,"blocks": 62,"profiles": {"barrier": [1,2,4],"word_exchange": [62]}}, + {"max_bytes": 16384,"implementation": "gather_joint","threads": 256,"blocks": 64,"profiles": {"barrier": [1,2,4],"word_exchange": [64]}}, + {"max_bytes": 17152,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,34]}}, + {"max_bytes": 17920,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,35]}}, + {"max_bytes": 18688,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,37]}}, + {"max_bytes": 19456,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,38]}}, + {"max_bytes": 20352,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,40]}}, + {"max_bytes": 21248,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,42]}}, + {"max_bytes": 22144,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,44]}}, + {"max_bytes": 23168,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,46]}}, + {"max_bytes": 24192,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,48]}}, + {"max_bytes": 25216,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,50]}}, + {"max_bytes": 26368,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,52]}}, + {"max_bytes": 27520,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,54]}}, + {"max_bytes": 28800,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,57]}}, + {"max_bytes": 30080,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,59]}}, + {"max_bytes": 31360,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,62]}}, + {"max_bytes": 32768,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 34176,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 35712,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 37376,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 38912,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 40704,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 42496,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 44416,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 46336,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 48384,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 50560,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 52736,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 55040,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 57600,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 60160,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 62720,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 65536,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,16,64]}}, + {"max_bytes": 68480,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 71424,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 74624,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 77952,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 81408,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 84992,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 88704,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 92672,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 96768,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 101120,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 105600,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 110208,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 115072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 120192,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 125568,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 131072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 136832,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 142976,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 149248,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 155904,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 162816,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 169984,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 177536,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 185344,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 193536,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 202112,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 211072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 220416,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 230144,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 240384,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 251008,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 262144,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 273792,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 285824,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 298496,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 311808,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 325504,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 339968,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 355072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 370688,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,8,64]}}, + {"max_bytes": 387072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 404224,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 422144,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 440832,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 460416,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 480768,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 502016,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 524288,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 547456,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 571776,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 596992,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 623488,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,16,64]}}, + {"max_bytes": 651136,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 679936,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 710016,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 741504,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 774272,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 808576,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 844416,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 881792,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 920832,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 961536,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 1004160,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,32,64]}}, + {"max_bytes": 1048576,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,64]}}, + {"max_bytes": 1095040,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,64]}}, + {"max_bytes": 1143552,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1194112,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,64]}}, + {"max_bytes": 1246976,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1302144,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1359872,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,64]}}, + {"max_bytes": 1420032,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1482880,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1548544,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,64]}}, + {"max_bytes": 1617152,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,64]}}, + {"max_bytes": 1688704,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1763456,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1841536,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,32,64]}}, + {"max_bytes": 1923072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2008192,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2097152,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2189952,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2286976,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2388224,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2493952,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2604416,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2719616,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2840064,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 2965760,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 3097088,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 3234304,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 3377408,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 3526912,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 3683072,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 3846144,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 4016512,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 4194304,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 4380032,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 4573952,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 4776448,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 4987904,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 5208704,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 5439360,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 5680128,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 5931648,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 6194304,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 6468480,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 6754816,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 7053952,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 7366272,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 7692416,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 8033024,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}}, + {"max_bytes": 8388608,"implementation": "gather_selected_barrier","threads": 512,"blocks": 64,"profiles": {"barrier": [1,2,64]}} + ] + } +} diff --git a/pyproject.toml b/pyproject.toml index 95ccbb94..4ef2aa40 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ prepare = [ "torch==2.14.1+cu132", "torchvision==0.29.1+cu132", "transformers[torch,vision,chat_template] @ git+https://github.com/huggingface/transformers.git@1d9654e78a23fb167ef539cbd699dfbd3e4830cf", - "flashinfer-python[b12x] @ git+https://github.com/local-inference-lab/flashinfer.git@main", + "flashinfer-python[b12x] @ git+https://github.com/local-inference-lab/flashinfer.git@560fef16648e4953bf39b701a226c322a0ab6c7c", "cuda-python==13.3.1", "cuda-tile[tileiras]==1.6.0", "safetensors==0.8.0", diff --git a/tests/components/test_clustered_gather_interleaving_cuda.py b/tests/components/test_clustered_gather_interleaving_cuda.py new file mode 100644 index 00000000..a7e28471 --- /dev/null +++ b/tests/components/test_clustered_gather_interleaving_cuda.py @@ -0,0 +1,118 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Clustered reductions feed device-selected gathers across captured row sizes.""" + +from datetime import timedelta +import os +from pathlib import Path + +import pytest + +pytestmark = pytest.mark.skipif(os.environ.get("FLARE_RUN_TP_CUDA_TESTS") != "1", + reason="requires four explicitly assigned GPUs") + + +def _rank(rank, directory): + import torch + import torch.distributed as dist + from ignition.components.collectives import PreparedAllGather, PreparedAllReduce, _all_gather, _all_reduce + from ignition.preparation.aot import StorageBackend + from ignition.preparation.collective_ladder import load + from ignition.preparation.collectives import ( + CollectivePreparation, create_all_gather_runtime, create_all_reduce_runtime, + ) + from ignition.preparation.startup_tuning import capture_consumers + from ignition.preparation.tuning import RecordedPreparationSession + + torch.cuda.set_device(rank) + torch.set_num_threads(1) + device = torch.device("cuda", rank) + dist.init_process_group("gloo", init_method=(Path(directory) / "group").as_uri(), + rank=rank, world_size=4, timeout=timedelta(minutes=3)) + coordinator = CollectivePreparation(dist.group.WORLD) + reduction = create_all_reduce_runtime(dist.group.WORLD, device, max_tokens=32, + hidden_size=5120, collective_tuning="runtime") + gather = create_all_gather_runtime(dist.group.WORLD, device, max_rows=32, columns=4 * 5120) + session = RecordedPreparationSession(device=device, checkpoint="collective-dependencies", + workload_schema="reduce-then-gather", numerical_policy="exact", coordinator=coordinator, + collective_tuning="runtime", compile_workers=4, autotune_effort="default", + collective_ladder=load(Path(__file__).resolve().parents[2] / + "ignition/preparation/ladders/gb202_pcie_tp4_clustered_full.json")) + cases, graphs = {}, {} + try: + for rows in (8, 16, 32): + source = torch.zeros((rows, 5120), dtype=torch.bfloat16, device=device) + reduced = torch.empty_like(source) + gathered = torch.empty((rows, 4 * 5120), dtype=source.dtype, device=device) + r = PreparedAllReduce(source, reduced, runtime=reduction, session=session, + coordinator=coordinator, name=f"reduce-{rows}") + g = PreparedAllGather(reduced, gathered, runtime=gather, session=session, + coordinator=coordinator, name=f"gather-{rows}") + cases[rows] = source, reduced, gathered, r, g + session.tune(show_progress=False) + + def forward(reduce_handle, gather_handle): + def run(source, reduced, gathered): + _all_reduce(source, reduced, reduce_handle) + _all_gather(reduced, gathered, gather_handle) + return run + + for rows, (source, reduced, gathered, r, g) in cases.items(): + assert r.plan.prepared.state.query.call["joint_cluster_size"] == 8 + compiled = StorageBackend(forward(r.handle, g.handle), (source, reduced, gathered)) + compiled(source, reduced, gathered) + torch.cuda.synchronize() + dist.barrier() + graph = torch.cuda.CUDAGraph() + with session.capture(), capture_consumers(session, graph), torch.cuda.graph(graph): + compiled(source, reduced, gathered) + assert session._startup_collectives.captures[id(graph)] == {id(r), id(g)} + graphs[rows] = graph, compiled + session.freeze() + assert {p.gather for p in session._startup_collectives.groups.values()} == {False, True} + for producer in session._startup_collectives.groups.values(): + graph = torch.cuda.CUDAGraph() + with session.capture(), torch.cuda.graph(graph): + producer.run() + graph.replay() + torch.cuda.synchronize() + assert producer.status.item() == 0 + choices = [None] * 4 + dist.all_gather_object(choices, tuple(int(s.selector.item()) for s in producer.specs)) + assert all(choice == choices[0] for choice in choices) + graph.reset() + + for step, rows in enumerate((8, 32, 16, 8, 16, 32) * 3): + source, reduced, gathered, _, _ = cases[rows] + values = torch.arange(rows * 5120).reshape(1, rows, 5120) + operands = ((values + 3 * torch.arange(4).reshape(4, 1, 1) + step) % 16).to(torch.bfloat16) + expected = operands.float().sum(0).to(torch.bfloat16) + source.copy_(operands[rank]) + reduced.fill_(float("nan")) + gathered.fill_(float("nan")) + before = torch.cuda.memory_stats() + graphs[rows][0].replay() + torch.cuda.synchronize() + after = torch.cuda.memory_stats() + for key in ("allocation.all.allocated", "allocation.all.freed", "segment.all.allocated"): + assert before[key] == after[key], key + assert torch.equal(reduced.cpu(), expected) + assert torch.equal(gathered.cpu(), expected.repeat(1, 4)) + assert torch.equal(source.cpu(), operands[rank]) + finally: + torch.cuda.synchronize() + for graph, _ in graphs.values(): + graph.reset() + session.close() + gather.close() + reduction.close() + dist.destroy_process_group() + + +def test_clustered_reduction_and_gather_share_captured_dependencies(tmp_path): + import torch + import torch.multiprocessing as mp + + assert torch.cuda.device_count() == 4 + mp.spawn(_rank, args=(str(tmp_path),), nprocs=4, join=True) diff --git a/tests/components/test_collective_plan_choice.py b/tests/components/test_collective_plan_choice.py index 1e85238d..f4846e99 100644 --- a/tests/components/test_collective_plan_choice.py +++ b/tests/components/test_collective_plan_choice.py @@ -112,6 +112,38 @@ def channel(): session=object(), coordinator=object(), name="reduce") +@pytest.mark.parametrize("first_profile", [("payload_rsag_phased", 8), ("payload_rsag", 64)]) +def test_clustered_ladder_prepares_a_valid_initial_profile(monkeypatch, first_profile): + from copy import deepcopy + from b12x.comm.pcie import CollectiveConfig + from ignition.components import collectives + from ignition.preparation import startup_tuning + from ignition.preparation.collective_ladder import load, validate + + data = deepcopy(load("ignition/preparation/ladders/gb202_pcie_tp4.json")) + mode, active = first_profile + data["buckets"][0].update(threads=512, blocks=64, cluster_size=8, profiles={mode: [active]}) + validate(data) + calls = [] + plan = SimpleNamespace(request=lambda **kwargs: object()) + runtime = SimpleNamespace(algorithm="oneshot", world_size=4, single_channel=True, + exchange_group=object(), for_stream=lambda: SimpleNamespace(_joint_workspace=object()), + plan=lambda *args, **kwargs: calls.append(kwargs) or plan) + monkeypatch.setattr(torch.cuda, "get_device_capability", lambda device: (12, 0)) + monkeypatch.setattr(collectives, "_roce", lambda _: False) + monkeypatch.setattr(collectives, "declare", lambda *args, **kwargs: None) + monkeypatch.setattr(torch.distributed, "get_process_group_ranks", lambda _: [0, 1, 2, 3]) + monkeypatch.setattr(startup_tuning, "register_collective", lambda *args: None) + source = torch.ones(8, dtype=torch.bfloat16) + output = torch.empty_like(source) + collectives.PreparedAllReduce(source, output, runtime=runtime, + session=SimpleNamespace(collective_tuning="runtime", collective_ladder=data), + coordinator=object(), name="hidden.reduce") + assert calls == [dict(out=output, joint_only=True, joint_cluster_size=8, + override=CollectiveConfig(implementation="joint_latency", threads=512, + blocks=64, submode=mode, active_blocks=active))] + + def test_collective_choice_keys_distinguish_alternatives_and_finalist_policy(): from b12x.comm.pcie import joint_finalist_policy from b12x.comm.pcie._collective_tuning import CollectiveConfig, CollectiveQuery, TUNING diff --git a/tests/preparation/test_collective_ladder.py b/tests/preparation/test_collective_ladder.py index f91dae1e..f7f3500b 100644 --- a/tests/preparation/test_collective_ladder.py +++ b/tests/preparation/test_collective_ladder.py @@ -67,6 +67,90 @@ def test_invalid_bucket(changes): validate(data) +def clustered_ladder(): + data = deepcopy(load(LADDER)) + data["buckets"][0].update(threads=512, blocks=64, cluster_size=8, + profiles={"payload_rsag": [64], "pull": [2, 8], "payload_rsag_phased": [8]}) + return data + + +def test_clustered_geometry_retains_ordinary_profiles_and_exact_contents(): + data = clustered_ladder() + expected = deepcopy(data) + assert validate(data) is data and data == expected + assert choose(data, 16) is data["buckets"][0] + ordinary = deepcopy(load(LADDER)) + ordinary["buckets"][0]["cluster_size"] = 1 + assert validate(ordinary) is ordinary + + +@pytest.mark.parametrize("filename, changed_count", [ + ("gb202_pcie_tp4_clustered.json", 36), + ("gb202_pcie_tp4_clustered_full.json", 37), +]) +def test_clustered_catalog_preserves_every_ordinary_candidate(filename, changed_count): + baseline = load(LADDER) + clustered = load(LADDER.with_name(filename)) + assert {key: value for key, value in clustered.items() if key not in ("name", "buckets")} == { + key: value for key, value in baseline.items() if key not in ("name", "buckets")} + assert len(clustered["buckets"]) == len(baseline["buckets"]) + changed = [] + for ordinary, candidate in zip(baseline["buckets"], clustered["buckets"], strict=True): + if candidate == ordinary: + continue + changed.append(candidate["max_bytes"]) + without_cluster = deepcopy(candidate) + assert without_cluster.pop("cluster_size") == 8 + for mode in ("payload_rsag_phased", "full_phased"): + if mode in without_cluster["profiles"]: + assert without_cluster["profiles"].pop(mode) == [8] + assert without_cluster == ordinary + assert ordinary["threads"] == 512 and ordinary["blocks"] == 64 + assert len(changed) == changed_count + assert {169984, 339952} <= set(changed) + assert (84992 in changed) == filename.endswith("_full.json") + + +def test_full_phase_catalog_differs_only_at_the_80_kib_bucket(): + packed = load(LADDER.with_name("gb202_pcie_tp4_clustered.json")) + full = load(LADDER.with_name("gb202_pcie_tp4_clustered_full.json")) + changed = [(before, after) for before, after in zip(packed["buckets"], full["buckets"], strict=True) + if before != after] + assert len(changed) == 1 + before, after = changed[0] + assert before["max_bytes"] == 84992 + expected = deepcopy(before) + expected.update(cluster_size=8) + expected["profiles"]["full_phased"] = [8] + assert after == expected + + +@pytest.mark.parametrize("changes", [dict(cluster_size=True), dict(cluster_size=0), + dict(cluster_size=16), dict(threads=256), dict(blocks=16), + dict(profiles={"payload_rsag_phased": [1]}), dict(profiles={"payload_rsag_phased": [16]}), + dict(profiles={"payload_rsag_phased": [8, 16]})]) +def test_clustered_profiles_reject_incomplete_or_multiple_active_clusters(changes): + data = clustered_ladder() + data["buckets"][0].update(changes) + with pytest.raises(UsageError, match="collective ladder"): + validate(data) + + +def test_phased_profiles_require_clustered_supported_geometry(): + data = clustered_ladder() + del data["buckets"][0]["cluster_size"] + with pytest.raises(UsageError, match="prepared joint kernel"): + validate(data) + data = clustered_ladder() + data["compute_capability"] = [10, 3] + with pytest.raises(UsageError, match="SM120 or SM121"): + validate(data) + data = clustered_ladder() + data["buckets"][0].update(implementation="joint_bandwidth", profiles={"full_phased": [8]}) + with pytest.raises(UsageError, match="prepared joint kernel"): + validate(data) + + def test_runtime_requires_file_and_static_rejects_it(tmp_path): with pytest.raises(UsageError, match="requires --collective-ladder"): resolve("runtime", None) @@ -119,13 +203,45 @@ def test_b12x_accepts_pinned_geometry_at_both_ends_of_every_bucket(effort): lower = row["max_bytes"] + 16 -def test_native_export_preserves_ladder_contents(): +@pytest.mark.parametrize("effort", ["off", "default", "audit"]) +@pytest.mark.parametrize("filename", ["gb202_pcie_tp4_clustered.json", "gb202_pcie_tp4_clustered_full.json"]) +def test_clustered_catalog_profiles_are_admitted_by_b12x(effort, filename): + from b12x.comm.pcie._collective_tuning import CollectiveConfig, CollectiveQuery, TUNING + from b12x.comm.pcie._joint_profile import selected_profile + from b12x.preparation import FrozenMapping, autotune_effort + + data = load(LADDER.with_name(filename)) + lower = data["min_bytes"] + with autotune_effort(effort): + for row in data["buckets"]: + if row.get("cluster_size", 1) == 8: + family = row["implementation"] + for mode, counts in row["profiles"].items(): + for active in counts: + config = CollectiveConfig(implementation=family, threads=512, blocks=64, + submode=mode, active_blocks=active) + for size in (lower, row["max_bytes"]): + query = CollectiveQuery(operation="all_reduce", world_size=4, rank=0, + alternatives=FrozenMapping({family: dict(surface="OneshotAllReduce.all_reduce", + world_size=4, rank=0, topology="pcie_ipc", setup={"joint_max_blocks": 64}, + call=dict(transport=family, threads=512, blocks=64, submode=mode, active_blocks=active, + size_packs=size // 16, stage_input=True, dtype="bfloat16", + joint_cluster_size=8))}), default=config) + configured = TUNING.configure(query, device=None, override=config, search=effort != "off") + assert configured.pinned == config + encoded = selected_profile(family, 64, mode, active, cluster_size=8) + assert encoded & 0xffff == active + lower = row["max_bytes"] + 16 + + +@pytest.mark.parametrize("clustered", [False, True]) +def test_native_export_preserves_ladder_contents(clustered): import json from ignition.preparation.package_proto import serving from ignition.preparation.runtime_package_pb2 import ModelIndex from tests.preparation.test_frontend_metadata import server - data = load(LADDER) + data = clustered_ladder() if clustered else load(LADDER) source = server() source["rebuild_manifest"] = dict(version=1, collective_tuning="runtime", collective_ladder_json=json.dumps(data)) diff --git a/uv.lock b/uv.lock index ded918c4..4d7befe8 100644 --- a/uv.lock +++ b/uv.lock @@ -565,7 +565,7 @@ requires-dist = [ { name = "cuda-python", marker = "extra == 'prepare'", specifier = "==13.3.1" }, { name = "cuda-tile", extras = ["tileiras"], marker = "extra == 'prepare'", specifier = "==1.6.0" }, { name = "flare-heliopause", marker = "extra == 'prepare'", directory = "heliopause" }, - { name = "flashinfer-python", extras = ["b12x"], marker = "extra == 'prepare'", git = "https://github.com/local-inference-lab/flashinfer.git?rev=main" }, + { name = "flashinfer-python", extras = ["b12x"], marker = "extra == 'prepare'", git = "https://github.com/local-inference-lab/flashinfer.git?rev=560fef16648e4953bf39b701a226c322a0ab6c7c" }, { name = "huggingface-hub", marker = "extra == 'prepare'", specifier = "==1.33.0" }, { name = "openai", marker = "extra == 'api-test'", specifier = ">=2,<3" }, { name = "pillow", marker = "extra == 'prepare'", specifier = "==12.3.0" },