| 333 | |
| 334 | 5) Analyse |
| 335 | |
| 336 | {{{ |
| 337 | <analyzer name="analyse" > |
| 338 | <use from="MAXW-DGTD_specs.xml">pattern</use> |
| 339 | <analyse step="execute"> |
| 340 | <file>exe/maxdg3DP$k.out</file> |
| 341 | <file>job.log</file> |
| 342 | </analyse> |
| 343 | </analyzer> |
| 344 | }}} |
| 345 | |
| 346 | After the job has run, you can analyse the results with: |
| 347 | |
| 348 | {{{ |
| 349 | jube2 analyse benchmarks_modules_test --id jube_id |
| 350 | }}} |
| 351 | |
| 352 | The analyse step will look for the corresponding patterns in the output files, in this case exe/maxdg3DP$k.out and job.log, and the data will be stored inside the benchmark directory. The patterns to look for are specified in the MAXW-DGTD_specs.xml file: |
| 353 | |
| 354 | {{{ |
| 355 | <patternset name="pattern"> |
| 356 | <pattern name="fluxpvector" unit="W" type="float">\s*Flux of the Poynting vector :\s+$jube_pat_wrd\s*</pattern> |
| 357 | |
| 358 | <pattern name="attau" unit="m" type="float">\s*AT TAU =\s+$jube_pat_wrd\s*</pattern> |
| 359 | <pattern name="t" unit="nsec" type="float">\s*T =\s+$jube_pat_wrd\s*</pattern> |
| 360 | <pattern name="iterations" unit="" type="int">\s*USING\s+$jube_pat_wrd\s*</pattern> |
| 361 | <pattern name="maxcputime" unit="sec" type="float">\s*MAX CPU TIME :\s+$jube_pat_wrd\s*</pattern> |
| 362 | <pattern name="realtime" unit="sec" type="float">\s*REAL TIME :\s+$jube_pat_wrd\s*</pattern> |
| 363 | <pattern name="timetosolution" unit="sec" type="float">\s*TIME TO SOLUTION:\s+$jube_pat_wrd\s*</pattern> |
| 364 | <pattern name="iotime" unit="sec" type="float">\s*I/O TIME :\s+$jube_pat_wrd\s*</pattern> |
| 365 | <pattern name="electrtime" unit="sec" type="float">\s*ELECTR TIME :\s+$jube_pat_wrd\s*</pattern> |
| 366 | <pattern name="omptime" unit="sec" type="float">\s*OMP TIME :\s+$jube_pat_wrd\s*</pattern> |
| 367 | <pattern name="tfluxelectr" unit="sec" type="float">\s*T FLUX ELECTR :\s+$jube_pat_wrd\s*</pattern> |
| 368 | <pattern name="tfluxmagnet" unit="sec" type="float">\s*T FLUX MAGNET :\s+$jube_pat_wrd\s*</pattern> |
| 369 | <pattern name="tupelectr" unit="sec" type="float">\s*T UP ELECTR :\s+$jube_pat_wrd\s*</pattern> |
| 370 | <pattern name="tupmagnet" unit="sec" type="float">\s*T UP MAGNET :\s+$jube_pat_wrd\s*</pattern> |
| 371 | <pattern name="tfourier" unit="sec" type="float">\s*T FOURIER :\s+$jube_pat_wrd\s*</pattern> |
| 372 | |
| 373 | <pattern name="starttime" type="string" >\(start\)$jube_pat_bl($jube_pat_wrd$jube_pat_bl$jube_pat_wrd)</pattern> |
| 374 | <pattern name="stoptime" type="string" >^\s*\(finished\)\s*(.*)\s*\(</pattern> |
| 375 | </patternset> |
| 376 | }}} |
| 377 | |
| 378 | If there are multiple matches inside a single file you can add a reduce option. Normally only the first match will be extracted. See https://apps.fz-juelich.de/jsc/jube/jube2/docu/glossar.html#term-pattern-tag for more information. |
| 379 | |
| 380 | 6) Result |
| 381 | |
| 382 | {{{ |
| 383 | <result> |
| 384 | <use>analyse</use> |
| 385 | <table name="result" style="pretty" sort="jube_wp_id"> |
| 386 | <column>modules</column> |
| 387 | <column>iopath</column> |
| 388 | <column>iotime</column> |
| 389 | <column>starttime</column> |
| 390 | <column>stoptime</column> |
| 391 | </table> |
| 392 | </result> |
| 393 | |
| 394 | }}} |
| 395 | |
| 396 | The last part is the result table creation. Here you have to use an existing analyser. The <column> contains a pattern or a parameter name. sort is the optional sorting order (separated by ,). The style attribute can be csv or pretty to get different ASCII representations. To create the result table you have to write: |
| 397 | |
| 398 | {{{ |
| 399 | jube2 result benchmarks_modules_test --id jube_id |
| 400 | }}} |
| 401 | |
| 402 | The result table will be written to STDOUT and into a result.dat file inside ./benchmarks_modules_test/benchmark_id/result. |