| 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|---|
| 2 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en-US"><head profile="http://purl.org/net/uriprofile/">
|
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|---|
| 6 | <meta http-equiv="Content-Language" content="ja">
|
|---|
| 7 | <meta http-equiv="Content-Style-Type" content="text/css">
|
|---|
| 8 | <meta http-equiv="Content-Script-Type" content="text/javascript"><title>JI'06:Intro</title>
|
|---|
| 9 |
|
|---|
| 10 | <meta name="author" content="Vincent Garonne">
|
|---|
| 11 | <meta name="description" content="description">
|
|---|
| 12 | <meta name="keywords" content="XHTML, CSS, HTML, (X)HTML">
|
|---|
| 13 | <link rev="made" href="mailto:garonne@lal.in2p3.fr">
|
|---|
| 14 | <link rel="stylesheet" href="..Tools/v2/Slidy/slidy-toc.css" type="text/css" media="screen, projection, print">
|
|---|
| 15 | <link rel="stylesheet" href="../Tools/v2/css/screen.css" type="text/css" media="screen, projection, tv, print">
|
|---|
| 16 |
|
|---|
| 17 | <script src="../Tools/v1/Slidy/slidy.js" type="text/javascript"></script>
|
|---|
| 18 | <script src="../Tools/v1/Slidy/slidy-toc.js" type="text/javascript"></script>
|
|---|
| 19 | </head>
|
|---|
| 20 |
|
|---|
| 21 | <body style="font-size: 18pt;">
|
|---|
| 22 |
|
|---|
| 23 |
|
|---|
| 24 | <!-- Introduction [Start] -->
|
|---|
| 25 |
|
|---|
| 26 | <div style="border-style: none; display: block; visibility: visible; position: absolute;" class="slide" id="cover">
|
|---|
| 27 |
|
|---|
| 28 | <br><br><br>
|
|---|
| 29 | <p id="title">CMT:<br> tbroadcast utility <br>(version 2)</p>
|
|---|
| 30 |
|
|---|
| 31 | <!--<p>Christian Arnault,
|
|---|
| 32 | <<a href="mailto:arnault@lal.in2p3.fr">arnault@lal.in2p3.fr</a>></p>-->
|
|---|
| 33 | <p><a href="http://www.lal.in2p3.fr/~garonne">Vincent Garonne</a>,
|
|---|
| 34 | <<a href="mailto:garonne@lal.in2p3.fr">garonne@lal.in2p3.fr</a>></p>
|
|---|
| 35 | <br><br>
|
|---|
| 36 | <p id="date">6th September 2006</p>
|
|---|
| 37 | <p id="event">Atlas/SIT, CERN</p>
|
|---|
| 38 | </div>
|
|---|
| 39 |
|
|---|
| 40 | <!--<div class="slide toc">
|
|---|
| 41 | <h1>Table of contents</h1>
|
|---|
| 42 | </div> -->
|
|---|
| 43 |
|
|---|
| 44 |
|
|---|
| 45 | <!-- Introduction [Start] -->
|
|---|
| 46 | <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide" id="logo">
|
|---|
| 47 | <h1 id="introduction">tbroadcast v2</h1>
|
|---|
| 48 | <ul>
|
|---|
| 49 | <li> <em>tbroadcast</em> implements parallelism across packages</li>
|
|---|
| 50 | <li> <em>tbroadcast</em> v1 was in c++ (<a href="http://www.cmtsite.org/tbroadcast.html">www.cmtsite.org/tbroadcast.html)</a></li>
|
|---|
| 51 | <li> <em>tbroadcast</em> v2 has been completely rewritten in python
|
|---|
| 52 | <ul>
|
|---|
| 53 | <li>easier to program, modify and maintain</li>
|
|---|
| 54 | <li>better management of objects/model patterns, e.g. thread pools, semaphore, ...</li>
|
|---|
| 55 | </ul>
|
|---|
| 56 | </li>
|
|---|
| 57 | <li> <em>Details:</em>
|
|---|
| 58 | <ul>
|
|---|
| 59 | <li> defined on top of CMT</li>
|
|---|
| 60 | <li> parses the <em>"cmt show uses"</em> command to get the dependency graph
|
|---|
| 61 | and other package informations</li>
|
|---|
| 62 | </ul>
|
|---|
| 63 | </li>
|
|---|
| 64 | <li>Installed at cern as a standalone package
|
|---|
| 65 | <ul>
|
|---|
| 66 | <li>To use it:<pre>> source /afs/cern.ch/sw/contrib/CMT/tbroadcast/v2/cmt/source.[c]sh</pre></li>
|
|---|
| 67 |
|
|---|
| 68 | </ul>
|
|---|
| 69 | </li>
|
|---|
| 70 | <li>Will be SOON distributed as CMT external stuffs
|
|---|
| 71 | <ul>
|
|---|
| 72 | <li>could be invoked as cmt native function, i.d. CMT action concept
|
|---|
| 73 | <pre>> cmt tbroadcast <options></pre></li>
|
|---|
| 74 |
|
|---|
| 75 | <li>For the moment available by svn
|
|---|
| 76 | <pre>> svn co http://svn.lal.in2p3.fr:/projects/CMT/tbroadcast/</pre></li>
|
|---|
| 77 | </ul>
|
|---|
| 78 | </li>
|
|---|
| 79 | </div>
|
|---|
| 80 |
|
|---|
| 81 | <!-- Introduction [1] -->
|
|---|
| 82 | <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide" id="logo">
|
|---|
| 83 |
|
|---|
| 84 | <h1>Command and options</h1>
|
|---|
| 85 |
|
|---|
| 86 | <dl>
|
|---|
| 87 | <dt><pre>> tbroadcast <b><options></b> <b><command></b></pre></dt>
|
|---|
| 88 | <dd><command>: <pre>Command to propagate</pre></dd>
|
|---|
| 89 | <dd><options>:
|
|---|
| 90 | <pre>-nb=<N>: N - Total number of threads (20 by default)
|
|---|
| 91 | -local: run only in the current project (by default, we do a global broadcast)
|
|---|
| 92 | -output=<directory>: store the output in real time for every package in directory
|
|---|
| 93 | -error=<directory>: store the error output separately if specified
|
|---|
| 94 | -ignore_cycles : ignore cycles in packages.
|
|---|
| 95 | Cyclic dependencies still exist in few packages. One can check with "cmt -private show
|
|---|
| 96 | cycles". It will only work for cycles which have cmt dependency not for build
|
|---|
| 97 | dependency.
|
|---|
| 98 | -test: Simulate execution
|
|---|
| 99 | -print: Print for each package its dependencies
|
|---|
| 100 | ...
|
|---|
| 101 | -help: Print help
|
|---|
| 102 | </pre>
|
|---|
| 103 | </dd>
|
|---|
| 104 | </dl>
|
|---|
| 105 | <!---->
|
|---|
| 106 | </div>
|
|---|
| 107 |
|
|---|
| 108 |
|
|---|
| 109 | <!-- Diapo -->
|
|---|
| 110 | <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
|
|---|
| 111 |
|
|---|
| 112 | <h1>Simple example</h1>
|
|---|
| 113 | <table class="noborder">
|
|---|
| 114 | <tbody>
|
|---|
| 115 | <tr>
|
|---|
| 116 | <td class="noborder">
|
|---|
| 117 | <ul>
|
|---|
| 118 | <li> Let A, B, C, D, E be packages</li>
|
|---|
| 119 | <br>
|
|---|
| 120 | <li> Let consider the following dependencies:
|
|---|
| 121 | <ul>
|
|---|
| 122 | <li>A uses {B, C}</li>
|
|---|
| 123 | <li>C uses {D, E}</li>
|
|---|
| 124 | </ul>
|
|---|
| 125 | </li>
|
|---|
| 126 | </ul>
|
|---|
| 127 | <br><br>
|
|---|
| 128 | </td>
|
|---|
| 129 | <td class="noborder">
|
|---|
| 130 | <ul>
|
|---|
| 131 | <li style="position:absolute; left: 700px; top:150px;">Corresponding execution graph:
|
|---|
| 132 | <img src="Images/graph.png" style="margin-top:1em" alt="Dependency graph"/></li>
|
|---|
| 133 | <!-- -->
|
|---|
| 134 | </ul>
|
|---|
| 135 | </td>
|
|---|
| 136 | </tr>
|
|---|
| 137 | <tr>
|
|---|
| 138 | <td class="noborder">
|
|---|
| 139 | <ul>
|
|---|
| 140 | <li>Corresponding Gantt chart:</li>
|
|---|
| 141 | </ul>
|
|---|
| 142 | </td>
|
|---|
| 143 | </tr>
|
|---|
| 144 | <tr>
|
|---|
| 145 | <td class="noborder">
|
|---|
| 146 | <ul class="incremental">
|
|---|
| 147 | <ul style="margin-left:1em">1) Sequential mode:</ul>
|
|---|
| 148 | </ul>
|
|---|
| 149 | <div class="incremental" style="position: relative;">
|
|---|
| 150 | <img src="Images/Gantt.png" height="272" width="575"/>
|
|---|
| 151 | <img src="Images/Gantt1.png" style="position: absolute; left: 0pt; top: 0pt;" height="272" width="575">
|
|---|
| 152 | </div>
|
|---|
| 153 | <!-- -->
|
|---|
| 154 | </td>
|
|---|
| 155 | <td class="noborder">
|
|---|
| 156 | <ul class="incremental">
|
|---|
| 157 | <ul>2) Multi-threaded mode:</ul>
|
|---|
| 158 | <ul><img src="Images/Gantt2.png" height="272" width="575"/>
|
|---|
| 159 | </ul>
|
|---|
| 160 | </ul>
|
|---|
| 161 | <!-- -->
|
|---|
| 162 | </td>
|
|---|
| 163 | </tr>
|
|---|
| 164 | </tbody>
|
|---|
| 165 | </table>
|
|---|
| 166 | </div>
|
|---|
| 167 |
|
|---|
| 168 |
|
|---|
| 169 | <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
|
|---|
| 170 |
|
|---|
| 171 | <h1>Evaluation & Performances</h1>
|
|---|
| 172 |
|
|---|
| 173 | <ul>
|
|---|
| 174 | <li>Build of AtlasCore 2.2.0 with a total of 136 packages and N=60 threads </li>
|
|---|
| 175 | <li>On lxplus with AFS (/afs/cern.ch/atlas/maxidisk/d57/testarea/AtlasCore/2.2.0)
|
|---|
| 176 | <ul>
|
|---|
| 177 | <li>Node characteristics: Intel(R) Xeon(TM) CPU 2.80GHz, Memory ~2 Giga<li>
|
|---|
| 178 | </ul>
|
|---|
| 179 | </li>
|
|---|
| 180 | <br>
|
|---|
| 181 | <li> Results: </li>
|
|---|
| 182 | <table summary="">
|
|---|
| 183 | <thead>
|
|---|
| 184 | <tr>
|
|---|
| 185 | <th width="300"><p style="text-align: right;">Commands</p><p style="text-align: left;">Mode</p></th>
|
|---|
| 186 | <th>cmt config</th>
|
|---|
| 187 | <th>cmt make</th>
|
|---|
| 188 | </tr>
|
|---|
| 189 | </thead>
|
|---|
| 190 | <tbody>
|
|---|
| 191 | <tr>
|
|---|
| 192 | <th width="300" style="text-align: left;">Sequential</th>
|
|---|
| 193 | <td style="text-align: center;" >5:17.81 (min.)</td>
|
|---|
| 194 | <td style="text-align: center;" >1:49:44.7 (h.)</td>
|
|---|
| 195 | </tr>
|
|---|
| 196 | <tr>
|
|---|
| 197 | <th width="300" style="text-align: left;">Multi-threaded</th>
|
|---|
| 198 | <td style="text-align: center;" >1:49:43.65 (min.)</td>
|
|---|
| 199 | <td style="text-align: center;" > 55:47.76 (h.)</td>
|
|---|
| 200 | </tr>
|
|---|
| 201 | </tbody>
|
|---|
| 202 | </table>
|
|---|
| 203 | <br>
|
|---|
| 204 | <li> Note: AFS provides non determistic access time...</li>
|
|---|
| 205 | <br>
|
|---|
| 206 | <li> Compilation validation
|
|---|
| 207 | <ul>
|
|---|
| 208 | <li> check the total number of object, archive and library files between sequential and parallel compilation
|
|---|
| 209 | <ul>
|
|---|
| 210 | <li>Successful after an intensive multi-threaded debugging session</li>
|
|---|
| 211 | <li>NICOS should be used in the future</li>
|
|---|
| 212 | <li>More tests are undergoing with other projects</li>
|
|---|
| 213 | </ul>
|
|---|
| 214 | </li>
|
|---|
| 215 | </ul>
|
|---|
| 216 | </li>
|
|---|
| 217 | </ul>
|
|---|
| 218 | </div>
|
|---|
| 219 |
|
|---|
| 220 |
|
|---|
| 221 | <!-- Diapo -->
|
|---|
| 222 | <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide" id="logo">
|
|---|
| 223 | <h1>Gantt chart: AtlasCore compilation (1)</h1>
|
|---|
| 224 | <!--<ul><li>card(thread pool)=60</li></ul>-->
|
|---|
| 225 | <center><img src="Images/AtlasCoreGantt.jpg" alt="Gantt" height="600" width="950"></center>
|
|---|
| 226 | <!--height="798" width="1112" -->
|
|---|
| 227 | </div>
|
|---|
| 228 |
|
|---|
| 229 | <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide" id="logo">
|
|---|
| 230 | <h1>Gantt chart: AtlasCore compilation (2)</h1>
|
|---|
| 231 | <center><img src="Images/AtlasCoreGantt2.jpg" alt="Gantt" height="500" width="1056"></center>
|
|---|
| 232 | <!--height="272" width="575" -->
|
|---|
| 233 | </div>
|
|---|
| 234 |
|
|---|
| 235 |
|
|---|
| 236 |
|
|---|
| 237 | <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
|
|---|
| 238 | <h1>Conclusion</h1>
|
|---|
| 239 | <ul>
|
|---|
| 240 | <li> tbroadcast gives clearly better compilation time (~55 min. for AtlasCore)</li>
|
|---|
| 241 | <li> tbroadcast utilization will be another quality test for Atlas software as each shared resource between packages
|
|---|
| 242 | must be cleany specified</li>
|
|---|
| 243 | <li>Could be used with distcc/gmake -j<N> (currently under testing by Emil)
|
|---|
| 244 | <ul>
|
|---|
| 245 | <li> a possible factor ~2 for nightlies :) ?</li>
|
|---|
| 246 | </ul>
|
|---|
| 247 |
|
|---|
| 248 | </li>
|
|---|
| 249 | <br>
|
|---|
| 250 | <li> Future plans:
|
|---|
| 251 | <ul>
|
|---|
| 252 | <li> more tests, tests and tests</li>
|
|---|
| 253 | <li> Adapt tbroadcast at the project level for providing sequential and multi-threaded mode</li>
|
|---|
| 254 | <li> Is a distributed Master/slaves model with a worker node pool relevant at the project level ?</li>
|
|---|
| 255 | </ul>
|
|---|
| 256 | </li>
|
|---|
| 257 | </li>
|
|---|
| 258 | </ul>
|
|---|
| 259 |
|
|---|
| 260 | </div>
|
|---|
| 261 |
|
|---|
| 262 |
|
|---|
| 263 | <!-- Thank You [Start] -->
|
|---|
| 264 | <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide" id="thanks">
|
|---|
| 265 | <p>
|
|---|
| 266 | Questions ?
|
|---|
| 267 | </p>
|
|---|
| 268 |
|
|---|
| 269 | </div>
|
|---|
| 270 |
|
|---|
| 271 |
|
|---|
| 272 |
|
|---|
| 273 | <!-- [End] -->
|
|---|
| 274 |
|
|---|
| 275 | </body>
|
|---|
| 276 | </html>
|
|---|