+++ /dev/null
-<!-- This platform was automatically converted from the OptorSim platform.
-
- As such, it only contains information of the cluster interconnexion,
- not on the caracteristics of each cluster. In a sense, it describes
- the network of a National Research and Education Network (NREN), but
- not of a computational platform.
-
- We hope that you find it useful anyway. I you know how to complete
- this information with data on the cluster configurations, please
- drop us a mail so that we can add this information. -->
-
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
-<platform version="3">
-<AS id="AS0" routing="Floyd">
-<!--0 WC_Gla-->
-<!--1 WC_Edi-->
-<!--2 WC_Manc-->
-<!--3 WC_Leeds-->
-<!--4 WC_Reading-->
-<!--5 WC_London-->
-<!--6 WC_Bristol-->
-<!--7 WC_Portsmouth-->
-<!--8 Gla_router-->
-<!--9 Edi_router-->
-<!--10 NorMAN-->
-<!--11 YHMAN-->
-<!--12 EastNet-->
-<!--13 LMN-->
-<!--14 SWAN_BWEMAN-->
-<!--15 TVN-->
-<!--16 MidMAN-->
-<!--17 NNW_router-->
-<!--18 Glasgow-->
-<!--19 Edi-->
-<!--20 Durham-->
-<!--21 Sheffield-->
-<!--22 Cam-->
-<!--23 UCL-->
-<!--24 IC-->
-<!--25 QMW-->
-<!--26 Brunel-->
-<!--27 RHNBC-->
-<!--28 Bristol-->
-<!--29 RAL-->
-<!--30 Oxford-->
-<!--31 B_ham-->
-<!--32 L_pool-->
-<!--33 Manc-->
-<!--34 Lanc-->
-<!--35 CERN-->
- <host id="WC_Edi" power="1f"/>
- <host id="WC_Manc" power="1f"/>
- <host id="Gla_router" power="1f"/>
- <host id="Glasgow" power="20Mf"/>
- <host id="Edi" power="25.6Mf"/>
- <host id="Durham" power="4.134Mf"/>
- <host id="Sheffield" power="49.64Mf"/>
- <host id="Cam" power="1.32Mf"/>
- <host id="UCL" power="22.5Mf"/>
- <host id="IC" power="440Mf"/>
- <host id="QMW" power="44Mf"/>
- <host id="Brunel" power="85.68Mf"/>
- <host id="RHNBC" power="7.2Mf"/>
- <host id="Bristol" power="60Mf"/>
- <host id="RAL" power="556.956Mf"/>
- <host id="Oxford" power="156.56Mf"/>
- <host id="B_ham" power="13.5Mf"/>
- <host id="L_pool" power="308.07Mf"/>
- <host id="Manc" power="22.5Mf"/>
- <host id="Lanc" power="204.8Mf"/>
- <host id="CERN" power="1f"/>
-
- <router id="WC_Gla"/>
- <router id="WC_Leeds"/>
- <router id="WC_Reading"/>
- <router id="WC_London"/>
- <router id="WC_Bristol"/>
- <router id="WC_Portsmouth"/>
- <router id="Edi_router"/>
- <router id="NorMAN"/>
- <router id="YHMAN"/>
- <router id="EastNet"/>
- <router id="LMN"/>
- <router id="SWAN_BWEMAN"/>
- <router id="TVN"/>
- <router id="MidMAN"/>
- <router id="NNW_router"/>
-
- <link id="link0" bandwidth="10kBps"/>
- <link id="link1" bandwidth="10kBps"/>
- <link id="link2" bandwidth="1kBps"/>
- <link id="link3" bandwidth="10kBps"/>
- <link id="link4" bandwidth="1kBps"/>
- <link id="link5" bandwidth="10kBps"/>
- <link id="link6" bandwidth="10kBps"/>
- <link id="link7" bandwidth="1kBps"/>
- <link id="link8" bandwidth="1kBps"/>
- <link id="link9" bandwidth="10kBps"/>
- <link id="link10" bandwidth="622Bps"/>
- <link id="link11" bandwidth="1kBps"/>
- <link id="link12" bandwidth="10kBps"/>
- <link id="link13" bandwidth="10kBps"/>
- <link id="link14" bandwidth="622Bps"/>
- <link id="link15" bandwidth="10kBps"/>
- <link id="link16" bandwidth="1kBps"/>
- <link id="link17" bandwidth="1kBps"/>
- <link id="link18" bandwidth="10kBps"/>
- <link id="link19" bandwidth="622Bps"/>
- <link id="link20" bandwidth="2.5kBps"/>
- <link id="link21" bandwidth="1kBps"/>
- <link id="link22" bandwidth="1kBps"/>
- <link id="link23" bandwidth="155Bps"/>
- <link id="link24" bandwidth="155Bps"/>
- <link id="link25" bandwidth="155Bps"/>
- <link id="link26" bandwidth="155Bps"/>
- <link id="link27" bandwidth="155Bps"/>
- <link id="link28" bandwidth="155Bps"/>
- <link id="link29" bandwidth="155Bps"/>
- <link id="link30" bandwidth="155Bps"/>
- <link id="link31" bandwidth="622Bps"/>
- <link id="link32" bandwidth="622Bps"/>
- <link id="link33" bandwidth="622Bps"/>
- <link id="link34" bandwidth="622Bps"/>
- <link id="link35" bandwidth="155Bps"/>
- <link id="link36" bandwidth="1kBps"/>
- <link id="link37" bandwidth="155Bps"/>
-
- <route src="WC_Gla" dst="WC_Gla">
- <link_ctn id="link0"/>
- </route>
- <route src="WC_Gla" dst="WC_Edi">
- <link_ctn id="link1"/>
- </route>
- <route src="WC_Gla" dst="WC_Portsmouth">
- <link_ctn id="link2"/>
- </route>
- <route src="WC_Edi" dst="WC_Manc">
- <link_ctn id="link3"/>
- </route>
- <route src="WC_Edi" dst="Gla_router">
- <link_ctn id="link4"/>
- </route>
- <route src="WC_Manc" dst="WC_Manc">
- <link_ctn id="link5"/>
- </route>
- <route src="WC_Manc" dst="WC_Leeds">
- <link_ctn id="link6"/>
- </route>
- <route src="WC_Manc" dst="TVN">
- <link_ctn id="link7"/>
- </route>
- <route src="WC_Manc" dst="MidMAN">
- <link_ctn id="link8"/>
- </route>
- <route src="WC_Leeds" dst="WC_Reading">
- <link_ctn id="link9"/>
- </route>
- <route src="WC_Leeds" dst="Edi_router">
- <link_ctn id="link10"/>
- </route>
- <route src="WC_Leeds" dst="NorMAN">
- <link_ctn id="link11"/>
- </route>
- <route src="WC_Reading" dst="WC_Reading">
- <link_ctn id="link12"/>
- </route>
- <route src="WC_Reading" dst="WC_London">
- <link_ctn id="link13"/>
- </route>
- <route src="WC_Reading" dst="SWAN_BWEMAN">
- <link_ctn id="link14"/>
- </route>
- <route src="WC_London" dst="WC_Bristol">
- <link_ctn id="link15"/>
- </route>
- <route src="WC_London" dst="YHMAN">
- <link_ctn id="link16"/>
- </route>
- <route src="WC_London" dst="EastNet">
- <link_ctn id="link17"/>
- </route>
- <route src="WC_Bristol" dst="WC_Bristol">
- <link_ctn id="link18"/>
- </route>
- <route src="WC_Bristol" dst="LMN">
- <link_ctn id="link19"/>
- </route>
- <route src="WC_Portsmouth" dst="Lanc">
- <link_ctn id="link20"/>
- </route>
- <route src="Gla_router" dst="NNW_router">
- <link_ctn id="link21"/>
- </route>
- <route src="Edi_router" dst="Glasgow">
- <link_ctn id="link22"/>
- </route>
- <route src="NorMAN" dst="Edi">
- <link_ctn id="link23"/>
- </route>
- <route src="YHMAN" dst="Durham">
- <link_ctn id="link24"/>
- </route>
- <route src="EastNet" dst="Sheffield">
- <link_ctn id="link25"/>
- </route>
- <route src="LMN" dst="Cam">
- <link_ctn id="link26"/>
- </route>
- <route src="LMN" dst="UCL">
- <link_ctn id="link27"/>
- </route>
- <route src="LMN" dst="IC">
- <link_ctn id="link28"/>
- </route>
- <route src="LMN" dst="QMW">
- <link_ctn id="link29"/>
- </route>
- <route src="LMN" dst="Brunel">
- <link_ctn id="link30"/>
- </route>
- <route src="SWAN_BWEMAN" dst="RHNBC">
- <link_ctn id="link31"/>
- </route>
- <route src="TVN" dst="Bristol">
- <link_ctn id="link32"/>
- </route>
- <route src="TVN" dst="RAL">
- <link_ctn id="link33"/>
- </route>
- <route src="MidMAN" dst="Oxford">
- <link_ctn id="link34"/>
- </route>
- <route src="NNW_router" dst="B_ham">
- <link_ctn id="link35"/>
- </route>
- <route src="NNW_router" dst="L_pool">
- <link_ctn id="link36"/>
- </route>
- <route src="NNW_router" dst="Manc">
- <link_ctn id="link37"/>
- </route>
-</AS>
-</platform>
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
-<platform version="3">
-<AS id="AS0" routing="Floyd">
- <host id="0" power="1.47Tf"/>
- <host id="1" power="1.82Gf"/>
- <host id="2" power="1f"/>
- <host id="4" power="593.46Gf"/>
- <host id="5" power="560Mf"/>
- <host id="6" power="560Mf"/>
- <host id="7" power="560Mf"/>
- <host id="8" power="96Mf"/>
- <host id="9" power="7.68Gf"/>
- <host id="10" power="910Mf"/>
- <host id="12" power="250Mf"/>
- <host id="13" power="448Mf"/>
- <host id="15" power="12.5Mf"/>
- <host id="16" power="12.5Mf"/>
- <host id="18" power="78Mf"/>
- <host id="20" power="560Mf"/>
- <host id="23" power="60Mf"/>
- <host id="24" power="154.524Gf"/>
- <host id="25" power="60Mf"/>
- <host id="26" power="60Mf"/>
- <host id="27" power="60Mf"/>
- <host id="28" power="60Mf"/>
- <host id="29" power="60Mf"/>
- <host id="30" power="60Mf"/>
- <host id="31" power="1f"/>
- <host id="32" power="2.1Gf"/>
- <host id="33" power="21Gf"/>
- <host id="35" power="442Mf"/>
- <host id="36" power="6.5Gf"/>
- <host id="38" power="300Mf"/>
- <host id="39" power="1.2Gf"/>
- <host id="42" power="540Mf"/>
- <host id="43" power="390Mf"/>
- <host id="44" power="208Mf"/>
- <host id="45" power="600Mf"/>
- <host id="49" power="44.352Gf"/>
- <host id="50" power="4.564Gf"/>
- <host id="52" power="78.522Gf"/>
- <host id="54" power="9.2Gf"/>
- <host id="56" power="142.476Gf"/>
- <host id="57" power="448Mf"/>
- <host id="59" power="3.78Gf"/>
- <host id="60" power="250Mf"/>
- <host id="61" power="650Mf"/>
- <host id="64" power="9.2Gf"/>
- <host id="65" power="250Mf"/>
- <host id="66" power="250Mf"/>
- <host id="67" power="592Mf"/>
- <host id="68" power="250Mf"/>
- <host id="69" power="250Mf"/>
- <host id="70" power="250Mf"/>
- <host id="71" power="4Mf"/>
- <host id="72" power="250Mf"/>
- <host id="73" power="250Mf"/>
- <host id="74" power="1f"/>
- <host id="75" power="53.6Gf"/>
- <host id="77" power="14.248Gf"/>
- <host id="79" power="24Mf"/>
- <host id="82" power="240Mf"/>
- <host id="83" power="2.56Gf"/>
- <host id="86" power="2.28Gf"/>
- <host id="89" power="20Mf"/>
- <host id="93" power="250Mf"/>
- <host id="95" power="8.636Gf"/>
- <host id="97" power="250Mf"/>
- <host id="98" power="250Mf"/>
- <host id="99" power="28.098Gf"/>
- <host id="100" power="250Mf"/>
-
- <router id="3"/>
- <router id="11"/>
- <router id="14"/>
- <router id="17"/>
- <router id="19"/>
- <router id="21"/>
- <router id="22"/>
- <router id="34"/>
- <router id="37"/>
- <router id="40"/>
- <router id="41"/>
- <router id="46"/>
- <router id="47"/>
- <router id="48"/>
- <router id="51"/>
- <router id="53"/>
- <router id="55"/>
- <router id="58"/>
- <router id="62"/>
- <router id="63"/>
- <router id="76"/>
- <router id="78"/>
- <router id="80"/>
- <router id="81"/>
- <router id="84"/>
- <router id="85"/>
- <router id="87"/>
- <router id="88"/>
- <router id="90"/>
- <router id="91"/>
- <router id="92"/>
- <router id="94"/>
- <router id="96"/>
-
- <link id="link0" bandwidth="1kBps"/>
- <link id="link1" bandwidth="10kBps"/>
- <link id="link2" bandwidth="10kBps"/>
- <link id="link3" bandwidth="155Bps"/>
- <link id="link4" bandwidth="10kBps"/>
- <link id="link5" bandwidth="10kBps"/>
- <link id="link6" bandwidth="10kBps"/>
- <link id="link7" bandwidth="155Bps"/>
- <link id="link8" bandwidth="155Bps"/>
- <link id="link9" bandwidth="155Bps"/>
- <link id="link10" bandwidth="155Bps"/>
- <link id="link11" bandwidth="155Bps"/>
- <link id="link12" bandwidth="155Bps"/>
- <link id="link13" bandwidth="155Bps"/>
- <link id="link14" bandwidth="155Bps"/>
- <link id="link15" bandwidth="10kBps"/>
- <link id="link16" bandwidth="10kBps"/>
- <link id="link17" bandwidth="155Bps"/>
- <link id="link18" bandwidth="155Bps"/>
- <link id="link19" bandwidth="155Bps"/>
- <link id="link20" bandwidth="155Bps"/>
- <link id="link21" bandwidth="155Bps"/>
- <link id="link22" bandwidth="622Bps"/>
- <link id="link23" bandwidth="622Bps"/>
- <link id="link24" bandwidth="155Bps"/>
- <link id="link25" bandwidth="10kBps"/>
- <link id="link26" bandwidth="2.5kBps"/>
- <link id="link27" bandwidth="155Bps"/>
- <link id="link28" bandwidth="2.5kBps"/>
- <link id="link29" bandwidth="1kBps"/>
- <link id="link30" bandwidth="10kBps"/>
- <link id="link31" bandwidth="10kBps"/>
- <link id="link32" bandwidth="155Bps"/>
- <link id="link33" bandwidth="1kBps"/>
- <link id="link34" bandwidth="155Bps"/>
- <link id="link35" bandwidth="155Bps"/>
- <link id="link36" bandwidth="155Bps"/>
- <link id="link37" bandwidth="155Bps"/>
- <link id="link38" bandwidth="155Bps"/>
- <link id="link39" bandwidth="155Bps"/>
- <link id="link40" bandwidth="1kBps"/>
- <link id="link41" bandwidth="1kBps"/>
- <link id="link42" bandwidth="10kBps"/>
- <link id="link43" bandwidth="2.5kBps"/>
- <link id="link44" bandwidth="10kBps"/>
- <link id="link45" bandwidth="155Bps"/>
- <link id="link46" bandwidth="155Bps"/>
- <link id="link47" bandwidth="2.5kBps"/>
- <link id="link48" bandwidth="155Bps"/>
- <link id="link49" bandwidth="155Bps"/>
- <link id="link50" bandwidth="10kBps"/>
- <link id="link51" bandwidth="155Bps"/>
- <link id="link52" bandwidth="10kBps"/>
- <link id="link53" bandwidth="155Bps"/>
- <link id="link54" bandwidth="155Bps"/>
- <link id="link55" bandwidth="155Bps"/>
- <link id="link56" bandwidth="155Bps"/>
- <link id="link57" bandwidth="2.5kBps"/>
- <link id="link58" bandwidth="1kBps"/>
- <link id="link59" bandwidth="10kBps"/>
- <link id="link60" bandwidth="2.5kBps"/>
- <link id="link61" bandwidth="2.5kBps"/>
- <link id="link62" bandwidth="155Bps"/>
- <link id="link63" bandwidth="10kBps"/>
- <link id="link64" bandwidth="10kBps"/>
- <link id="link65" bandwidth="1kBps"/>
- <link id="link66" bandwidth="155Bps"/>
- <link id="link67" bandwidth="10kBps"/>
- <link id="link68" bandwidth="10kBps"/>
- <link id="link69" bandwidth="1kBps"/>
- <link id="link70" bandwidth="10kBps"/>
- <link id="link71" bandwidth="1kBps"/>
- <link id="link72" bandwidth="10kBps"/>
- <link id="link73" bandwidth="622Bps"/>
- <link id="link74" bandwidth="1kBps"/>
- <link id="link75" bandwidth="1kBps"/>
- <link id="link76" bandwidth="1kBps"/>
- <link id="link77" bandwidth="10kBps"/>
- <link id="link78" bandwidth="155Bps"/>
- <link id="link79" bandwidth="155Bps"/>
- <link id="link80" bandwidth="155Bps"/>
- <link id="link81" bandwidth="155Bps"/>
- <link id="link82" bandwidth="155Bps"/>
- <link id="link83" bandwidth="155Bps"/>
- <link id="link84" bandwidth="155Bps"/>
- <link id="link85" bandwidth="155Bps"/>
- <link id="link86" bandwidth="155Bps"/>
- <link id="link87" bandwidth="155Bps"/>
- <link id="link88" bandwidth="155Bps"/>
- <link id="link89" bandwidth="2.5kBps"/>
- <link id="link90" bandwidth="10kBps"/>
- <link id="link91" bandwidth="3kBps"/>
- <link id="link92" bandwidth="3kBps"/>
- <link id="link93" bandwidth="10kBps"/>
- <link id="link94" bandwidth="10kBps"/>
- <link id="link95" bandwidth="622Bps"/>
- <link id="link96" bandwidth="622Bps"/>
- <link id="link97" bandwidth="1kBps"/>
- <link id="link98" bandwidth="3kBps"/>
- <link id="link99" bandwidth="3kBps"/>
- <link id="link100" bandwidth="10kBps"/>
- <link id="link101" bandwidth="2.5kBps"/>
- <link id="link102" bandwidth="155Bps"/>
- <link id="link103" bandwidth="10kBps"/>
- <link id="link104" bandwidth="10kBps"/>
- <link id="link105" bandwidth="155Bps"/>
- <link id="link106" bandwidth="155Bps"/>
- <link id="link107" bandwidth="10kBps"/>
- <link id="link108" bandwidth="10kBps"/>
- <link id="link109" bandwidth="10kBps"/>
- <link id="link110" bandwidth="155Bps"/>
- <link id="link111" bandwidth="10kBps"/>
- <link id="link112" bandwidth="10kBps"/>
- <link id="link113" bandwidth="3kBps"/>
- <link id="link114" bandwidth="155Bps"/>
- <link id="link115" bandwidth="3kBps"/>
- <link id="link116" bandwidth="10kBps"/>
- <link id="link117" bandwidth="622Bps"/>
- <link id="link118" bandwidth="155Bps"/>
- <link id="link119" bandwidth="33Bps"/>
- <link id="link120" bandwidth="1kBps"/>
- <link id="link121" bandwidth="622Bps"/>
- <link id="link122" bandwidth="155Bps"/>
- <link id="link123" bandwidth="155Bps"/>
- <link id="link124" bandwidth="155Bps"/>
- <link id="link125" bandwidth="155Bps"/>
- <link id="link126" bandwidth="622Bps"/>
-
- <route src="0" dst="2">
- <link_ctn id="link0"/>
- </route>
- <route src="0" dst="31">
- <link_ctn id="link1"/>
- </route>
- <route src="0" dst="74">
- <link_ctn id="link2"/>
- </route>
- <route src="1" dst="2">
- <link_ctn id="link3"/>
- </route>
- <route src="2" dst="2">
- <link_ctn id="link4"/>
- </route>
- <route src="2" dst="16">
- <link_ctn id="link5"/>
- </route>
- <route src="2" dst="57">
- <link_ctn id="link6"/>
- </route>
- <route src="3" dst="3">
- <link_ctn id="link7"/>
- </route>
- <route src="3" dst="4">
- <link_ctn id="link8"/>
- </route>
- <route src="3" dst="5">
- <link_ctn id="link9"/>
- </route>
- <route src="3" dst="6">
- <link_ctn id="link10"/>
- </route>
- <route src="3" dst="7">
- <link_ctn id="link11"/>
- </route>
- <route src="3" dst="8">
- <link_ctn id="link12"/>
- </route>
- <route src="3" dst="9">
- <link_ctn id="link13"/>
- </route>
- <route src="3" dst="10">
- <link_ctn id="link14"/>
- </route>
- <route src="3" dst="20">
- <link_ctn id="link15"/>
- </route>
- <route src="3" dst="61">
- <link_ctn id="link16"/>
- </route>
- <route src="11" dst="11">
- <link_ctn id="link17"/>
- </route>
- <route src="11" dst="12">
- <link_ctn id="link18"/>
- </route>
- <route src="11" dst="30">
- <link_ctn id="link19"/>
- </route>
- <route src="14" dst="14">
- <link_ctn id="link20"/>
- </route>
- <route src="14" dst="15">
- <link_ctn id="link21"/>
- </route>
- <route src="14" dst="20">
- <link_ctn id="link22"/>
- </route>
- <route src="14" dst="45">
- <link_ctn id="link23"/>
- </route>
- <route src="17" dst="17">
- <link_ctn id="link24"/>
- </route>
- <route src="17" dst="18">
- <link_ctn id="link25"/>
- </route>
- <route src="17" dst="20">
- <link_ctn id="link26"/>
- </route>
- <route src="19" dst="19">
- <link_ctn id="link27"/>
- </route>
- <route src="19" dst="33">
- <link_ctn id="link28"/>
- </route>
- <route src="21" dst="21">
- <link_ctn id="link29"/>
- </route>
- <route src="21" dst="30">
- <link_ctn id="link30"/>
- </route>
- <route src="21" dst="57">
- <link_ctn id="link31"/>
- </route>
- <route src="22" dst="22">
- <link_ctn id="link32"/>
- </route>
- <route src="22" dst="23">
- <link_ctn id="link33"/>
- </route>
- <route src="22" dst="24">
- <link_ctn id="link34"/>
- </route>
- <route src="22" dst="25">
- <link_ctn id="link35"/>
- </route>
- <route src="22" dst="26">
- <link_ctn id="link36"/>
- </route>
- <route src="22" dst="27">
- <link_ctn id="link37"/>
- </route>
- <route src="22" dst="28">
- <link_ctn id="link38"/>
- </route>
- <route src="22" dst="29">
- <link_ctn id="link39"/>
- </route>
- <route src="31" dst="31">
- <link_ctn id="link40"/>
- </route>
- <route src="31" dst="32">
- <link_ctn id="link41"/>
- </route>
- <route src="31" dst="45">
- <link_ctn id="link42"/>
- </route>
- <route src="31" dst="57">
- <link_ctn id="link43"/>
- </route>
- <route src="31" dst="73">
- <link_ctn id="link44"/>
- </route>
- <route src="34" dst="34">
- <link_ctn id="link45"/>
- </route>
- <route src="34" dst="35">
- <link_ctn id="link46"/>
- </route>
- <route src="34" dst="36">
- <link_ctn id="link47"/>
- </route>
- <route src="37" dst="37">
- <link_ctn id="link48"/>
- </route>
- <route src="37" dst="38">
- <link_ctn id="link49"/>
- </route>
- <route src="37" dst="39">
- <link_ctn id="link50"/>
- </route>
- <route src="40" dst="40">
- <link_ctn id="link51"/>
- </route>
- <route src="40" dst="45">
- <link_ctn id="link52"/>
- </route>
- <route src="41" dst="41">
- <link_ctn id="link53"/>
- </route>
- <route src="41" dst="42">
- <link_ctn id="link54"/>
- </route>
- <route src="41" dst="43">
- <link_ctn id="link55"/>
- </route>
- <route src="41" dst="44">
- <link_ctn id="link56"/>
- </route>
- <route src="46" dst="46">
- <link_ctn id="link57"/>
- </route>
- <route src="46" dst="56">
- <link_ctn id="link58"/>
- </route>
- <route src="46" dst="57">
- <link_ctn id="link59"/>
- </route>
- <route src="46" dst="75">
- <link_ctn id="link60"/>
- </route>
- <route src="46" dst="79">
- <link_ctn id="link61"/>
- </route>
- <route src="46" dst="95">
- <link_ctn id="link62"/>
- </route>
- <route src="47" dst="47">
- <link_ctn id="link63"/>
- </route>
- <route src="47" dst="54">
- <link_ctn id="link64"/>
- </route>
- <route src="48" dst="48">
- <link_ctn id="link65"/>
- </route>
- <route src="48" dst="49">
- <link_ctn id="link66"/>
- </route>
- <route src="48" dst="50">
- <link_ctn id="link67"/>
- </route>
- <route src="48" dst="54">
- <link_ctn id="link68"/>
- </route>
- <route src="51" dst="51">
- <link_ctn id="link69"/>
- </route>
- <route src="51" dst="52">
- <link_ctn id="link70"/>
- </route>
- <route src="53" dst="53">
- <link_ctn id="link71"/>
- </route>
- <route src="53" dst="54">
- <link_ctn id="link72"/>
- </route>
- <route src="55" dst="55">
- <link_ctn id="link73"/>
- </route>
- <route src="58" dst="58">
- <link_ctn id="link74"/>
- </route>
- <route src="58" dst="59">
- <link_ctn id="link75"/>
- </route>
- <route src="58" dst="60">
- <link_ctn id="link76"/>
- </route>
- <route src="58" dst="61">
- <link_ctn id="link77"/>
- </route>
- <route src="62" dst="62">
- <link_ctn id="link78"/>
- </route>
- <route src="62" dst="65">
- <link_ctn id="link79"/>
- </route>
- <route src="62" dst="66">
- <link_ctn id="link80"/>
- </route>
- <route src="62" dst="67">
- <link_ctn id="link81"/>
- </route>
- <route src="62" dst="68">
- <link_ctn id="link82"/>
- </route>
- <route src="62" dst="69">
- <link_ctn id="link83"/>
- </route>
- <route src="62" dst="70">
- <link_ctn id="link84"/>
- </route>
- <route src="62" dst="71">
- <link_ctn id="link85"/>
- </route>
- <route src="62" dst="72">
- <link_ctn id="link86"/>
- </route>
- <route src="63" dst="63">
- <link_ctn id="link87"/>
- </route>
- <route src="63" dst="64">
- <link_ctn id="link88"/>
- </route>
- <route src="74" dst="74">
- <link_ctn id="link89"/>
- </route>
- <route src="74" dst="75">
- <link_ctn id="link90"/>
- </route>
- <route src="74" dst="80">
- <link_ctn id="link91"/>
- </route>
- <route src="74" dst="83">
- <link_ctn id="link92"/>
- </route>
- <route src="74" dst="89">
- <link_ctn id="link93"/>
- </route>
- <route src="74" dst="90">
- <link_ctn id="link94"/>
- </route>
- <route src="74" dst="95">
- <link_ctn id="link95"/>
- </route>
- <route src="74" dst="99">
- <link_ctn id="link96"/>
- </route>
- <route src="76" dst="76">
- <link_ctn id="link97"/>
- </route>
- <route src="76" dst="77">
- <link_ctn id="link98"/>
- </route>
- <route src="76" dst="80">
- <link_ctn id="link99"/>
- </route>
- <route src="76" dst="90">
- <link_ctn id="link100"/>
- </route>
- <route src="76" dst="93">
- <link_ctn id="link101"/>
- </route>
- <route src="78" dst="78">
- <link_ctn id="link102"/>
- </route>
- <route src="78" dst="79">
- <link_ctn id="link103"/>
- </route>
- <route src="80" dst="80">
- <link_ctn id="link104"/>
- </route>
- <route src="81" dst="81">
- <link_ctn id="link105"/>
- </route>
- <route src="81" dst="82">
- <link_ctn id="link106"/>
- </route>
- <route src="81" dst="83">
- <link_ctn id="link107"/>
- </route>
- <route src="84" dst="84">
- <link_ctn id="link108"/>
- </route>
- <route src="84" dst="86">
- <link_ctn id="link109"/>
- </route>
- <route src="85" dst="85">
- <link_ctn id="link110"/>
- </route>
- <route src="85" dst="86">
- <link_ctn id="link111"/>
- </route>
- <route src="87" dst="87">
- <link_ctn id="link112"/>
- </route>
- <route src="87" dst="89">
- <link_ctn id="link113"/>
- </route>
- <route src="88" dst="88">
- <link_ctn id="link114"/>
- </route>
- <route src="88" dst="89">
- <link_ctn id="link115"/>
- </route>
- <route src="90" dst="90">
- <link_ctn id="link116"/>
- </route>
- <route src="90" dst="91">
- <link_ctn id="link117"/>
- </route>
- <route src="90" dst="95">
- <link_ctn id="link118"/>
- </route>
- <route src="91" dst="93">
- <link_ctn id="link119"/>
- </route>
- <route src="92" dst="92">
- <link_ctn id="link120"/>
- </route>
- <route src="92" dst="93">
- <link_ctn id="link121"/>
- </route>
- <route src="94" dst="94">
- <link_ctn id="link122"/>
- </route>
- <route src="94" dst="95">
- <link_ctn id="link123"/>
- </route>
- <route src="96" dst="96">
- <link_ctn id="link124"/>
- </route>
- <route src="96" dst="97">
- <link_ctn id="link125"/>
- </route>
- <route src="96" dst="98">
- <link_ctn id="link126"/>
- </route>
-</AS>
-</platform>
#!/usr/bin/env perl
-# Copyright (c) 2011, 2014. The SimGrid Team.
+# Copyright (c) 2011, 2014, 2016. The SimGrid Team.
# All rights reserved.
# This program is free software; you can redistribute it and/or modify it
open FILE, $conf_file or die "Unable to open $conf_file";
+print "<!-- This platform was automatically converted from the OptorSim platform.\n";
+print "\n";
+print " OptorSim files only describes information of the cluster interconnexion.\n";
+print " In a sense, it reflects the topology of a National Research and Education\n";
+print " Network (NREN), but not of a full-fledged computational platform.\n";
+print " The caracteristics of each cluster have been artificially added.\n";
+print "\n";
+print " We hope that you find it useful anyway. If you know how to complete\n";
+print " this information with data on the cluster configurations, please\n";
+print " drop us a mail so that we can add this information. -->\n\n";
+
print "<?xml version='1.0'?>\n";
print "<!DOCTYPE platform SYSTEM \"http://simgrid.gforge.inria.fr/simgrid.dtd\">\n";
print "<platform version=\"3\">\n";
-print "<AS id=\"AS0\" routing=\"Floyd\">\n";
+print "<AS id=\"AS0\" routing=\"Floyd\">\n";
my $line;
my @tokens;
my @routes_router = ();
my @routes_cluster = ();
my $nb_host;
-while(defined($line=<FILE>))
-{
-
-if($line =~ /^#(.*)\)(.*)$/)
-{
+while(defined($line=<FILE>)){
+ if($line =~ /^#(.*)\)(.*)$/)
+ {
print "<!--$1 $2-->\n";
push @list_of_name, $2;
-}
-elsif($line =~ /^([0-9]*) ([0-9]*) ([0-9]*) (.*)$/)
-{
+ }
+ elsif($line =~ /^([0-9]*) ([0-9]*) ([0-9]*) (.*)$/)
+ {
if($1 == "0"){
- push @is_router, 1;
- if(@list_of_name){
- push @routers, "\t\t<router id=\"$list_of_name[$src]\"/>\n";
- }
- else{
- push @routers, "\t\t<router id=\"router$src\"/>\n";
- }
+ push @is_router, 1;
+ if(@list_of_name){
+ push @routers, " <router id=\"$list_of_name[$src]\"/>\n";
+ }
+ else{
+ push @routers, " <router id=\"router$src\"/>\n";
+ }
}
else{
- push @is_router, 0;
- $nb_host = $1;
- if(@list_of_name){
- push @hosts, "\t<cluster id=\"$list_of_name[$src]\" prefix=\"$list_of_name[$src]-\" suffix=\"\"\n";
- push @hosts, "\t radical=\"1-$nb_host\" power=\"1000000000\" bw=\"125000000\" lat=\"5E-5\"\n";
- push @hosts, "\t router_id=\"$list_of_name[$src]-router\"/>\n";
- }
- else{
- push @hosts, "\t<cluster id=\"cluster$src\" prefix=\"$list_of_name[$src]-\" suffix=\"\"\n";
- push @hosts, "\t radical=\"1-$nb_host\" power=\"1000000000\" bw=\"125000000\" lat=\"5E-5\"\n";
- push @hosts, "\t router_id=\"cluster$src-router\"/>\n";
- }
+ push @is_router, 0;
+ $nb_host = $1;
+ if(@list_of_name){
+ push @hosts, " <cluster id=\"$list_of_name[$src]\" prefix=\"$list_of_name[$src]-\" suffix=\"\"\n";
+ push @hosts, " radical=\"1-$nb_host\" power=\"1000000000\" bw=\"125000000\" lat=\"5E-5\"\n";
+ push @hosts, " router_id=\"$list_of_name[$src]-router\"/>\n";
+ }
+ else{
+ push @hosts, " <cluster id=\"cluster$src\" prefix=\"$src-\" suffix=\"\"\n";
+ push @hosts, " radical=\"1-$nb_host\" power=\"1000000000\" bw=\"125000000\" lat=\"5E-5\"\n";
+ push @hosts, " router_id=\"cluster$src-router\"/>\n";
+ }
}
my $table = $4;
@tokens = split(/ /,$table);
foreach $token (@tokens) {
- if($src >= $dst){
- if($token != "0") #if there is a link between src and dst
- {
- #Create a link
- if($1 == "0"){
- push @links_router, "\t\t<link id=\"link$num_link\" bandwidth=\"$token\"/>\n";
- }
- else{
- push @links, "\t<link id=\"link$num_link\" bandwidth=\"$token\"/>\n";
- }
-
- #Create the route between router and router
- if($is_router[$src] && $is_router[$dst])
- {
- if(@list_of_name){
- push @routes_router, "\t\t<route src=\"$list_of_name[$src]\" dst=\"$list_of_name[$dst]\">\n";
- }
- else{
- push @routes_router, "\t\t<route src=\"router$src\" dst=\"router$dst\">\n";
- }
- push @routes_router, "\t\t\t<link_ctn id=\"link$num_link\"/>\n";
- push @routes_router, "\t\t</route>\n";
- }
-
- #Create the route between cluster and cluster
- elsif(!$is_router[$src] && !$is_router[$dst])
- {
- if(@list_of_name){
- push @routes_cluster, "\t\t<ASroute src=\"$list_of_name[$src]\" dst=\"$list_of_name[$dst]\"\n";
- push @routes_cluster, "\t\t gw_src=\"$list_of_name[$src]-router\" gw_dst=\"$list_of_name[$dst]-router\">\n";
- }
- else{
- push @routes_cluster, "\t\t<ASroute src=\"cluster$src\" dst=\"cluster$dst\"\n";
- push @routes_cluster, "\t\t gw_src=\"cluster$src-router\" dst=\"cluster$dst-router\">\n";
- }
- push @routes_cluster, "\t\t\t<link_ctn id=\"link$num_link\"/>\n";
- push @routes_cluster, "\t\t</ASroute>\n";
- }
- else
- {
- push @routes, "\t<ASroute ";
- if(@list_of_name){
- if($is_router[$src]) #router
- {push @routes, "src=\"AS_intern\" gw_src=\"$list_of_name[$src]\"\n";}
- else #cluster
- {push @routes, "src=\"$list_of_name[$src]\" gw_src=\"$list_of_name[$src]-router\"\n";}
-
-
- if($is_router[$dst]) #router
- {push @routes, "\t\tdst=\"AS_intern\" gw_dst=\"$list_of_name[$dst]\">\n";}
- else #cluster
- {push @routes, "\t\tdst=\"$list_of_name[$dst]\" gw_dst=\"$list_of_name[$dst]-router\">\n";}
- }
- else{
- if($is_router[$src]) #router
- {push @routes, "src=\"AS_intern\" gw_src=\"router$src\"\n";}
- else #cluster
- {push @routes, "src=\"cluster$src\" gw_src=\"cluster$src-router\"\n";}
-
-
- if($is_router[$dst]) #router
- {push @routes, "\t\tdst=\"AS_intern\" gw_dst=\"router$dst\">\n";}
- else #cluster
- {push @routes, "\t\tdst=\"cluster$dst\" gw_dst=\"cluster$dst-router\">\n";}
- }
- push @routes, "\t\t<link_ctn id=\"link$num_link\"/>\n";
- push @routes, "\t</ASroute>\n";
-
- }
-
- $num_link++;
+ if($src >= $dst){
+ if($token != "0") #if there is a link between src and dst
+ {
+ #Create a link
+ if($1 == "0"){
+ push @links_router, " <link id=\"link$num_link\" bandwidth=\"$token\"/>\n";
+ }
+ else{
+ push @links, " <link id=\"link$num_link\" bandwidth=\"$token\"/>\n";
+ }
+
+ #Create the route between router and router
+ if($is_router[$src] && $is_router[$dst])
+ {
+ if(@list_of_name){
+ push @routes_router, " <route src=\"$list_of_name[$src]\" dst=\"$list_of_name[$dst]\">";
+ }
+ else{
+ push @routes_router, " <route src=\"router$src\" dst=\"router$dst\">";
+ }
+ push @routes_router, " <link_ctn id=\"link$num_link\"/>";
+ push @routes_router, " </route>\n";
+ }
+
+ #Create the route between cluster and cluster
+ elsif(!$is_router[$src] && !$is_router[$dst])
+ {
+ if(@list_of_name){
+ push @routes_cluster, " <ASroute src=\"$list_of_name[$src]\" dst=\"$list_of_name[$dst]\"";
+ push @routes_cluster, " gw_src=\"$list_of_name[$src]-router\" gw_dst=\"$list_of_name[$dst]-router\">\n";
+ }
+ else{
+ push @routes_cluster, " <ASroute src=\"cluster$src\" dst=\"cluster$dst\"";
+ push @routes_cluster, " gw_src=\"cluster$src-router\" dst=\"cluster$dst-router\">\n";
+ }
+ push @routes_cluster, " <link_ctn id=\"link$num_link\"/>\n";
+ push @routes_cluster, " </ASroute>\n";
+ }
+ else
+ {
+ push @routes, " <ASroute ";
+ if(@list_of_name){
+ if($is_router[$src]) #router
+ {push @routes, "src=\"AS_intern\" gw_src=\"$list_of_name[$src]\" ";}
+ else #cluster
+ {push @routes, "src=\"$list_of_name[$src]\" gw_src=\"$list_of_name[$src]-router\" ";}
+
+
+ if($is_router[$dst]) #router
+ {push @routes, "dst=\"AS_intern\" gw_dst=\"$list_of_name[$dst]\">\n";}
+ else #cluster
+ {push @routes, "dst=\"$list_of_name[$dst]\" gw_dst=\"$list_of_name[$dst]-router\">\n";}
}
+ else{
+ if($is_router[$src]) #router
+ {push @routes, "src=\"AS_intern\" gw_src=\"router$src\" ";}
+ else #cluster
+ {push @routes, "src=\"cluster$src\" gw_src=\"cluster$src-router\" ";}
+
+
+ if($is_router[$dst]) #router
+ {push @routes, "dst=\"AS_intern\" gw_dst=\"router$dst\">\n";}
+ else #cluster
+ {push @routes, "dst=\"cluster$dst\" gw_dst=\"cluster$dst-router\">\n";}
+ }
+ push @routes, " <link_ctn id=\"link$num_link\"/>\n";
+ push @routes, " </ASroute>\n";
+
+ }
+
+ $num_link++;
}
- $dst++;
+ }
+ $dst++;
}
$src++;
$dst = 0;
-}
-else
-{
-die;
-}
-
-
+ }
+ else
+ {
+ die;
+ }
}
close(FILE);
-print "\t<AS id=\"AS_intern\" routing=\"Floyd\">\n";
+print " <AS id=\"AS_intern\" routing=\"Floyd\">\n";
print @routers;
print @links_router;
print @routes_router;
-print "\t</AS>\n";
+print " </AS>\n";
print "\n";
print @hosts;
print @routes_cluster;
print @links;
print "\n";
print @routes;
-print "\n";
-
print "</AS>\n";
print "</platform>";
-
print " \n";
> [0.000000] [sd_daxparse/WARNING] the task 5 is in a cycle
> [0.000000] [sd_daxparse/WARNING] the task 6 is in a cycle
> [0.000000] [sd_dotparse/ERROR] The DOT described in dag_with_cycle.dot is not a DAG. It contains a cycle.
-> [0.000000] [test/CRITICAL] No dot loaded. Do you have a cycle in your graph?
\ No newline at end of file
+> [0.000000] [test/CRITICAL] No dot loaded. Do you have a cycle in your graph?
+
+$ $SG_TEST_EXENV ./ptg_test --log=no_loc ${srcdir:=.}/../2clusters.xml ${srcdir:=.}/ptg.dot
+> [0.000000] [xbt_cfg/INFO] Switching to the L07 model to handle parallel tasks.
+> [0.000000] [test/INFO] ------------------- Display all tasks of the loaded DAG ---------------------------
+> [0.000000] [sd_task/INFO] Displaying task root
+> [0.000000] [sd_task/INFO] - state: schedulable not runnable
+> [0.000000] [sd_task/INFO] - kind: parallel computation following Amdahl's law
+> [0.000000] [sd_task/INFO] - amount: 0
+> [0.000000] [sd_task/INFO] - alpha: 0.00
+> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 0
+> [0.000000] [sd_task/INFO] - post-dependencies:
+> [0.000000] [sd_task/INFO] root->c1
+> [0.000000] [sd_task/INFO] root->c2
+> [0.000000] [sd_task/INFO] Displaying task c1
+> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
+> [0.000000] [sd_task/INFO] - kind: parallel computation following Amdahl's law
+> [0.000000] [sd_task/INFO] - amount: 1000000000
+> [0.000000] [sd_task/INFO] - alpha: 0.20
+> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
+> [0.000000] [sd_task/INFO] - pre-dependencies:
+> [0.000000] [sd_task/INFO] root->c1
+> [0.000000] [sd_task/INFO] - post-dependencies:
+> [0.000000] [sd_task/INFO] c1->c3
+> [0.000000] [sd_task/INFO] Displaying task c2
+> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
+> [0.000000] [sd_task/INFO] - kind: parallel computation following Amdahl's law
+> [0.000000] [sd_task/INFO] - amount: 5000000000
+> [0.000000] [sd_task/INFO] - alpha: 0.50
+> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
+> [0.000000] [sd_task/INFO] - pre-dependencies:
+> [0.000000] [sd_task/INFO] root->c2
+> [0.000000] [sd_task/INFO] - post-dependencies:
+> [0.000000] [sd_task/INFO] c3
+> [0.000000] [sd_task/INFO] Displaying task c3
+> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
+> [0.000000] [sd_task/INFO] - kind: parallel computation following Amdahl's law
+> [0.000000] [sd_task/INFO] - amount: 2000000000
+> [0.000000] [sd_task/INFO] - alpha: 0.00
+> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 2
+> [0.000000] [sd_task/INFO] - pre-dependencies:
+> [0.000000] [sd_task/INFO] c1->c3
+> [0.000000] [sd_task/INFO] c2
+> [0.000000] [sd_task/INFO] - post-dependencies:
+> [0.000000] [sd_task/INFO] c3->end
+> [0.000000] [sd_task/INFO] Displaying task c1->c3
+> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
+> [0.000000] [sd_task/INFO] - kind: MxN data redistribution assuming 1D block distribution
+> [0.000000] [sd_task/INFO] - amount: 500000000
+> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
+> [0.000000] [sd_task/INFO] - pre-dependencies:
+> [0.000000] [sd_task/INFO] c1
+> [0.000000] [sd_task/INFO] - post-dependencies:
+> [0.000000] [sd_task/INFO] c3
+> [0.000000] [sd_task/INFO] Displaying task c3->end
+> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
+> [0.000000] [sd_task/INFO] - kind: MxN data redistribution assuming 1D block distribution
+> [0.000000] [sd_task/INFO] - amount: 200000000
+> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
+> [0.000000] [sd_task/INFO] - pre-dependencies:
+> [0.000000] [sd_task/INFO] c3
+> [0.000000] [sd_task/INFO] - post-dependencies:
+> [0.000000] [sd_task/INFO] end
+> [0.000000] [sd_task/INFO] Displaying task root->c1
+> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
+> [0.000000] [sd_task/INFO] - kind: MxN data redistribution assuming 1D block distribution
+> [0.000000] [sd_task/INFO] - amount: 200000000
+> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
+> [0.000000] [sd_task/INFO] - pre-dependencies:
+> [0.000000] [sd_task/INFO] root
+> [0.000000] [sd_task/INFO] - post-dependencies:
+> [0.000000] [sd_task/INFO] c1
+> [0.000000] [sd_task/INFO] Displaying task root->c2
+> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
+> [0.000000] [sd_task/INFO] - kind: MxN data redistribution assuming 1D block distribution
+> [0.000000] [sd_task/INFO] - amount: 100000000
+> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
+> [0.000000] [sd_task/INFO] - pre-dependencies:
+> [0.000000] [sd_task/INFO] root
+> [0.000000] [sd_task/INFO] - post-dependencies:
+> [0.000000] [sd_task/INFO] c2
+> [0.000000] [sd_task/INFO] Displaying task end
+> [0.000000] [sd_task/INFO] - state: not scheduled not runnable
+> [0.000000] [sd_task/INFO] - kind: parallel computation following Amdahl's law
+> [0.000000] [sd_task/INFO] - amount: 0
+> [0.000000] [sd_task/INFO] - alpha: 0.00
+> [0.000000] [sd_task/INFO] - Dependencies to satisfy: 1
+> [0.000000] [sd_task/INFO] - pre-dependencies:
+> [0.000000] [sd_task/INFO] c3->end
+> [0.000000] [test/INFO] ------------------- Schedule tasks ---------------------------
+> [0.000000] [test/INFO] ------------------- Run the schedule ---------------------------
+> [3.290271] [test/INFO] Makespan: 3.290271
XBT_PUBLIC(void) SMPI_init(void);
XBT_PUBLIC(void) SMPI_finalize(void);
-
-
+/* Manual global privatization fallback */
+XBT_PUBLIC(void) smpi_register_static(void* arg, void_f_pvoid_t free_fn);
+XBT_PUBLIC(void) smpi_free_static(void);
+
+#define SMPI_VARINIT_GLOBAL(name,type) \
+type *name = NULL; \
+static void __attribute__((constructor)) __preinit_##name(void) { \
+ if(!name) \
+ name = (type*)calloc(smpi_global_size(), sizeof(type)); \
+} \
+static void __attribute__((destructor)) __postfini_##name(void) { \
+ free(name); \
+ name = NULL; \
+}
+
+#define SMPI_VARINIT_GLOBAL_AND_SET(name,type,expr) \
+type *name = NULL; \
+static void __attribute__((constructor)) __preinit_##name(void) { \
+ size_t size = smpi_global_size(); \
+ size_t i; \
+ type value = expr; \
+ if(!name) { \
+ name = (type*)malloc(size * sizeof(type)); \
+ for(i = 0; i < size; i++) { \
+ name[i] = value; \
+ } \
+ } \
+} \
+static void __attribute__((destructor)) __postfini_##name(void) { \
+ free(name); \
+ name = NULL; \
+}
+
+#define SMPI_VARGET_GLOBAL(name) name[smpi_process_index()]
+
+#define SMPI_VARINIT_STATIC(name,type) \
+static type *name = NULL; \
+if(!name) { \
+ name = (type*)calloc(smpi_global_size(), sizeof(type)); \
+ smpi_register_static(name, xbt_free_f); \
+}
+
+#define SMPI_VARINIT_STATIC_AND_SET(name,type,expr) \
+static type *name = NULL; \
+if(!name) { \
+ size_t size = smpi_global_size(); \
+ size_t i; \
+ type value = expr; \
+ name = (type*)malloc(size * sizeof(type)); \
+ for(i = 0; i < size; i++) { \
+ name[i] = value; \
+ } \
+ smpi_register_static(name, xbt_free_f); \
+}
+
+#define SMPI_VARGET_STATIC(name) name[smpi_process_index()]
SG_END_DECL()
#endif
+++ /dev/null
-/* Copyright (c) 2011-2014. The SimGrid Team.
- * All rights reserved. */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#ifndef SMPI_COCCI_H
-#define SMPI_COCCI_H
-
-#include <xbt/misc.h>
-
-/* Macros used by coccinelle-generated code */
-
-#define SMPI_VARINIT_GLOBAL(name,type) \
-type *name = NULL; \
-static void __attribute__((constructor)) __preinit_##name(void) { \
- if(!name) \
- name = (type*)calloc(smpi_global_size(), sizeof(type)); \
-} \
-static void __attribute__((destructor)) __postfini_##name(void) { \
- free(name); \
- name = NULL; \
-}
-
-#define SMPI_VARINIT_GLOBAL_AND_SET(name,type,expr) \
-type *name = NULL; \
-static void __attribute__((constructor)) __preinit_##name(void) { \
- size_t size = smpi_global_size(); \
- size_t i; \
- type value = expr; \
- if(!name) { \
- name = (type*)malloc(size * sizeof(type)); \
- for(i = 0; i < size; i++) { \
- name[i] = value; \
- } \
- } \
-} \
-static void __attribute__((destructor)) __postfini_##name(void) { \
- free(name); \
- name = NULL; \
-}
-
-#define SMPI_VARGET_GLOBAL(name) name[smpi_process_index()]
-
-/* The following handle local static variables */
-/** @brief Make sure that the passed pointer is freed on process exit.
- *
- * This function is rather internal, mainly used for the
- * privatization of global variables through coccinelle.
- */
-XBT_PUBLIC(void) smpi_register_static(void* arg, void_f_pvoid_t free_fn);
-
-XBT_PUBLIC(void) smpi_free_static(void);
-
-#define SMPI_VARINIT_STATIC(name,type) \
-static type *name = NULL; \
-if(!name) { \
- name = (type*)calloc(smpi_global_size(), sizeof(type)); \
- smpi_register_static(name, xbt_free_f); \
-}
-
-#define SMPI_VARINIT_STATIC_AND_SET(name,type,expr) \
-static type *name = NULL; \
-if(!name) { \
- size_t size = smpi_global_size(); \
- size_t i; \
- type value = expr; \
- name = (type*)malloc(size * sizeof(type)); \
- for(i = 0; i < size; i++) { \
- name[i] = value; \
- } \
- smpi_register_static(name, xbt_free_f); \
-}
-
-#define SMPI_VARGET_STATIC(name) name[smpi_process_index()]
-
-#endif
".text\n"
".globl _raw_makecontext\n"
"_raw_makecontext:\n"
-#elif defined(_WIN32)
+#elif defined(_XBT_WIN32)
".text\n"
".globl raw_makecontext\n"
"raw_makecontext:\n"
".text\n"
".globl _raw_swapcontext\n"
"_raw_swapcontext:\n"
-#elif defined(_WIN32)
+#elif defined(_XBT_WIN32)
".text\n"
".globl raw_swapcontext\n"
"raw_swapcontext:\n"
);
#elif PROCESSOR_i686
__asm__ (
-#if defined(APPLE) || defined(_WIN32)
+#if defined(APPLE) || defined(_XBT_WIN32)
".text\n"
".globl _raw_makecontext\n"
"_raw_makecontext:\n"
);
__asm__ (
-#if defined(APPLE) || defined(_WIN32)
+#if defined(APPLE) || defined(_XBT_WIN32)
".text\n"
".globl _raw_swapcontext\n"
"_raw_swapcontext:\n"
#include "simgrid/modelchecker.h"
-#ifdef _WIN32
+#ifdef _XBT_WIN32
#include <windows.h>
#include <malloc.h>
#else
+++ /dev/null
-#!/usr/bin/env perl
-
-# Copyright (c) 2011, 2014. The SimGrid Team.
-# All rights reserved.
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the license (GNU LGPL) which comes with this package.
-
-# Add include for mandatory header file
-print "#include <smpi_cocci.h>\n";
-
-# FIXME: here we make the assumption that people don't do things like put
-# multiple statements on the same line after a declaration, but separated by
-# semicolons. It's a reasonable assumption for the time being, but technically
-# it could cause problems for some code.
-
-OUTER: while ($line = <STDIN>) {
- if ($line =~ /SMPI_VARINIT/) {
- do {
- chomp $line; # kill carriage return
- $line =~ s/\s+/ /g; # remove excessive whitespace added by spatch
- while ($line =~ s/(SMPI_VARINIT[A-Z0-9_]*?\(.*?\))//) {
- print "$1\n";
- }
-
- # if varinit continues on to next line
- if ($line =~ /SMPI_VARINIT/) {
- # should only happen for bad code...
- if (!($nextline = <STDIN>)) {
- last OUTER;
- }
- $line .= $nextline;
-
- }
- } while ($line =~ /SMPI_VARINIT/);
- } else {
- print $line;
- }
-}
+++ /dev/null
-
-@r@
-/* Matching a declaration, ie rewriting site candidate
- Disqualify the candidate
- ----------------- */
-type T;
-position p1;
-identifier id;
-@@
-
-T id@p1;
-
-
-
-
-@funcdecl@
-# Matching a /function/ declaration.
-# Disqualify the candidate
-#-----------------
-type T;
-position r.p1;
-identifier id;
-@@
- T id@p1(...) {...}
-
-
-
-
-@funcproto@
-# Matching a function prototype w/o body.
-# Disqualify the candidate
-#-----------------
-type T;
-position r.p1;
-identifier id;
-@@
- T id@p1(...);
-
-@localdeclaration@
-# Matching a declaration at the top level of a function.
-# Disqualify the candidate
-#-----------------
-type T1,T2;
-position r.p1;
-identifier id1,id2;
-@@
-
-T1 id1(...) {
- ...
- T2 id2@p1;
- ...
-}
-
-@localinnerdeclaration@
-# The next rule is there to make sure that we are not speaking of a
-# local variable declared in an inner block. I don't like it at all:
-# It is redundent and gives false negative on the foreach macros that
-# get often declared in the code. Example in examples/gras/spawn.c:
-#
-# int server() {
-# ...
-# xbt_dynar_foreach(chunk->primes,cursor,data) {
-# char number[100];
-# ...
-# }
-# ...
-# }
-#
-# Do I really need to complicate this rule further to add every macro
-# that we use in our C, or can it be merged with the previous one by
-# saying something like "in a function, at whatever level of nesting"?
-
-type T1,T2;
-position r.p1;
-identifier id1,id2;
-expression e1,e2,e3;
-@@
-
-T1 id1(...) {
- ...
-(
- for (e1;e2;e3) { ... T2 id2@p1; ... }
-|
- for (;e2;e3) { ... T2 id2@p1; ... }
-|
- for (e1;;e3) { ... T2 id2@p1; ... }
-|
- for (e1;e2;) { ... T2 id2@p1; ... }
-|
- for (e1;;) { ... T2 id2@p1; ... }
-|
- for (;e2;) { ... T2 id2@p1; ... }
-|
- for (;;e3) { ... T2 id2@p1; ... }
-|
- for (;;) { ... T2 id2@p1; ... }
-|
- while (e1) { ... T2 id2@p1; ... }
-|
- do { ... T2 id2@p1; ... } while (e1);
-)
- ...
-}
-
-
-
-@script:python depends on r
- && !funcdecl
- && !funcproto
- && !localdeclaration
- && !localinnerdeclaration@
-
-# This rule is only a debugging rule, to print the sites where the
-# change must be applied
-
-p1 << r.p1;
-T << r.T;
-id << r.id;
-@@
-
-c1 = cocci.combine(id,p1)
-print "1. symbol %s of type \"%s\" at %s:%s" % (id,T,c1.location.line,c1.location.column)
+++ /dev/null
-#!/bin/bash
-
-# Copyright (c) 2011, 2014. The SimGrid Team.
-# All rights reserved.
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the license (GNU LGPL) which comes with this package.
-
-INFILE="$1"
-OUTFILE="$2"
-SPFILE="replace_globals.cocci"
-TMPFILE=`mktemp ${OUTFILE}.XXXX`
-
-trap "rm -f ${TMPFILE}" EXIT
-spatch -sp_file ${SPFILE} ${INFILE} -o ${TMPFILE} >/dev/null 2>/dev/null
-./fixsrc.pl < ${TMPFILE} > ${OUTFILE}
#include "simgrid/simix.h"
#include "src/include/smpi/smpi_interface.h"
#include "smpi/smpi.h"
-#include "smpi/smpi_cocci.h"
#include "src/instr/instr_private.h"
SG_BEGIN_DECL()
+++ /dev/null
-// FIXME: seems like cocci has problems manipulating the declarations, at least
-// when there is more than one on the same line. We already need perl to split
-// up the declarations after the fact, is there another tool we can use to patch
-// up and match the declarations? In that case we could consider dropping cocci,
-// or just using it to alter global variable accesses.
-//
-// FIXME: problems
-// - array declarations not properly matched...can fix, but then can't have
-// multiple declarations on one line
-// - does not match array initializers
-// - probably won't fix structure declarations with initialization either
-
-// Function prototype looks like variable dec, but has parentheses
-@funcproto@
-type T;
-identifier func;
-position p;
-@@
-T@p func(...);
-
-// define a local variable declaration as one at some level of nesting
-@localvardecl@
-type T;
-identifier var;
-position p;
-expression E;
-@@
-<...
-( // default case
-T@p
-var
-;
-| // variable has initializer
-T@p
-var = E
-;
-)
-...>
-
-// define a global variable declaration as one that is neither a function
-// prototype nor a local variable declaration
-@globalvardecl@
-type T;
-identifier var;
-position p != { funcproto.p, localvardecl.p };
-expression value;
-// expression size;
-@@
-( // default case
-T@p
-- var
-+ *var = SMPI_VARINIT_GLOBAL(var, T)
-;
-| // variable has initializer (not a struct or array)
-T@p
-- var = value
-+ *var = SMPI_VARINIT_GLOBAL_AND_SET(var, T, value)
-;
-//| // array of specified size
-//T@p // FIXME: matches, but complains if more than one decl on a line...
-//- var[size]
-//+ *var[size] = SMPI_VARINIT_GLOBAL_ARRAY(T, size)
-//;
-//| // array of specified size with initializer
-//T@p // FIXME: how to match initializer?
-//- var[size] = { ... }
-//+ *var[] = SMPI_VARINIT_GLOBAL_ARRAY_AND_SET(T, size, { ... })
-//;
-//| // array without specified size, but with initializer
-//T@p // FIXME: how to match initializer? how to figure out size?
-//- var[] = { ... }
-//+ *var[] = SMPI_VARINIT_GLOBAL_ARRAY_AND_SET(T, size, { ... }) // size = ?
-//;
-//| struct with initializer?
-)
-
-// rewrite access to global variables based on name, but avoid the declaration
-// and local variables that might have the same name
-@rewriteglobalaccess@
-type T;
-local idexpression lvar;
-identifier globalvardecl.var;
-@@
-<...
-( // local variable
-lvar
-| // rewrite access
-+SMPI_VARGET_GLOBAL(
-var
-+)
-)
-...>
-
-// define a local static variable declaration as one at some level of nesting
-// starting with the word static (exceptions?)
-@staticvardecl@
-type T;
-identifier func, var;
-expression value;
-@@
-func(...) {
-...
-( // default case
-static T
-- var
-+ *var = SMPI_VARINIT_STATIC(T, var)
-;
-| // variable has initializer (not a struct or array)
-T
-- var = value
-+ *var = SMPI_VARINIT_STATIC_AND_SET(var, T, value)
-;
-)
-...
-}
-
-//
-@rewritestaticaccess@
-type T;
-identifier staticvardecl.func, staticvardecl.var;
-@@
-func(...) {
-<...
-( // declaration
-T
-var
-;
-| // rewrite access
-+SMPI_VARGET_STATIC(
-var
-+)
-)
-...>
-}
+++ /dev/null
-// FIXME: why can't I just define a static local vardecl the same way as a
-// normal local vardecl?
-
-// Function prototype looks like variable dec, but has parentheses
-@funcproto@
-type T;
-identifier func;
-position p;
-@@
-T@p func(...);
-
-// Define a local variable as one whose declaration is encased in brackets
-@localvardecl@
-type T;
-identifier var;
-position p;
-expression E;
-@@
-{
-<...
-(
-T@p
-var
-;
-|
-T@p
-var = E
-;
-)
-...>
-}
-
-// global variable is one whose declaration is neither local nor a function
-// prototype
-@globalvardecl@
-type T;
-identifier var;
-position p != { localvardecl.p, funcproto.p };
-expression value;
-// expression size;
-@@
-(
-T@p var;
-|
-T@p var = value;
-)
-
-// local static decl is a nonglobal static decl...
-@localstaticvardecl@
-type T;
-identifier var;
-position p != globalvardecl.p;
-expression value;
-@@
-(
-static T@p
-- var
-+ *var = SMPI_VARINIT_STATIC(var, T)
-;
-|
-static T@p
-- var = value
-+ *var = SMPI_VARINIT_STATIC_AND_SET(var, T, value)
-;
-)
-
-// FIXME: add varaccess...
static void xbt_preinit(void) {
unsigned int seed = 2147483647;
-#ifndef WIN32
+#ifndef _XBT_WIN32
xbt_pagesize = sysconf(_SC_PAGESIZE);
#else
SYSTEM_INFO si;
xbt_dict_preinit();
srand(seed);
-#ifndef _WIN32
+#ifndef _XBT_WIN32
srand48(seed);
#endif
atexit(xbt_postexit);
* (C) 2003 by Argonne National Laboratory.
* See COPYRIGHT in top-level directory.
*/
-
#include "mpi.h"
#include "mpitest.h"
-#include "smpi_cocci.h"
#include <stdio.h>
#include <stdlib.h>
#ifdef HAVE_SYS_TIME_H
#include <time.h>
#include <math.h>
#include <assert.h>
-
/* FIXME: What is this test supposed to accomplish? */
-
#define START_BUF (1)
#define LARGE_BUF (256 * 1024)
-
/* FIXME: MAX_BUF is too large */
#define MAX_BUF (32 * 1024 * 1024)
#define LOOPS 10
-
-SMPI_VARINIT_GLOBAL(sbuf, char*);
-SMPI_VARINIT_GLOBAL(rbuf, char*);
-SMPI_VARINIT_GLOBAL(recvcounts, int*);
-SMPI_VARINIT_GLOBAL(displs, int*);
-SMPI_VARINIT_GLOBAL_AND_SET(errs, int, 0);
-
+char *sbuf, *rbuf;
+int *recvcounts, *displs;
+int errs = 0;
/* #define dprintf printf */
#define dprintf(...)
-
typedef enum {
REGULAR,
BCAST,
LINEAR_DECREASE,
BELL_CURVE
} test_t;
-
void comm_tests(MPI_Comm comm);
-double run_test(long long msg_size, MPI_Comm comm, test_t test_type, double * max_time);
-
-int main(int argc, char ** argv)
+double run_test(long long msg_size, MPI_Comm comm, test_t test_type, double *max_time);
+int main(int argc, char **argv)
{
int comm_size, comm_rank;
MPI_Comm comm;
-
MTest_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &comm_size);
MPI_Comm_rank(MPI_COMM_WORLD, &comm_rank);
-
+ if (comm_size < 3) {
+ fprintf(stderr, "At least 3 processes required\n");
+ MPI_Abort(MPI_COMM_WORLD, 1);
+ }
if (LARGE_BUF * comm_size > MAX_BUF)
goto fn_exit;
-
- SMPI_VARGET_GLOBAL(sbuf) = (void *) calloc(MAX_BUF, 1);
- SMPI_VARGET_GLOBAL(rbuf) = (void *) calloc(MAX_BUF, 1);
-
+ sbuf = (void *) calloc(MAX_BUF, 1);
+ rbuf = (void *) calloc(MAX_BUF, 1);
srand(time(NULL));
-
- SMPI_VARGET_GLOBAL(recvcounts) = (void *) malloc(comm_size * sizeof(int));
- SMPI_VARGET_GLOBAL(displs) = (void *) malloc(comm_size * sizeof(int));
- if (!SMPI_VARGET_GLOBAL(recvcounts) || !SMPI_VARGET_GLOBAL(displs) || !SMPI_VARGET_GLOBAL(sbuf) || !SMPI_VARGET_GLOBAL(rbuf)) {
+ recvcounts = (void *) malloc(comm_size * sizeof(int));
+ displs = (void *) malloc(comm_size * sizeof(int));
+ if (!recvcounts || !displs || !sbuf || !rbuf) {
fprintf(stderr, "Unable to allocate memory:\n");
- if (!SMPI_VARGET_GLOBAL(sbuf)) fprintf(stderr,"\tsbuf of %d bytes\n", MAX_BUF );
- if (!SMPI_VARGET_GLOBAL(rbuf)) fprintf(stderr,"\trbuf of %d bytes\n", MAX_BUF );
- if (!SMPI_VARGET_GLOBAL(recvcounts)) fprintf(stderr,"\trecvcounts of %zd bytes\n", comm_size * sizeof(int) );
- if (!SMPI_VARGET_GLOBAL(displs)) fprintf(stderr,"\tdispls of %zd bytes\n", comm_size * sizeof(int) );
+ if (!sbuf)
+ fprintf(stderr, "\tsbuf of %d bytes\n", MAX_BUF);
+ if (!rbuf)
+ fprintf(stderr, "\trbuf of %d bytes\n", MAX_BUF);
+ if (!recvcounts)
+ fprintf(stderr, "\trecvcounts of %zd bytes\n", comm_size * sizeof(int));
+ if (!displs)
+ fprintf(stderr, "\tdispls of %zd bytes\n", comm_size * sizeof(int));
fflush(stderr);
MPI_Abort(MPI_COMM_WORLD, -1);
- exit(-1);
}
-
if (!comm_rank) {
dprintf("Message Range: (%d, %d); System size: %d\n", START_BUF, LARGE_BUF, comm_size);
fflush(stdout);
}
-
-
/* COMM_WORLD tests */
if (!comm_rank) {
dprintf("\n\n==========================================================\n");
dprintf("==========================================================\n");
}
comm_tests(MPI_COMM_WORLD);
-
/* non-COMM_WORLD tests */
if (!comm_rank) {
dprintf("\n\n==========================================================\n");
if (comm_rank < comm_size - 1)
comm_tests(comm);
MPI_Comm_free(&comm);
-
/* Randomized communicator tests */
if (!comm_rank) {
dprintf("\n\n==========================================================\n");
MPI_Comm_split(MPI_COMM_WORLD, 0, rand(), &comm);
comm_tests(comm);
MPI_Comm_free(&comm);
-
- free(SMPI_VARGET_GLOBAL(sbuf));
- free(SMPI_VARGET_GLOBAL(rbuf));
- free(SMPI_VARGET_GLOBAL(recvcounts));
- free(SMPI_VARGET_GLOBAL(displs));
-
-fn_exit:
- MTest_Finalize(SMPI_VARGET_GLOBAL(errs));
+ free(sbuf);
+ free(rbuf);
+ free(recvcounts);
+ free(displs);
+ fn_exit:
+ MTest_Finalize(errs);
MPI_Finalize();
-
return 0;
}
-
void comm_tests(MPI_Comm comm)
{
int comm_size, comm_rank;
double rtime = rtime; /* stop warning about unused variable */
double max_time;
long long msg_size;
-
MPI_Comm_size(comm, &comm_size);
MPI_Comm_rank(comm, &comm_rank);
-
for (msg_size = START_BUF; msg_size <= LARGE_BUF; msg_size *= 2) {
if (!comm_rank) {
dprintf("\n====> MSG_SIZE: %d\n", (int) msg_size);
fflush(stdout);
}
-
rtime = run_test(msg_size, comm, REGULAR, &max_time);
if (!comm_rank) {
dprintf("REGULAR:\tAVG: %.3f\tMAX: %.3f\n", rtime, max_time);
fflush(stdout);
}
-
rtime = run_test(msg_size, comm, BCAST, &max_time);
if (!comm_rank) {
dprintf("BCAST:\tAVG: %.3f\tMAX: %.3f\n", rtime, max_time);
fflush(stdout);
}
-
rtime = run_test(msg_size, comm, SPIKE, &max_time);
if (!comm_rank) {
dprintf("SPIKE:\tAVG: %.3f\tMAX: %.3f\n", rtime, max_time);
fflush(stdout);
}
-
rtime = run_test(msg_size, comm, HALF_FULL, &max_time);
if (!comm_rank) {
dprintf("HALF_FULL:\tAVG: %.3f\tMAX: %.3f\n", rtime, max_time);
fflush(stdout);
}
-
rtime = run_test(msg_size, comm, LINEAR_DECREASE, &max_time);
if (!comm_rank) {
dprintf("LINEAR_DECREASE:\tAVG: %.3f\tMAX: %.3f\n", rtime, max_time);
fflush(stdout);
}
-
rtime = run_test(msg_size, comm, BELL_CURVE, &max_time);
if (!comm_rank) {
dprintf("BELL_CURVE:\tAVG: %.3f\tMAX: %.3f\n", rtime, max_time);
}
}
}
-
-double run_test(long long msg_size, MPI_Comm comm, test_t test_type,
- double * max_time)
+double run_test(long long msg_size, MPI_Comm comm, test_t test_type, double *max_time)
{
int i, j;
int comm_size, comm_rank;
double start, end;
double total_time, avg_time;
MPI_Aint tmp;
-
MPI_Comm_size(comm, &comm_size);
MPI_Comm_rank(comm, &comm_rank);
-
- SMPI_VARGET_GLOBAL(displs)[0] = 0;
+ displs[0] = 0;
for (i = 0; i < comm_size; i++) {
if (test_type == REGULAR)
- SMPI_VARGET_GLOBAL(recvcounts)[i] = msg_size;
+ recvcounts[i] = msg_size;
else if (test_type == BCAST)
- SMPI_VARGET_GLOBAL(recvcounts)[i] = (!i) ? msg_size : 0;
+ recvcounts[i] = (!i) ? msg_size : 0;
else if (test_type == SPIKE)
- SMPI_VARGET_GLOBAL(recvcounts)[i] = (!i) ? (msg_size / 2) : (msg_size / (2 * (comm_size - 1)));
+ recvcounts[i] = (!i) ? (msg_size / 2) : (msg_size / (2 * (comm_size - 1)));
else if (test_type == HALF_FULL)
- SMPI_VARGET_GLOBAL(recvcounts)[i] = (i < (comm_size / 2)) ? (2 * msg_size) : 0;
+ recvcounts[i] = (i < (comm_size / 2)) ? (2 * msg_size) : 0;
else if (test_type == LINEAR_DECREASE) {
tmp = 2 * msg_size * (comm_size - 1 - i) / (comm_size - 1);
- if (tmp != (int)tmp) {
- fprintf( stderr, "Integer overflow in variable tmp\n" );
- MPI_Abort( MPI_COMM_WORLD, 1 );
- exit(1);
- }
- SMPI_VARGET_GLOBAL(recvcounts)[i] = (int) tmp;
-
+ if (tmp != (int) tmp) {
+ fprintf(stderr, "Integer overflow in variable tmp\n");
+ MPI_Abort(MPI_COMM_WORLD, 1);
+ }
+ recvcounts[i] = (int) tmp;
/* If the maximum message size is too large, don't run */
- if (tmp > MAX_BUF) return 0;
+ if (tmp > MAX_BUF)
+ return 0;
}
else if (test_type == BELL_CURVE) {
for (j = 0; j < i; j++) {
- if (i - 1 + j >= comm_size) continue;
+ if (i - 1 + j >= comm_size)
+ continue;
tmp = msg_size * comm_size / (log(comm_size) * i);
- SMPI_VARGET_GLOBAL(recvcounts)[i - 1 + j] = (int) tmp;
- SMPI_VARGET_GLOBAL(displs)[i - 1 + j] = 0;
-
+ recvcounts[i - 1 + j] = (int) tmp;
+ displs[i - 1 + j] = 0;
/* If the maximum message size is too large, don't run */
- if (tmp > MAX_BUF) return 0;
+ if (tmp > MAX_BUF)
+ return 0;
}
}
-
if (i < comm_size - 1)
- SMPI_VARGET_GLOBAL(displs)[i+1] = SMPI_VARGET_GLOBAL(displs)[i] + SMPI_VARGET_GLOBAL(recvcounts)[i];
+ displs[i + 1] = displs[i] + recvcounts[i];
}
-
/* Test that:
- 1: sbuf is large enough
- 2: rbuf is large enough
- 3: There were no failures (e.g., tmp nowhere > rbuf size
- */
+ * 1: sbuf is large enough
+ * 2: rbuf is large enough
+ * 3: There were no failures (e.g., tmp nowhere > rbuf size
+ */
MPI_Barrier(comm);
start = MPI_Wtime();
for (i = 0; i < LOOPS; i++) {
- MPI_Allgatherv(SMPI_VARGET_GLOBAL(sbuf), SMPI_VARGET_GLOBAL(recvcounts)[comm_rank], MPI_CHAR,
- SMPI_VARGET_GLOBAL(rbuf), SMPI_VARGET_GLOBAL(recvcounts), SMPI_VARGET_GLOBAL(displs), MPI_CHAR, comm);
+ MPI_Allgatherv(sbuf, recvcounts[comm_rank], MPI_CHAR,
+ rbuf, recvcounts, displs, MPI_CHAR, comm);
}
end = MPI_Wtime();
MPI_Barrier(comm);
-
/* Convert to microseconds (why?) */
total_time = 1.0e6 * (end - start);
MPI_Reduce(&total_time, &avg_time, 1, MPI_DOUBLE, MPI_SUM, 0, comm);
MPI_Reduce(&total_time, max_time, 1, MPI_DOUBLE, MPI_MAX, 0, comm);
-
return (avg_time / (LOOPS * comm_size));
}
#include "mpi.h"
#include "mpitest.h"
-#include "smpi_cocci.h"
#include <stdio.h>
#include <stdlib.h>
#ifdef HAVE_SYS_TIME_H
#include "mpi.h"
#include "mpitest.h"
-#include "smpi_cocci.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mpi.h"
#include "mpitestconf.h"
#include "mpitest.h"
-#include "smpi_cocci.h"
#if defined(HAVE_STDIO_H) || defined(STDC_HEADERS)
#include <stdio.h>
#endif
include/simgrid/plugins/energy.h
include/smpi/mpi.h
include/smpi/smpi.h
- include/smpi/smpi_cocci.h
include/smpi/smpi_main.h
include/surf/simgrid_dtd.h
include/surf/surf_routing.h
examples/platforms/clusters_routing_full.xml
examples/platforms/crosstraffic.xml
examples/platforms/conf/gridpp_grid_2004.conf
- examples/platforms/conf/gridpp_grid_2004.xml
examples/platforms/conf/lcg_sept2004_grid.conf
- examples/platforms/conf/lcg_sept2004_grid.xml
examples/platforms/conf/transform_optorsim_platform.pl
examples/platforms/config.xml
examples/platforms/config_tracing.xml