├── .gitignore ├── .travis.yml ├── LICENSE ├── NOTICE ├── README.md ├── docs ├── Makefile ├── UserWriteUp.txt ├── code-examples │ └── scorep_user_calls.c ├── conf.py ├── index.rst ├── install.rst ├── requirements.txt ├── scorep-5.0.patch ├── tutorial.rst └── userguide.rst ├── examples ├── conf │ ├── dfly.conf │ ├── fattree.conf │ ├── hypreX_expressMesh.conf │ └── torus.conf ├── jacobi2d-bigsim │ ├── Makefile │ ├── global_map.bin │ ├── jacobi2d.C │ ├── job0 │ ├── job1 │ ├── traceJ0 │ │ ├── bgTrace │ │ ├── bgTrace0 │ │ ├── bgTrace1 │ │ ├── bgTrace2 │ │ ├── bgTrace3 │ │ ├── bgTrace4 │ │ ├── bgTrace5 │ │ ├── bgTrace6 │ │ └── bgTrace7 │ ├── traceJ1 │ │ ├── bgTrace │ │ ├── bgTrace0 │ │ ├── bgTrace1 │ │ ├── bgTrace2 │ │ └── bgTrace3 │ └── tracer_config └── stencil4d-otf │ ├── Makefile │ ├── global_map.bin │ ├── job0 │ ├── job1 │ ├── stencil4d.C │ ├── tracer_config │ ├── traces-32 │ ├── scorep.cfg │ ├── traces.def │ ├── traces.otf2 │ └── traces │ │ ├── 0.def │ │ ├── 0.evt │ │ ├── 1.def │ │ ├── 1.evt │ │ ├── 10.def │ │ ├── 10.evt │ │ ├── 11.def │ │ ├── 11.evt │ │ ├── 12.def │ │ ├── 12.evt │ │ ├── 13.def │ │ ├── 13.evt │ │ ├── 14.def │ │ ├── 14.evt │ │ ├── 15.def │ │ ├── 15.evt │ │ ├── 16.def │ │ ├── 16.evt │ │ ├── 17.def │ │ ├── 17.evt │ │ ├── 18.def │ │ ├── 18.evt │ │ ├── 19.def │ │ ├── 19.evt │ │ ├── 2.def │ │ ├── 2.evt │ │ ├── 20.def │ │ ├── 20.evt │ │ ├── 21.def │ │ ├── 21.evt │ │ ├── 22.def │ │ ├── 22.evt │ │ ├── 23.def │ │ ├── 23.evt │ │ ├── 24.def │ │ ├── 24.evt │ │ ├── 25.def │ │ ├── 25.evt │ │ ├── 26.def │ │ ├── 26.evt │ │ ├── 27.def │ │ ├── 27.evt │ │ ├── 28.def │ │ ├── 28.evt │ │ ├── 29.def │ │ ├── 29.evt │ │ ├── 3.def │ │ ├── 3.evt │ │ ├── 30.def │ │ ├── 30.evt │ │ ├── 31.def │ │ ├── 31.evt │ │ ├── 4.def │ │ ├── 4.evt │ │ ├── 5.def │ │ ├── 5.evt │ │ ├── 6.def │ │ ├── 6.evt │ │ ├── 7.def │ │ ├── 7.evt │ │ ├── 8.def │ │ ├── 8.evt │ │ ├── 9.def │ │ └── 9.evt │ └── traces-64 │ ├── scorep.cfg │ ├── traces.def │ ├── traces.otf2 │ └── traces │ ├── 0.def │ ├── 0.evt │ ├── 1.def │ ├── 1.evt │ ├── 10.def │ ├── 10.evt │ ├── 11.def │ ├── 11.evt │ ├── 12.def │ ├── 12.evt │ ├── 13.def │ ├── 13.evt │ ├── 14.def │ ├── 14.evt │ ├── 15.def │ ├── 15.evt │ ├── 16.def │ ├── 16.evt │ ├── 17.def │ ├── 17.evt │ ├── 18.def │ ├── 18.evt │ ├── 19.def │ ├── 19.evt │ ├── 2.def │ ├── 2.evt │ ├── 20.def │ ├── 20.evt │ ├── 21.def │ ├── 21.evt │ ├── 22.def │ ├── 22.evt │ ├── 23.def │ ├── 23.evt │ ├── 24.def │ ├── 24.evt │ ├── 25.def │ ├── 25.evt │ ├── 26.def │ ├── 26.evt │ ├── 27.def │ ├── 27.evt │ ├── 28.def │ ├── 28.evt │ ├── 29.def │ ├── 29.evt │ ├── 3.def │ ├── 3.evt │ ├── 30.def │ ├── 30.evt │ ├── 31.def │ ├── 31.evt │ ├── 32.def │ ├── 32.evt │ ├── 33.def │ ├── 33.evt │ ├── 34.def │ ├── 34.evt │ ├── 35.def │ ├── 35.evt │ ├── 36.def │ ├── 36.evt │ ├── 37.def │ ├── 37.evt │ ├── 38.def │ ├── 38.evt │ ├── 39.def │ ├── 39.evt │ ├── 4.def │ ├── 4.evt │ ├── 40.def │ ├── 40.evt │ ├── 41.def │ ├── 41.evt │ ├── 42.def │ ├── 42.evt │ ├── 43.def │ ├── 43.evt │ ├── 44.def │ ├── 44.evt │ ├── 45.def │ ├── 45.evt │ ├── 46.def │ ├── 46.evt │ ├── 47.def │ ├── 47.evt │ ├── 48.def │ ├── 48.evt │ ├── 49.def │ ├── 49.evt │ ├── 5.def │ ├── 5.evt │ ├── 50.def │ ├── 50.evt │ ├── 51.def │ ├── 51.evt │ ├── 52.def │ ├── 52.evt │ ├── 53.def │ ├── 53.evt │ ├── 54.def │ ├── 54.evt │ ├── 55.def │ ├── 55.evt │ ├── 56.def │ ├── 56.evt │ ├── 57.def │ ├── 57.evt │ ├── 58.def │ ├── 58.evt │ ├── 59.def │ ├── 59.evt │ ├── 6.def │ ├── 6.evt │ ├── 60.def │ ├── 60.evt │ ├── 61.def │ ├── 61.evt │ ├── 62.def │ ├── 62.evt │ ├── 63.def │ ├── 63.evt │ ├── 7.def │ ├── 7.evt │ ├── 8.def │ ├── 8.evt │ ├── 9.def │ └── 9.evt ├── tracer ├── Makefile ├── Makefile.common ├── coll-events.C ├── elements │ ├── Makefile │ ├── MsgEntry.C │ ├── MsgEntry.h │ ├── PE.C │ ├── PE.h │ ├── Task.C │ └── Task.h ├── p2p-events.C ├── reader │ ├── CWrapper.C │ ├── CWrapper.h │ ├── Makefile │ ├── TraceReader.C │ ├── TraceReader.h │ ├── datatypes.h │ ├── otf2_reader.C │ └── otf2_reader.h ├── tracer-driver.C └── tracer-driver.h └── utils ├── Makefile ├── README ├── core_random_mapping.C ├── create_job_input.py ├── def_lin_mapping.C ├── dfly_node_random_mapping.C ├── dfly_node_rr_mapping.C ├── dfly_router_rr_mapping.C ├── hilbert.h ├── job_config.input ├── many_job.C ├── multi_job.C ├── node_mapping.C ├── router_random_mapping.C ├── spread_nodes.C ├── stencil_block_block_mapping.C ├── stencil_block_block_random_mapping.C ├── stencil_block_mapping.C ├── stencil_block_node_random_mapping.C ├── stencil_block_torus_mapping.C ├── torus_block_mapping.C ├── torus_node_random_mapping.C └── traceHelp ├── Makefile └── traceToFile.cpp /.gitignore: -------------------------------------------------------------------------------- 1 | # automake artifacts 2 | /Makefile.in 3 | /aclocal.m4 4 | /autom4te.cache/ 5 | /codes_net_config.h.in 6 | /compile 7 | /config.guess 8 | /config.sub 9 | /configure 10 | /depcomp 11 | /install-sh 12 | /missing 13 | 14 | # configure artifacts 15 | /config.log 16 | /config.status 17 | /Makefile 18 | /stamp-h1 19 | /codes_net_config.h 20 | /maint/codes-net.pc 21 | /test-driver 22 | .deps 23 | 24 | # make generated artifacts 25 | .dirstamp 26 | *.o 27 | *.a 28 | *.d 29 | tracer/traceR 30 | 31 | # hide backups 32 | *~ 33 | 34 | # generated files from test runs 35 | ross.csv 36 | 37 | modelnet-test-1* 38 | modelnet-test-2* 39 | modelnet-test-3* 40 | modelnet-test-4* 41 | modelnet-test-5* 42 | modelnet-test-6* 43 | modelnet-test-7* 44 | modelnet-test-8* 45 | modelnet-test-9* 46 | 47 | # util binaries 48 | 49 | utils/core_random_mapping 50 | utils/def_lin_mapping 51 | utils/dfly_node_random_mapping 52 | utils/dfly_node_rr_mapping 53 | utils/dfly_router_rr_mapping 54 | utils/many_job 55 | utils/multi_job 56 | utils/node_mapping 57 | utils/router_random_mapping 58 | utils/spread_nodes 59 | utils/stencil_block_block_mapping 60 | utils/stencil_block_block_random_mapping 61 | utils/stencil_block_mapping 62 | utils/stencil_block_node_random_mapping 63 | utils/stencil_block_torus_mapping 64 | utils/torus_block_mapping 65 | utils/torus_node_random_mapping 66 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | dist: xenial 2 | language: cpp 3 | 4 | addons: 5 | apt: 6 | packages: 7 | - libtool-bin 8 | - libmpich-dev 9 | 10 | install: 11 | # Install ROSS 12 | - | 13 | git clone https://github.com/ROSS-org/ROSS.git ${TRAVIS_BUILD_DIR}/ci-build-deps/ROSS 14 | pushd ${TRAVIS_BUILD_DIR}/ci-build-deps/ROSS 15 | mkdir build 16 | cd build 17 | ARCH=x86_64 CC=mpicc CXX=mpicxx cmake -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/ci-deps/ROSS ../ 18 | make -j3 19 | make install 20 | popd 21 | # Install CODES 22 | - | 23 | git clone https://xgitlab.cels.anl.gov/codes/codes.git ${TRAVIS_BUILD_DIR}/ci-build-deps/CODES 24 | pushd ${TRAVIS_BUILD_DIR}/ci-build-deps/CODES 25 | ./prepare.sh 26 | mkdir build 27 | cd build 28 | ../configure --prefix=${TRAVIS_BUILD_DIR}/ci-deps/CODES CC=mpicc CXX=mpicxx PKG_CONFIG_PATH=${TRAVIS_BUILD_DIR}/ci-deps/ROSS/lib/pkgconfig 29 | # add --with-dumpi=/path/to/dumpi/install here to enable tracing with dumpi; only needs libundumpi, so can use --disable-libdumpi and --enable-libundumpi when installing DUMPI 30 | make -j3 31 | make install 32 | popd 33 | # Install OTF2 34 | - | 35 | mkdir ${TRAVIS_BUILD_DIR}/ci-build-deps/ 36 | pushd ${TRAVIS_BUILD_DIR}/ci-build-deps/ 37 | wget https://www.vi-hps.org/cms/upload/packages/otf2/otf2-2.1.1.tar.gz 38 | tar -xf otf2-2.1.1.tar.gz 39 | cd otf2-2.1.1 40 | mkdir build 41 | cd build 42 | ../configure --prefix=${TRAVIS_BUILD_DIR}/ci-deps/OTF2 CC=mpicc CXX=mpicxx --enable-shared 43 | make -j3 44 | make install 45 | popd 46 | export PATH=$PATH:${TRAVIS_BUILD_DIR}/ci-deps/OTF2/bin 47 | 48 | script: 49 | - cd tracer 50 | - make all PREFIX=${TRAVIS_BUILD_DIR}/install-test CXX=mpicc CXX=mpicxx ROSS_DIR="${TRAVIS_BUILD_DIR}/ci-deps/ROSS" CODES_DIR="${TRAVIS_BUILD_DIR}/ci-deps/CODES" SELECT_TRACE="-DTRACER_OTF_TRACES=1" 51 | - cd ../utils 52 | - make 53 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Lawrence Livermore National Security, LLC. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a 4 | copy of this software and associated documentation files (the "Software"), 5 | to deal in the Software without restriction, including without limitation 6 | the rights to use, copy, modify, merge, publish, distribute, sublicense, 7 | and/or sell copies of the Software, and to permit persons to whom the 8 | Software is furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 19 | DEALINGS IN THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | This work was produced under the auspices of the U.S. Department of 2 | Energy by Lawrence Livermore National Laboratory under Contract 3 | DE-AC52-07NA27344. 4 | 5 | This work was prepared as an account of work sponsored by an agency of 6 | the United States Government. Neither the United States Government nor 7 | Lawrence Livermore National Security, LLC, nor any of their employees 8 | makes any warranty, expressed or implied, or assumes any legal liability 9 | or responsibility for the accuracy, completeness, or usefulness of any 10 | information, apparatus, product, or process disclosed, or represents that 11 | its use would not infringe privately owned rights. 12 | 13 | Reference herein to any specific commercial product, process, or service 14 | by trade name, trademark, manufacturer, or otherwise does not necessarily 15 | constitute or imply its endorsement, recommendation, or favoring by the 16 | United States Government or Lawrence Livermore National Security, LLC. 17 | 18 | The views and opinions of authors expressed herein do not necessarily 19 | state or reflect those of the United States Government or Lawrence 20 | Livermore National Security, LLC, and shall not be used for advertising 21 | or product endorsement purposes. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | TraceR v2.2 2 | =========== 3 | 4 | [![Read the Docs](http://readthedocs.org/projects/tracer-codes/badge/?version=master)](http://tracer-codes.readthedocs.io) 5 | [![Build Status](https://travis-ci.com/LLNL/TraceR.svg?branch=master)](https://travis-ci.com/LLNL/TraceR) 6 | 7 | TraceR is a trace replay tool built upon the ROSS-based CODES simulation 8 | framework. TraceR can be used for predicting network performance and 9 | understanding network behavior by simulating messaging in High Performance 10 | Computing applications on interconnection networks. 11 | 12 | 13 | ### Build 14 | 15 | TraceR depends on [CODES](https://xgitlab.cels.anl.gov/codes/codes) and [ROSS](https://github.com/ROSS-org/ROSS). There are several ways to build TraceR: 16 | 17 | 1. Use [spack](https://github.com/spack/spack) to build TraceR and its dependencies: 18 | ``` 19 | spack install tracer 20 | ``` 21 | 22 | 2. Build TraceR and its dependencies manually: 23 | 24 | * Download and install ROSS and CODES. Set the appropriate paths: ROSS_DIR, and 25 | CODES_DIR in tracer/Makefile.common. 26 | * Pick between the two trace formats supported by TraceR: OTF2 or BigSim, and 27 | accordingly build the OTF2 or Charm++ library. If using OTF2 traces 28 | (default), set SELECT_TRACE = -DTRACER_OTF_TRACES=1, and ensure that 29 | otf2-config is in your PATH. If using BigSim traces, set SELECT_TRACE = 30 | -DTRACER_BIGSIM_TRACES=1, and set CHARMPATH to the Charm++ installation in 31 | tracer/Makefile.common. 32 | * Set the ARCH variable in tracer/Makefile.common or alternatively set the CXX 33 | and ARCH_FLAGS variables. Then type: 34 | ``` 35 | cd tracer 36 | make 37 | ``` 38 | 39 | More detailed build instructions are available on TraceR's [documentation](https://tracer-codes.readthedocs.io/en/master/index.html#document-install) pages. 40 | 41 | Refer to TraceR's [User Guide](https://tracer-codes.readthedocs.io/en/master/userguide.html) for details on how to do network simulations using TraceR. 42 | 43 | 44 | ### Citing TraceR 45 | 46 | Any published work that utilizes TraceR should cite the following paper: 47 | 48 | Nikhil Jain, Abhinav Bhatele, Samuel T. White, Todd Gamblin, and Laxmikant V. Kale. [Evaluating HPC networks via simulation of parallel workloads](http://doi.ieeecomputersociety.org/10.1109/SC.2016.13). In Proceedings of the ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis, SC '16. IEEE Computer Society, November 2016. LLNL-CONF-690662. 49 | 50 | 51 | ### License 52 | 53 | TraceR is distributed under the terms of the MIT license. 54 | 55 | Copyright (c) 2015, Lawrence Livermore National Security, LLC. 56 | Produced at the Lawrence Livermore National Laboratory. 57 | 58 | Written by: 59 | ``` 60 | Nikhil Jain 61 | Bilge Acun 62 | Abhinav Bhatele 63 | ``` 64 | LLNL-CODE-740483. All rights reserved. 65 | 66 | SPDX-License-Identifier: MIT 67 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | SPHINXPROJ = TraceR 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 21 | -------------------------------------------------------------------------------- /docs/code-examples/scorep_user_calls.c: -------------------------------------------------------------------------------- 1 | #include 2 | ... 3 | int main(int argc, char **argv, char **envp) 4 | { 5 | MPI_Init(&argc,&argv); 6 | SCOREP_RECORDING_OFF(); //turn recording off for initialization/regions not of interest 7 | ... 8 | SCOREP_RECORDING_ON(); 9 | //use verbatim to facilitate looping over the traces in simulation when simulating multiple jobs 10 | SCOREP_USER_REGION_BY_NAME_BEGIN("TRACER_Loop", SCOREP_USER_REGION_TYPE_COMMON); 11 | // at least add this BEGIN timer call - called from only one rank 12 | // you can add more calls later with region names TRACER_WallTime_ 13 | if(myRank == 0) 14 | SCOREP_USER_REGION_BY_NAME_BEGIN("TRACER_WallTime_MainLoop", SCOREP_USER_REGION_TYPE_COMMON); 15 | // Application main work LOOP 16 | for ( int itscf = 0; itscf < nitscf_; itscf++ ) 17 | { 18 | ... 19 | } 20 | // time call to mark END of work - called from only one rank 21 | if(myRank == 0) 22 | SCOREP_USER_REGION_BY_NAME_END("TRACER_WallTime_MainLoop"); 23 | // use verbatim - mark end of trace loop 24 | SCOREP_USER_REGION_BY_NAME_END("TRACER_Loop"); 25 | SCOREP_RECORDING_OFF();//turn off recording again 26 | ... 27 | } -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # Configuration file for the Sphinx documentation builder. 4 | # 5 | # This file does only contain a selection of the most common options. For a 6 | # full list see the documentation: 7 | # http://www.sphinx-doc.org/en/master/config 8 | 9 | # -- Path setup -------------------------------------------------------------- 10 | 11 | # If extensions (or modules to document with autodoc) are in another directory, 12 | # add these directories to sys.path here. If the directory is relative to the 13 | # documentation root, use os.path.abspath to make it absolute, like shown here. 14 | # 15 | # import os 16 | # import sys 17 | # sys.path.insert(0, os.path.abspath('.')) 18 | 19 | 20 | # -- Project information ----------------------------------------------------- 21 | 22 | project = u'TraceR' 23 | copyright = u'2015, Lawrence Livermore National Security, LLC' 24 | author = u'Nikhil Jain, Bilge Acun, Abhinav Bhatele' 25 | 26 | # The short X.Y version 27 | version = u'2.1' 28 | # The full version, including alpha/beta/rc tags 29 | release = u'' 30 | 31 | 32 | # -- General configuration --------------------------------------------------- 33 | 34 | # If your documentation needs a minimal Sphinx version, state it here. 35 | # 36 | # needs_sphinx = '1.0' 37 | 38 | # Add any Sphinx extension module names here, as strings. They can be 39 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 40 | # ones. 41 | extensions = [ 42 | 'sphinx.ext.autodoc', 43 | 'sphinx.ext.todo', 44 | 'sphinx.ext.imgmath', 45 | 'sphinx.ext.viewcode', 46 | 'sphinx.ext.githubpages', 47 | 'breathe', 48 | 'exhale', 49 | ] 50 | 51 | # Configure Breathe and Exhale tools for Doxygen integration in Sphinx 52 | breathe_projects = { project : './_build/doxygen/xml' } 53 | breathe_default_project = project 54 | import textwrap 55 | exhale_args = { 56 | 'containmentFolder' : './autogen', 57 | 'rootFileName' : 'doxygen.rst', 58 | 'rootFileTitle' : 'Source Code Documentation', 59 | 'doxygenStripFromPath' : '..', 60 | 'createTreeView' : True, 61 | 'exhaleExecutesDoxygen' : True, 62 | 'exhaleDoxygenStdin' : textwrap.dedent(''' 63 | INPUT = ../tracer 64 | EXCLUDE_PATTERNS = *.d 65 | ''') 66 | } 67 | 68 | # Add any paths that contain templates here, relative to this directory. 69 | templates_path = ['_templates'] 70 | 71 | # The suffix(es) of source filenames. 72 | # You can specify multiple suffix as a list of string: 73 | # 74 | # source_suffix = ['.rst', '.md'] 75 | source_suffix = '.rst' 76 | 77 | # The master toctree document. 78 | master_doc = 'index' 79 | 80 | # The language for content autogenerated by Sphinx. Refer to documentation 81 | # for a list of supported languages. 82 | # 83 | # This is also used if you do content translation via gettext catalogs. 84 | # Usually you set "language" from the command line for these cases. 85 | language = None 86 | 87 | # List of patterns, relative to source directory, that match files and 88 | # directories to ignore when looking for source files. 89 | # This pattern also affects html_static_path and html_extra_path . 90 | exclude_patterns = [u'_build', 'Thumbs.db', '.DS_Store'] 91 | 92 | # The name of the Pygments (syntax highlighting) style to use. 93 | pygments_style = 'sphinx' 94 | 95 | 96 | # -- Options for HTML output ------------------------------------------------- 97 | 98 | # The theme to use for HTML and HTML Help pages. See the documentation for 99 | # a list of builtin themes. 100 | # 101 | html_theme = 'sphinx_rtd_theme' 102 | 103 | # Theme options are theme-specific and customize the look and feel of a theme 104 | # further. For a list of options available for each theme, see the 105 | # documentation. 106 | # 107 | html_theme_options = { 108 | 'canonical_url': '', 109 | 'analytics_id': '', 110 | 'logo_only': False, 111 | 'display_version': True, 112 | 'prev_next_buttons_location': 'bottom', 113 | 'style_external_links': False, 114 | 'vcs_pageview_mode': '', 115 | # Toc options 116 | 'collapse_navigation': True, 117 | 'sticky_navigation': True, 118 | 'navigation_depth': 4, 119 | 'includehidden': True, 120 | 'titles_only': False 121 | } 122 | 123 | # Add any paths that contain custom static files (such as style sheets) here, 124 | # relative to this directory. They are copied after the builtin static files, 125 | # so a file named "default.css" will overwrite the builtin "default.css". 126 | html_static_path = ['_static'] 127 | 128 | # Custom sidebar templates, must be a dictionary that maps document names 129 | # to template names. 130 | # 131 | # The default sidebars (for documents that don't match any pattern) are 132 | # defined by theme itself. Builtin themes are using these templates by 133 | # default: ``['localtoc.html', 'relations.html', 'sourcelink.html', 134 | # 'searchbox.html']``. 135 | # 136 | # html_sidebars = {} 137 | 138 | 139 | # -- Options for HTMLHelp output --------------------------------------------- 140 | 141 | # Output file base name for HTML help builder. 142 | htmlhelp_basename = 'TraceRdoc' 143 | 144 | 145 | # -- Options for LaTeX output ------------------------------------------------ 146 | 147 | latex_elements = { 148 | # The paper size ('letterpaper' or 'a4paper'). 149 | # 150 | # 'papersize': 'letterpaper', 151 | 152 | # The font size ('10pt', '11pt' or '12pt'). 153 | # 154 | # 'pointsize': '10pt', 155 | 156 | # Additional stuff for the LaTeX preamble. 157 | # 158 | # 'preamble': '', 159 | 160 | # Latex figure (float) alignment 161 | # 162 | # 'figure_align': 'htbp', 163 | } 164 | 165 | # Grouping the document tree into LaTeX files. List of tuples 166 | # (source start file, target name, title, 167 | # author, documentclass [howto, manual, or own class]). 168 | latex_documents = [ 169 | (master_doc, 'TraceR.tex', u'TraceR Documentation', 170 | u'Nikhil Jain, Bilge Acun, Abhinav Bhatele', 'manual'), 171 | ] 172 | 173 | 174 | # -- Options for manual page output ------------------------------------------ 175 | 176 | # One entry per manual page. List of tuples 177 | # (source start file, name, description, authors, manual section). 178 | man_pages = [ 179 | (master_doc, 'tracer', u'TraceR Documentation', 180 | [author], 1) 181 | ] 182 | 183 | 184 | # -- Options for Texinfo output ---------------------------------------------- 185 | 186 | # Grouping the document tree into Texinfo files. List of tuples 187 | # (source start file, target name, title, author, 188 | # dir menu entry, description, category) 189 | texinfo_documents = [ 190 | (master_doc, 'TraceR', u'TraceR Documentation', 191 | author, 'TraceR', 'One line description of project.', 192 | 'Miscellaneous'), 193 | ] 194 | 195 | 196 | # -- Extension configuration ------------------------------------------------- 197 | 198 | # -- Options for todo extension ---------------------------------------------- 199 | 200 | # If true, `todo` and `todoList` produce output, else they produce nothing. 201 | todo_include_todos = False 202 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. TraceR documentation master file, created by 2 | sphinx-quickstart on Mon Aug 6 16:00:19 2018. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | TraceR documentation! 7 | ================================== 8 | 9 | TraceR is a trace replay tool built upon the ROSS-based CODES simulation 10 | framework. TraceR can be used for predicting network performance and 11 | understanding network behavior by simulating messaging in High Performance 12 | Computing applications on interconnection networks. 13 | 14 | .. toctree:: 15 | :maxdepth: 2 16 | :caption: Contents: 17 | 18 | install 19 | userguide 20 | tutorial 21 | autogen/doxygen 22 | 23 | 24 | Indices and tables 25 | ================== 26 | 27 | * :ref:`genindex` 28 | * :ref:`modindex` 29 | * :ref:`search` 30 | -------------------------------------------------------------------------------- /docs/install.rst: -------------------------------------------------------------------------------- 1 | Download and Install 2 | ==================== 3 | 4 | TraceR can be downloaded from `GitHub `_. 5 | 6 | Dependencies 7 | ------------ 8 | 9 | TraceR depends on `CODES `_ and `ROSS `_. 10 | 11 | Build 12 | ----- 13 | 14 | There are several ways to build TraceR. 15 | 16 | 1. Use `spack `_ to build TraceR and its dependencies:: 17 | 18 | spack install tracer 19 | 20 | 2. Build TraceR and its dependencies manually: 21 | 22 | * Download and install ROSS and CODES. Set the appropriate paths: ROSS_DIR, and 23 | CODES_DIR in tracer/Makefile.common. 24 | * Pick between the two trace formats supported by TraceR: OTF2 or BigSim, and 25 | accordingly build the OTF2 or Charm++ library. If using OTF2 traces 26 | (default), set SELECT_TRACE = -DTRACER_OTF_TRACES=1, and ensure that 27 | otf2-config is in your PATH. If using BigSim traces, set SELECT_TRACE = 28 | -DTRACER_BIGSIM_TRACES=1, and set CHARMPATH to the Charm++ installation in 29 | tracer/Makefile.common. 30 | * Set the ARCH variable in tracer/Makefile.common or alternatively set the CXX 31 | and ARCH_FLAGS variables. Then type:: 32 | 33 | cd tracer 34 | make 35 | 36 | Trace Formats 37 | ^^^^^^^^^^^^^ 38 | 39 | TraceR supports two different trace formats as input. For each format, you need to build additional software as explained below. 40 | 41 | 1. Score-P's OTF2 format (default): To use OTF2 traces, you need to download and build the `OTF2 `_ library. 42 | 2. AMPI-based BigSim format: To use BigSim traces as input to TraceR, you need to download and build `Charm++ `_. 43 | 44 | The instructions to build Charm++ are in the `Charm++ manual 45 | `_. You should use 46 | the "charm++" target and pass "bigemulator" as a build option. 47 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | breathe 2 | exhale 3 | -------------------------------------------------------------------------------- /docs/tutorial.rst: -------------------------------------------------------------------------------- 1 | Tutorial 2 | ======== 3 | -------------------------------------------------------------------------------- /examples/conf/dfly.conf: -------------------------------------------------------------------------------- 1 | LPGROUPS 2 | { 3 | MODELNET_GRP 4 | { 5 | repetitions="264"; 6 | server="4"; 7 | modelnet_dragonfly="4"; 8 | modelnet_dragonfly_router="1"; 9 | } 10 | } 11 | PARAMS 12 | { 13 | message_size="512"; #ROSS message size; do no modify 14 | packet_size="8192"; #in bytes 15 | chunk_size="8192"; #keep same as packet_size 16 | 17 | #NIC/node params 18 | modelnet_scheduler="fcfs"; #can be round-robin 19 | nic_delay="400"; #in ns 20 | nic_seq_delay="100"; #in ns 21 | num_injection_queues="1"; 22 | node_copy_queues="4"; 23 | intra_bandwidth="30"; #in GB/s 24 | 25 | #dfly options 26 | modelnet_order=( "dragonfly", "dragonfly_router" ); 27 | router_delay="50"; 28 | num_routers="8"; 29 | routing="nonminimal"; 30 | 31 | #network params 32 | local_bandwidth="5.25"; 33 | global_bandwidth="4.7"; 34 | cn_bandwidth="24"; #in GB/s 35 | local_vc_size="16384"; 36 | global_vc_size="32768"; 37 | cn_vc_size="65536"; #in bytes 38 | 39 | #MPI params 40 | soft_delay="200"; #in ns 41 | rdma_delay="1000"; #in ns 42 | eager_limit="64000"; #in bytes 43 | copy_per_byte="0.01"; #in ns 44 | node_eager_limit="64000"; #in bytes 45 | } 46 | -------------------------------------------------------------------------------- /examples/conf/fattree.conf: -------------------------------------------------------------------------------- 1 | LPGROUPS 2 | { 3 | MODELNET_GRP 4 | { 5 | repetitions="16"; 6 | server="8"; 7 | modelnet_fattree="4"; 8 | fattree_switch="3"; 9 | } 10 | } 11 | PARAMS 12 | { 13 | message_size="512"; #ROSS message size; do no modify 14 | packet_size="8192"; #in bytes 15 | chunk_size="8192"; #keep same as packet_size 16 | 17 | #NIC/node params 18 | modelnet_scheduler="fcfs"; #can be round-robin 19 | nic_delay="400"; #in ns 20 | nic_seq_delay="100"; #in ns 21 | num_injection_queues="1"; 22 | node_copy_queues="4"; 23 | intra_bandwidth="30"; #in GB/s 24 | 25 | #fat-tree parameters 26 | modelnet_order=( "fattree" ); 27 | ft_type="0"; 28 | num_levels="3"; 29 | tapering="1"; 30 | num_rails="1"; 31 | switch_count="16"; 32 | switch_radix="8"; 33 | router_delay="60"; 34 | rail_select="dedicated"; 35 | rail_select_limit="8192"; #in bytes 36 | routing="adaptive"; 37 | routing_folder="full_routes"; 38 | dot_file="ftree"; 39 | dump_topo="0"; 40 | 41 | #network params 42 | link_bandwidth="11.9"; #in GB/s 43 | cn_bandwidth="24"; #in GB/s 44 | vc_size="65536"; #in bytes 45 | cn_vc_size="65536"; #in bytes 46 | 47 | #MPI params 48 | soft_delay="200"; #in ns 49 | rdma_delay="1000"; #in ns 50 | eager_limit="64000"; #in bytes 51 | copy_per_byte="0.01"; #in ns 52 | node_eager_limit="64000"; #in bytes 53 | } 54 | -------------------------------------------------------------------------------- /examples/conf/hypreX_expressMesh.conf: -------------------------------------------------------------------------------- 1 | LPGROUPS 2 | { 3 | MODELNET_GRP 4 | { 5 | repetitions="160"; 6 | server="1"; 7 | modelnet_express_mesh="1"; 8 | modelnet_express_mesh_router="1"; 9 | } 10 | } 11 | PARAMS 12 | { 13 | message_size="512"; #ROSS message size; do no modify 14 | packet_size="8192"; #in bytes 15 | chunk_size="8192"; #keep same as packet_size 16 | 17 | #NIC/node params 18 | modelnet_scheduler="fcfs"; #can be round-robin 19 | nic_delay="400"; #in ns 20 | nic_seq_delay="100"; #in ns 21 | num_injection_queues="1"; 22 | node_copy_queues="4"; 23 | intra_bandwidth="30"; #in GB/s 24 | 25 | #express-mesh/hypreX parameters 26 | modelnet_order=( "express_mesh", "express_mesh_router" ); 27 | router_delay="30"; 28 | n_dims="3"; 29 | dim_length="4,5,8"; 30 | gap="1"; 31 | num_cn="1"; 32 | routing="static"; 33 | 34 | #network params 35 | link_bandwidth="11.9"; #in GB/s 36 | cn_bandwidth="24"; #in GB/s 37 | vc_size="65536"; #in bytes 38 | cn_vc_size="65536"; #in bytes 39 | 40 | #MPI params 41 | soft_delay="200"; #in ns 42 | rdma_delay="1000"; #in ns 43 | eager_limit="64000"; #in bytes 44 | copy_per_byte="0.01"; #in ns 45 | node_eager_limit="64000"; #in bytes 46 | } 47 | -------------------------------------------------------------------------------- /examples/conf/torus.conf: -------------------------------------------------------------------------------- 1 | LPGROUPS 2 | { 3 | MODELNET_GRP 4 | { 5 | repetitions="160"; 6 | server="2"; 7 | modelnet_torus="1"; 8 | } 9 | } 10 | 11 | PARAMS 12 | { 13 | message_size="512"; #ROSS message size; do no modify 14 | packet_size="8192"; #in bytes 15 | chunk_size="8192"; #keep same as packet_size 16 | 17 | #NIC/node params 18 | modelnet_scheduler="fcfs"; #can be round-robin 19 | nic_delay="400"; #in ns 20 | nic_seq_delay="100"; #in ns 21 | num_injection_queues="1"; 22 | node_copy_queues="4"; 23 | intra_bandwidth="30"; #in GB/s 24 | 25 | #torus params 26 | modelnet_order=( "torus" ); 27 | router_delay="30"; 28 | n_dims="3"; 29 | dim_length="4,5,8"; 30 | routing="adaptive"; 31 | 32 | #network params 33 | link_bandwidth="11.9"; #in GB/s 34 | cn_bandwidth="24"; #in GB/s 35 | buffer_size="65536"; 36 | 37 | #MPI params 38 | soft_delay="200"; #in ns 39 | rdma_delay="1000"; #in ns 40 | eager_limit="64000"; #in bytes 41 | copy_per_byte="0.01"; #in ns 42 | node_eager_limit="64000"; #in bytes 43 | } 44 | -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/Makefile: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | # Produced at the Lawrence Livermore National Laboratory. 4 | # 5 | # Written by: 6 | # Nikhil Jain 7 | # Bilge Acun 8 | # Abhinav Bhatele 9 | # 10 | # LLNL-CODE-740483. All rights reserved. 11 | # 12 | # This file is part of TraceR. For details, see: 13 | # https://github.com/LLNL/TraceR 14 | # Please also read the LICENSE file for the MIT License notice. 15 | ############################################################################## 16 | 17 | CC = /scratch/nikhil/charm-master/netlrts-linux-x86_64-bigemulator/bin/ampiCC -g 18 | 19 | all: jacobi2d 20 | 21 | jacobi2d: jacobi2d.C 22 | $(CC) -o jacobi2d $< 23 | 24 | trace: jacobi2d.C 25 | $(CC) -o jacobi2d.trace $< $(CFLAGS) $(TRACE_LIB) 26 | 27 | scal: jacobi2d.C 28 | $(PREP) $(CC) -o jacobi2d.scal $< $(CFLAGS) $(SCALIB) 29 | 30 | clean: 31 | rm -f *.o jacobi2d charmrun 32 | -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/global_map.bin: -------------------------------------------------------------------------------- 1 |  2 | 3 |  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@ABCDEFGHI J 4 | K L M NOPQRSTUVWXYZ[\]^_ -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/jacobi2d.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include "mpi.h" 18 | #include 19 | #include 20 | #include 21 | #include 22 | 23 | /* We want to wrap entries around, and because mod operator % 24 | * sometimes misbehaves on negative values. -1 maps to the highest value.*/ 25 | #define DO_COMM 1 26 | #define wrap_x(a) (((a)+num_blocks_x)%num_blocks_x) 27 | #define wrap_y(a) (((a)+num_blocks_y)%num_blocks_y) 28 | #define calc_pe(a,b) ((a)*num_blocks_y+(b)) 29 | 30 | #define MAX_ITER 1 31 | #define LEFT 1 32 | #define RIGHT 2 33 | #define TOP 3 34 | #define BOTTOM 4 35 | 36 | 37 | int main(int argc, char **argv) { 38 | int myRank, numPes; 39 | 40 | MPI_Init(&argc, &argv); 41 | MPI_Comm_size(MPI_COMM_WORLD, &numPes); 42 | MPI_Comm_rank(MPI_COMM_WORLD, &myRank); 43 | MPI_Request req[4]; 44 | MPI_Status status[4]; 45 | 46 | int blockDimX, blockDimY, arrayDimX, arrayDimY; 47 | int noBarrier = 0; 48 | 49 | if (argc != 4 && argc != 6) { 50 | printf("%s [array_size] [block_size] +[no]barrier\n", argv[0]); 51 | printf("%s [array_size_X] [array_size_Y] [block_size_X] [block_size_Y] +[no]barrier\n", argv[0]); 52 | MPI_Abort(MPI_COMM_WORLD, -1); 53 | } 54 | 55 | if(argc == 4) { 56 | arrayDimY = arrayDimX = atoi(argv[1]); 57 | blockDimY = blockDimX = atoi(argv[2]); 58 | if(strcasecmp(argv[3], "+nobarrier") == 0) 59 | noBarrier = 1; 60 | else 61 | noBarrier = 0; 62 | if(noBarrier && myRank==0) printf("\nSTENCIL COMPUTATION WITH NO BARRIERS\n"); 63 | } 64 | else { 65 | arrayDimX = atoi(argv[1]); 66 | arrayDimY = atoi(argv[2]); 67 | blockDimX = atoi(argv[3]); 68 | blockDimY = atoi(argv[4]); 69 | if(strcasecmp(argv[5], "+nobarrier") == 0) 70 | noBarrier = 1; 71 | else 72 | noBarrier = 0; 73 | if(noBarrier && myRank==0) printf("\nSTENCIL COMPUTATION WITH NO BARRIERS\n"); 74 | } 75 | 76 | if (arrayDimX < blockDimX || arrayDimX % blockDimX != 0) { 77 | printf("array_size_X mod block_size_X != 0!\n"); 78 | MPI_Abort(MPI_COMM_WORLD, -1); 79 | } 80 | if (arrayDimY < blockDimY || arrayDimY % blockDimY != 0) { 81 | printf("array_size_Y mod block_size_Y != 0!\n"); 82 | MPI_Abort(MPI_COMM_WORLD, -1); 83 | } 84 | 85 | int num_blocks_x = arrayDimX / blockDimX; 86 | int num_blocks_y = arrayDimY / blockDimY; 87 | 88 | int iterations = 0, i, j; 89 | double error = 1.0, max_error = 0.0; 90 | 91 | if(myRank == 0) { 92 | printf("Running Jacobi on %d processors with (%d, %d) elements\n", numPes, num_blocks_x, num_blocks_y); 93 | printf("Array Dimensions: %d %d\n", arrayDimX, arrayDimY); 94 | printf("Block Dimensions: %d %d\n", blockDimX, blockDimY); 95 | } 96 | 97 | double *dataX = new double[blockDimX]; 98 | double *dataY = new double[blockDimY]; 99 | 100 | int myRow = myRank / num_blocks_y; 101 | int myCol = myRank % num_blocks_y; 102 | 103 | AMPI_Set_startevent(MPI_COMM_WORLD); 104 | for(; iterations < 5; iterations++) { 105 | #if DO_COMM 106 | /* Receive my right, left, bottom and top edge */ 107 | MPI_Irecv(dataX, blockDimX, MPI_DOUBLE, calc_pe(myRow, wrap_y(myCol+1)), RIGHT, MPI_COMM_WORLD, &req[RIGHT-1]); 108 | MPI_Irecv(dataX, blockDimX, MPI_DOUBLE, calc_pe(myRow, wrap_y(myCol-1)), LEFT, MPI_COMM_WORLD, &req[LEFT-1]); 109 | MPI_Irecv(dataY, blockDimY, MPI_DOUBLE, calc_pe(wrap_x(myRow+1), myCol), BOTTOM, MPI_COMM_WORLD, &req[BOTTOM-1]); 110 | MPI_Irecv(dataY, blockDimY, MPI_DOUBLE, calc_pe(wrap_x(myRow-1), myCol), TOP, MPI_COMM_WORLD, &req[TOP-1]); 111 | 112 | 113 | /* Send my left, right, top and bottom edge */ 114 | MPI_Send(dataX, blockDimX, MPI_DOUBLE, calc_pe(myRow, wrap_y(myCol-1)), RIGHT, MPI_COMM_WORLD); 115 | MPI_Send(dataX, blockDimX, MPI_DOUBLE, calc_pe(myRow, wrap_y(myCol+1)), LEFT, MPI_COMM_WORLD); 116 | MPI_Send(dataY, blockDimY, MPI_DOUBLE, calc_pe(wrap_x(myRow-1), myCol), BOTTOM, MPI_COMM_WORLD); 117 | MPI_Send(dataY, blockDimY, MPI_DOUBLE, calc_pe(wrap_x(myRow+1), myCol), TOP, MPI_COMM_WORLD); 118 | 119 | MPI_Waitall(4, req, status); 120 | #endif 121 | 122 | #if !DO_COMM 123 | printf("%d %d %zd\n", myRank, calc_pe(myRow, wrap_y(myCol-1)), sizeof(double)*blockDimX); 124 | printf("%d %d %zd\n", myRank, calc_pe(myRow, wrap_y(myCol+1)), sizeof(double)*blockDimX); 125 | printf("%d %d %zd\n", myRank, calc_pe(wrap_x(myRow-1), myCol), sizeof(double)*blockDimY); 126 | printf("%d %d %zd\n", myRank, calc_pe(wrap_x(myRow+1), myCol), sizeof(double)*blockDimY); 127 | #endif 128 | } /* end of while loop */ 129 | 130 | if(myRank == 0) { 131 | printf("Completed %d iterations\n", iterations); 132 | } 133 | 134 | MPI_Finalize(); 135 | return 0; 136 | } /* end function main */ 137 | 138 | -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/job0: -------------------------------------------------------------------------------- 1 |  2 |  !"#$%&'()*+,-./0123456789:;<=>? -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/job1: -------------------------------------------------------------------------------- 1 | @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ0/bgTrace: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ0/bgTrace -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ0/bgTrace0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ0/bgTrace0 -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ0/bgTrace1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ0/bgTrace1 -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ0/bgTrace2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ0/bgTrace2 -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ0/bgTrace3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ0/bgTrace3 -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ0/bgTrace4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ0/bgTrace4 -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ0/bgTrace5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ0/bgTrace5 -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ0/bgTrace6: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ0/bgTrace6 -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ0/bgTrace7: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ0/bgTrace7 -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ1/bgTrace: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ1/bgTrace -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ1/bgTrace0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ1/bgTrace0 -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ1/bgTrace1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ1/bgTrace1 -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ1/bgTrace2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ1/bgTrace2 -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/traceJ1/bgTrace3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/jacobi2d-bigsim/traceJ1/bgTrace3 -------------------------------------------------------------------------------- /examples/jacobi2d-bigsim/tracer_config: -------------------------------------------------------------------------------- 1 | global_map.bin 2 | 2 3 | traceJ0 job0 64 1 4 | traceJ1 job1 32 1 5 | -------------------------------------------------------------------------------- /examples/stencil4d-otf/Makefile: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | # Produced at the Lawrence Livermore National Laboratory. 4 | # 5 | # Written by: 6 | # Nikhil Jain 7 | # Bilge Acun 8 | # Abhinav Bhatele 9 | # 10 | # LLNL-CODE-740483. All rights reserved. 11 | # 12 | # This file is part of TraceR. For details, see: 13 | # https://github.com/LLNL/TraceR 14 | # Please also read the LICENSE file for the MIT License notice. 15 | ############################################################################## 16 | 17 | CC = scorep --user --nocompiler --noopenmp --nopomp --nocuda --noopenacc --noopencl --nomemory mpicxx 18 | OPTS = -O2 -DWRITE_OTF2_TRACE=1 -I${SCOREP_INSTALL}/include -I${SCOREP_INSTALL}/include/scorep -DSCOREP_USER_ENABLE 19 | 20 | all: stencil4d 21 | 22 | stencil4d: stencil4d.C 23 | $(CC) $(OPTS) $(INCS_DEF) -o $@ $< 24 | 25 | clean: 26 | rm -f stencil4d 27 | -------------------------------------------------------------------------------- /examples/stencil4d-otf/global_map.bin: -------------------------------------------------------------------------------- 1 |  2 | 3 |  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@ABCDEFGHI J 4 | K L M NOPQRSTUVWXYZ[\]^_ -------------------------------------------------------------------------------- /examples/stencil4d-otf/job0: -------------------------------------------------------------------------------- 1 |  2 |  !"#$%&'()*+,-./0123456789:;<=>? -------------------------------------------------------------------------------- /examples/stencil4d-otf/job1: -------------------------------------------------------------------------------- 1 | @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ -------------------------------------------------------------------------------- /examples/stencil4d-otf/tracer_config: -------------------------------------------------------------------------------- 1 | global_map.bin 2 | 2 3 | traces-64/traces.otf2 job0 64 1 4 | traces-32/traces.otf2 job1 32 1 5 | -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/scorep.cfg: -------------------------------------------------------------------------------- 1 | SCOREP_ENABLE_PROFILING=false 2 | SCOREP_ENABLE_TRACING=true 3 | SCOREP_ENABLE_UNWINDING=false 4 | SCOREP_VERBOSE=false 5 | SCOREP_TOTAL_MEMORY=16000K 6 | SCOREP_PAGE_SIZE=8K 7 | SCOREP_EXPERIMENT_DIRECTORY='' 8 | SCOREP_OVERWRITE_EXPERIMENT_DIRECTORY=true 9 | SCOREP_MACHINE_NAME='Linux' 10 | SCOREP_TIMER='tsc' 11 | SCOREP_PROFILING_TASK_EXCHANGE_NUM=1K 12 | SCOREP_PROFILING_MAX_CALLPATH_DEPTH=30 13 | SCOREP_PROFILING_BASE_NAME='profile' 14 | SCOREP_PROFILING_FORMAT='cube4' 15 | SCOREP_PROFILING_ENABLE_CLUSTERING=true 16 | SCOREP_PROFILING_CLUSTER_COUNT=64 17 | SCOREP_PROFILING_CLUSTERING_MODE='none' 18 | SCOREP_PROFILING_CLUSTERED_REGION='' 19 | SCOREP_PROFILING_ENABLE_CORE_FILES=false 20 | SCOREP_TRACING_USE_SION=false 21 | SCOREP_TRACING_MAX_PROCS_PER_SION_FILE=1K 22 | SCOREP_TRACING_COMPRESS=false 23 | SCOREP_TRACING_CONVERT_CALLING_CONTEXT_EVENTS=false 24 | SCOREP_FILTERING_FILE='' 25 | SCOREP_METRIC_PAPI='' 26 | SCOREP_METRIC_PAPI_PER_PROCESS='' 27 | SCOREP_METRIC_PAPI_SEP=',' 28 | SCOREP_METRIC_RUSAGE='' 29 | SCOREP_METRIC_RUSAGE_PER_PROCESS='' 30 | SCOREP_METRIC_RUSAGE_SEP=',' 31 | SCOREP_METRIC_PLUGINS='' 32 | SCOREP_METRIC_PLUGINS_SEP=',' 33 | SCOREP_METRIC_PERF='' 34 | SCOREP_METRIC_PERF_PER_PROCESS='' 35 | SCOREP_METRIC_PERF_SEP=',' 36 | SCOREP_SAMPLING_EVENTS='perf_cycles@10000000' 37 | SCOREP_SAMPLING_SEP=',' 38 | SCOREP_SELECTIVE_CONFIG_FILE='' 39 | SCOREP_MPI_MAX_COMMUNICATORS=50 40 | SCOREP_MPI_MAX_WINDOWS=50 41 | SCOREP_MPI_MAX_ACCESS_EPOCHS=50 42 | SCOREP_MPI_MAX_GROUPS=50 43 | SCOREP_MPI_ENABLE_GROUPS='coll','env','p2p','xnonblock' 44 | SCOREP_MPI_MEMORY_RECORDING=false 45 | SCOREP_MPI_ONLINE_ANALYSIS=false 46 | -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces.otf2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces.otf2 -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/0.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/0.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/0.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/0.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/1.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/1.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/1.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/1.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/10.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/10.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/10.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/10.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/11.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/11.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/11.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/11.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/12.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/12.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/12.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/12.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/13.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/13.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/13.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/13.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/14.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/14.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/14.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/14.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/15.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/15.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/15.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/15.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/16.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/16.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/16.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/16.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/17.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/17.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/17.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/17.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/18.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/18.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/18.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/18.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/19.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/19.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/19.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/19.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/2.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/2.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/2.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/2.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/20.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/20.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/20.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/20.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/21.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/21.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/21.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/21.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/22.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/22.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/22.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/22.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/23.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/23.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/23.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/23.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/24.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/24.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/24.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/24.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/25.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/25.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/25.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/25.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/26.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/26.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/26.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/26.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/27.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/27.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/27.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/27.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/28.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/28.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/28.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/28.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/29.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/29.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/29.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/29.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/3.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/3.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/3.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/3.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/30.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/30.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/30.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/30.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/31.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/31.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/31.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/31.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/4.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/4.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/4.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/4.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/5.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/5.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/5.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/5.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/6.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/6.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/6.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/6.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/7.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/7.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/7.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/7.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/8.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/8.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/8.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/8.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/9.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/9.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-32/traces/9.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-32/traces/9.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/scorep.cfg: -------------------------------------------------------------------------------- 1 | SCOREP_ENABLE_PROFILING=false 2 | SCOREP_ENABLE_TRACING=true 3 | SCOREP_ENABLE_UNWINDING=false 4 | SCOREP_VERBOSE=false 5 | SCOREP_TOTAL_MEMORY=16000K 6 | SCOREP_PAGE_SIZE=8K 7 | SCOREP_EXPERIMENT_DIRECTORY='' 8 | SCOREP_OVERWRITE_EXPERIMENT_DIRECTORY=true 9 | SCOREP_MACHINE_NAME='Linux' 10 | SCOREP_TIMER='tsc' 11 | SCOREP_PROFILING_TASK_EXCHANGE_NUM=1K 12 | SCOREP_PROFILING_MAX_CALLPATH_DEPTH=30 13 | SCOREP_PROFILING_BASE_NAME='profile' 14 | SCOREP_PROFILING_FORMAT='cube4' 15 | SCOREP_PROFILING_ENABLE_CLUSTERING=true 16 | SCOREP_PROFILING_CLUSTER_COUNT=64 17 | SCOREP_PROFILING_CLUSTERING_MODE='none' 18 | SCOREP_PROFILING_CLUSTERED_REGION='' 19 | SCOREP_PROFILING_ENABLE_CORE_FILES=false 20 | SCOREP_TRACING_USE_SION=false 21 | SCOREP_TRACING_MAX_PROCS_PER_SION_FILE=1K 22 | SCOREP_TRACING_COMPRESS=false 23 | SCOREP_TRACING_CONVERT_CALLING_CONTEXT_EVENTS=false 24 | SCOREP_FILTERING_FILE='' 25 | SCOREP_METRIC_PAPI='' 26 | SCOREP_METRIC_PAPI_PER_PROCESS='' 27 | SCOREP_METRIC_PAPI_SEP=',' 28 | SCOREP_METRIC_RUSAGE='' 29 | SCOREP_METRIC_RUSAGE_PER_PROCESS='' 30 | SCOREP_METRIC_RUSAGE_SEP=',' 31 | SCOREP_METRIC_PLUGINS='' 32 | SCOREP_METRIC_PLUGINS_SEP=',' 33 | SCOREP_METRIC_PERF='' 34 | SCOREP_METRIC_PERF_PER_PROCESS='' 35 | SCOREP_METRIC_PERF_SEP=',' 36 | SCOREP_SAMPLING_EVENTS='perf_cycles@10000000' 37 | SCOREP_SAMPLING_SEP=',' 38 | SCOREP_SELECTIVE_CONFIG_FILE='' 39 | SCOREP_MPI_MAX_COMMUNICATORS=50 40 | SCOREP_MPI_MAX_WINDOWS=50 41 | SCOREP_MPI_MAX_ACCESS_EPOCHS=50 42 | SCOREP_MPI_MAX_GROUPS=50 43 | SCOREP_MPI_ENABLE_GROUPS='coll','env','p2p','xnonblock' 44 | SCOREP_MPI_MEMORY_RECORDING=false 45 | SCOREP_MPI_ONLINE_ANALYSIS=false 46 | -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces.otf2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces.otf2 -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/0.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/0.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/0.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/0.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/1.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/1.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/1.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/1.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/10.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/10.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/10.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/10.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/11.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/11.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/11.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/11.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/12.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/12.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/12.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/12.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/13.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/13.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/13.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/13.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/14.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/14.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/14.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/14.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/15.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/15.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/15.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/15.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/16.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/16.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/16.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/16.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/17.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/17.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/17.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/17.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/18.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/18.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/18.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/18.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/19.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/19.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/19.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/19.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/2.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/2.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/2.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/2.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/20.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/20.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/20.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/20.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/21.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/21.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/21.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/21.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/22.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/22.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/22.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/22.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/23.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/23.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/23.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/23.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/24.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/24.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/24.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/24.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/25.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/25.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/25.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/25.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/26.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/26.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/26.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/26.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/27.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/27.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/27.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/27.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/28.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/28.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/28.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/28.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/29.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/29.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/29.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/29.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/3.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/3.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/3.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/3.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/30.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/30.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/30.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/30.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/31.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/31.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/31.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/31.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/32.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/32.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/32.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/32.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/33.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/33.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/33.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/33.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/34.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/34.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/34.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/34.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/35.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/35.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/35.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/35.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/36.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/36.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/36.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/36.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/37.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/37.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/37.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/37.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/38.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/38.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/38.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/38.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/39.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/39.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/39.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/39.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/4.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/4.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/4.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/4.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/40.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/40.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/40.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/40.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/41.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/41.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/41.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/41.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/42.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/42.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/42.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/42.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/43.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/43.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/43.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/43.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/44.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/44.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/44.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/44.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/45.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/45.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/45.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/45.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/46.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/46.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/46.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/46.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/47.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/47.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/47.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/47.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/48.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/48.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/48.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/48.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/49.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/49.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/49.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/49.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/5.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/5.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/5.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/5.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/50.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/50.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/50.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/50.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/51.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/51.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/51.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/51.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/52.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/52.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/52.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/52.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/53.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/53.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/53.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/53.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/54.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/54.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/54.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/54.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/55.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/55.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/55.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/55.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/56.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/56.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/56.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/56.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/57.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/57.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/57.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/57.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/58.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/58.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/58.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/58.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/59.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/59.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/59.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/59.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/6.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/6.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/6.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/6.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/60.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/60.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/60.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/60.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/61.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/61.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/61.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/61.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/62.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/62.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/62.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/62.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/63.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/63.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/63.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/63.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/7.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/7.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/7.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/7.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/8.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/8.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/8.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/8.evt -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/9.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/9.def -------------------------------------------------------------------------------- /examples/stencil4d-otf/traces-64/traces/9.evt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hpcgroup/TraceR/5152e57c7b3dad257a062626ada99d9edf983cc6/examples/stencil4d-otf/traces-64/traces/9.evt -------------------------------------------------------------------------------- /tracer/Makefile: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | # Produced at the Lawrence Livermore National Laboratory. 4 | # 5 | # Written by: 6 | # Nikhil Jain 7 | # Bilge Acun 8 | # Abhinav Bhatele 9 | # 10 | # LLNL-CODE-740483. All rights reserved. 11 | # 12 | # This file is part of TraceR. For details, see: 13 | # https://github.com/LLNL/TraceR 14 | # Please also read the LICENSE file for the MIT License notice. 15 | ############################################################################## 16 | 17 | include Makefile.common 18 | 19 | TRACER_LDADD = reader/CWrapper.o reader/TraceReader.o reader/otf2_reader.o \ 20 | elements/PE.o elements/Task.o elements/MsgEntry.o 21 | 22 | all: traceR 23 | .PHONY: components install 24 | 25 | PREFIX = .. 26 | 27 | SRCS = p2p-events.C coll-events.C tracer-driver.C 28 | OBJS = ${SRCS:.C=.o} 29 | 30 | traceR: ${OBJS} components 31 | ${CXX} ${LDFLAGS} ${OBJS} -o $@ ${TRACER_LDADD} ${LIBS} 32 | 33 | %.o: %.C 34 | ${CXX} ${CXXFLAGS} -c $< -o $@ 35 | 36 | components: 37 | cd reader; make; 38 | cd elements; make; 39 | 40 | install: traceR 41 | mkdir -p $(PREFIX)/bin 42 | cp traceR $(PREFIX)/bin 43 | 44 | clean: 45 | rm -rf *.o traceR 46 | cd reader; make clean; 47 | cd elements; make clean; 48 | -------------------------------------------------------------------------------- /tracer/Makefile.common: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | # Produced at the Lawrence Livermore National Laboratory. 4 | # 5 | # Written by: 6 | # Nikhil Jain 7 | # Bilge Acun 8 | # Abhinav Bhatele 9 | # 10 | # LLNL-CODE-740483. All rights reserved. 11 | # 12 | # This file is part of TraceR. For details, see: 13 | # https://github.com/LLNL/TraceR 14 | # Please also read the LICENSE file for the MIT License notice. 15 | ############################################################################## 16 | 17 | ifeq (${ARCH},bgq) 18 | CXX = mpixlcxx_r 19 | ARCH_FLAGS = -I/bgsys/drivers/ppcfloor 20 | else ifeq (${ARCH},cray) 21 | CXX = CC 22 | ARCH_FLAGS = -Wall 23 | else 24 | CXX = mpicxx 25 | ARCH_FLAGS = -Wall 26 | endif 27 | 28 | SEQ_CXX = ${CXX} 29 | 30 | # ROSS install directory 31 | ROSS_DIR = ${HOME}/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/ross-7.0.0 32 | 33 | # CODES install directory 34 | CODES_DIR = ${HOME}/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/codes-1.0.0 35 | CODES_LIBS = -L${CODES_DIR}/lib -Wl,-rpath,${CODES_DIR}/lib 36 | CODES_LIBS += -L${ROSS_DIR}/lib -Wl,-rpath,${ROSS_DIR}/lib 37 | CODES_LIBS += -lcodes -lROSS -lm 38 | 39 | CODES_CXXFLAGS = -I${CODES_DIR}/include -I${ROSS_DIR}/include 40 | 41 | 42 | # Use BigSim traces 43 | # SELECT_TRACE = -DTRACER_BIGSIM_TRACES=1 44 | # CHARMPATH = ${HOME}/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/charmpp-6.8.2 45 | 46 | # Use OTF2 traces 47 | SELECT_TRACE = -DTRACER_OTF_TRACES=1 48 | 49 | LDFLAGS = -g 50 | CXXFLAGS = -O2 -g ${ARCH_FLAGS} # -DNO_COMM_BUILD=1 51 | CXXFLAGS += -Ibigsim -I. 52 | CXXFLAGS += ${CODES_CXXFLAGS} ${SELECT_TRACE} 53 | 54 | ifeq (${SELECT_TRACE},-DTRACER_BIGSIM_TRACES=1) 55 | CHARM_LIBS = -L${CHARMPATH}/lib 56 | CHARM_LIBS += -lconv-bigsim-logs -lblue-standalone -lconv-util 57 | CXXFLAGS += -I${CHARMPATH}/include 58 | endif 59 | 60 | ifeq (${SELECT_TRACE},-DTRACER_OTF_TRACES=1) 61 | OTF_LIBS = `otf2-config --libs` 62 | CXXFLAGS += `otf2-config --cflags` 63 | LDFLAGS += `otf2-config --ldflags` 64 | endif 65 | 66 | LIBS = ${CODES_LIBS} ${CHARM_LIBS} ${OTF_LIBS} 67 | -------------------------------------------------------------------------------- /tracer/elements/Makefile: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | # Produced at the Lawrence Livermore National Laboratory. 4 | # 5 | # Written by: 6 | # Nikhil Jain 7 | # Bilge Acun 8 | # Abhinav Bhatele 9 | # 10 | # LLNL-CODE-740483. All rights reserved. 11 | # 12 | # This file is part of TraceR. For details, see: 13 | # https://github.com/LLNL/TraceR 14 | # Please also read the LICENSE file for the MIT License notice. 15 | ############################################################################## 16 | 17 | include ../Makefile.common 18 | 19 | RM := rm -rf 20 | 21 | CPP_SRCS = MsgEntry.C PE.C Task.C 22 | OBJS = MsgEntry.o PE.o Task.o 23 | CPP_DEPS = MsgEntry.d PE.d Task.d 24 | 25 | CXXFLAGS += -I../ 26 | 27 | elements: ${OBJS} 28 | 29 | %.o: %.C 30 | @echo 'Building file: $<' 31 | ifeq ($(ARCH),bgq) 32 | ${SEQ_CXX} ${CXXFLAGS} -c -fmessage-length=0 -M -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" 33 | else 34 | ${SEQ_CXX} ${CXXFLAGS} -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" 35 | endif 36 | @echo 'Finished building: $<' 37 | @echo ' ' 38 | 39 | clean: 40 | -$(RM) $(OBJS) $(C++_DEPS) $(CC_DEPS) $(CPP_DEPS) $(EXECUTABLES) $(CXX_DEPS) $(C_UPPER_DEPS) 41 | -@echo ' ' 42 | -------------------------------------------------------------------------------- /tracer/elements/MsgEntry.C: -------------------------------------------------------------------------------- 1 | ///////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include "MsgEntry.h" 18 | #include 19 | 20 | MsgEntry::MsgEntry() { 21 | node = INT_MIN; 22 | thread = INT_MIN; 23 | msgId.size = INT_MIN; 24 | } 25 | 26 | // From TCsim.C file: 27 | // Given the following inputs for destNode and destTID, we need to 28 | // send out messages either directly to the local node, or through 29 | // the network. To do this we have to specify correct information 30 | // about the destination BGproc and the source and destination 31 | // switch in the network 32 | 33 | // destNode destTID Behavior 34 | // ========== ========= ============================================== 35 | // -1 -1 Broadcast to ALL worker threads of ALL nodes 36 | // -2 -1 Multicast to all nodes given by the pe list in the task msg 37 | // -1 K SHOULD NOT HAPPEN??? 38 | // N -1 Send to ALL worker threads of node N 39 | // N K Send to worker thread K of node N 40 | // -100-N -1 Broadcast to all worker threads of all nodes 41 | // except for N (no worker threads of N receive) 42 | // -100-N K Broadcast to all worker threads of all nodes 43 | // except worker K of node N 44 | -------------------------------------------------------------------------------- /tracer/elements/MsgEntry.h: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #ifndef MSGENTRY_H_ 18 | #define MSGENTRY_H_ 19 | 20 | #ifdef __cplusplus 21 | #include 22 | #endif 23 | #include 24 | 25 | struct MsgID { 26 | int pe; 27 | int id; 28 | uint64_t size; 29 | #ifdef __cplusplus 30 | MsgID() : pe(INT_MIN), id(0), size(0) {} 31 | MsgID(int size_) : pe(INT_MIN), id(0), size(size_) {} 32 | MsgID(int size_, int pe_, int id_) : pe(pe_), id(id_), size(size_) {}; 33 | #endif 34 | #if TRACER_OTF_TRACES 35 | int comm, coll_type; 36 | int64_t seq; 37 | #endif 38 | }; 39 | 40 | struct MsgEntry { 41 | #ifdef __cplusplus 42 | MsgEntry(); 43 | #endif 44 | int node; // node number in global order 45 | int thread; 46 | MsgID msgId; 47 | }; 48 | 49 | #endif /* MSGENTRY_H_ */ 50 | -------------------------------------------------------------------------------- /tracer/elements/PE.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include "assert.h" 18 | #include "PE.h" 19 | #include 20 | #define MAX_LOGS 5000000 21 | extern JobInf *jobs; 22 | 23 | PE::PE() { 24 | busy = false; 25 | currentTask = 0; 26 | beforeTask = 0; 27 | currIter = 0; 28 | loop_start_task = -1; 29 | } 30 | 31 | PE::~PE() { 32 | msgBuffer.clear(); 33 | #if TRACER_BIGSIM_TRACES 34 | delete [] myTasks; 35 | delete [] msgDestLogs; 36 | #endif 37 | } 38 | 39 | void PE::mark_all_done(int iter, int tInd) { 40 | if(allMarked[iter]) return; 41 | for(int i = tInd + 1; i < tasksCount; i++) { 42 | taskStatus[iter][i] = true; 43 | } 44 | allMarked[iter] = true; 45 | } 46 | 47 | void PE::goToNextIter(int iter) { 48 | if(taskStatus[iter + 1] != NULL) return; 49 | if(iter >= 0) { 50 | printStat(iter); 51 | } 52 | iter++; 53 | taskStatus[iter] = new bool[tasksCount]; 54 | taskExecuted[iter] = new bool[tasksCount]; 55 | msgStatus[iter] = new bool[tasksCount]; 56 | 57 | for(int logInd = 0; logInd < tasksCount; logInd++) 58 | { 59 | taskStatus[iter][logInd] = false; 60 | taskExecuted[iter][logInd] = false; 61 | msgStatus[iter][logInd] = false; 62 | } 63 | #if TRACER_OTF_TRACES 64 | for(int logInd = 0; logInd < loop_start_task; logInd++) { 65 | taskStatus[iter][logInd] = true; 66 | } 67 | #endif 68 | } 69 | 70 | bool PE::noUnsatDep(int iter, int tInd) 71 | { 72 | #if TRACER_BIGSIM_TRACES 73 | for(int i=0; i::iterator it; 127 | int sPe = msgId->pe; 128 | int sEmPe = (sPe/numWth)%numEmPes; 129 | int smsgID = msgId->id; 130 | it = msgDestLogs[sEmPe].find(smsgID); 131 | if(it!=msgDestLogs[sEmPe].end()) 132 | return it->second; 133 | else return -1; 134 | } 135 | -------------------------------------------------------------------------------- /tracer/elements/PE.h: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #ifndef PE_H_ 18 | #define PE_H_ 19 | 20 | #include "MsgEntry.h" 21 | #include 22 | #include "Task.h" 23 | #include 24 | #include 25 | #include 26 | #include "reader/datatypes.h" 27 | 28 | class Task; 29 | 30 | class MsgKey { 31 | public: 32 | uint32_t rank, comm, tag; 33 | int64_t seq; 34 | MsgKey(uint32_t _rank, uint32_t _tag, uint32_t _comm, int64_t _seq) { 35 | rank = _rank; tag = _tag; comm = _comm; seq = _seq; 36 | } 37 | bool operator< (const MsgKey &rhs) const { 38 | if(rank != rhs.rank) return rank < rhs.rank; 39 | else if(tag != rhs.tag) return tag < rhs.tag; 40 | else return comm < rhs.comm; 41 | //else if(comm != rhs.comm) return comm < rhs.comm; 42 | //else return seq < rhs.seq; 43 | } 44 | ~MsgKey() { } 45 | }; 46 | typedef std::map< MsgKey, std::list > KeyType; 47 | 48 | class CollMsgKey { 49 | public: 50 | uint32_t rank, comm; 51 | int64_t seq; 52 | CollMsgKey(uint32_t _rank, uint32_t _comm, int64_t _seq) { 53 | rank = _rank; comm = _comm; seq = _seq; 54 | } 55 | bool operator< (const CollMsgKey &rhs) const { 56 | if(rank != rhs.rank) return rank < rhs.rank; 57 | else if(comm != rhs.comm) return comm < rhs.comm; 58 | else return seq < rhs.seq; 59 | } 60 | ~CollMsgKey() { } 61 | }; 62 | typedef std::map< CollMsgKey, std::list > CollKeyType; 63 | 64 | class PE { 65 | public: 66 | PE(); 67 | ~PE(); 68 | std::list msgBuffer; 69 | Task* myTasks; // all tasks of this PE 70 | bool **taskStatus, **taskExecuted; 71 | bool **msgStatus; 72 | bool *allMarked; 73 | double currTime; 74 | bool busy; 75 | int beforeTask, totalTasksCount; 76 | int myNum, myEmPE, jobNum; 77 | int tasksCount; //total number of tasks 78 | int currentTask; // index of first not-executed task (helps searching messages) 79 | int firstTask; 80 | int currIter; 81 | int loop_start_task; 82 | 83 | void goToNextIter(int iter); 84 | bool noUnsatDep(int iter, int tInd); // there is no unsatisfied dependency for task 85 | void mark_all_done(int iter, int tInd); 86 | double taskExecTime(int tInd); 87 | void printStat(int iter); 88 | 89 | void invertMsgPe(int iter, int tInd); 90 | double getTaskExecTime(int tInd); 91 | void addTaskExecTime(int tInd, double time); 92 | std::map* msgDestLogs; 93 | int findTaskFromMsg(MsgID* msg); 94 | int numWth, numEmPes; 95 | 96 | KeyType pendingMsgs; 97 | KeyType pendingRMsgs; 98 | int64_t *sendSeq, *recvSeq; 99 | std::map pendingReqs; 100 | std::map pendingRReqs; 101 | 102 | //handling collectives 103 | std::vector collectiveSeq; 104 | std::map > > pendingCollMsgs; 105 | CollKeyType pendingRCollMsgs; 106 | int64_t currentCollComm, currentCollSeq, currentCollTask, currentCollMsgSize; 107 | int currentCollRank, currentCollPartner, currentCollSize; 108 | int currentCollSendCount, currentCollRecvCount; 109 | }; 110 | 111 | #endif /* PE_H_ */ 112 | -------------------------------------------------------------------------------- /tracer/elements/Task.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include "assert.h" 18 | #include "Task.h" 19 | 20 | Task::Task() { 21 | execTime = -1; 22 | endEvent = false; 23 | loopEvent = false; 24 | loopStartEvent = false; 25 | #if TRACER_BIGSIM_TRACES 26 | backwDepSize = 0; 27 | forwDepSize = 0; 28 | backwardDep = 0; 29 | forwardDep = 0; 30 | myEntries = 0; 31 | msgEntCount = 0; 32 | bgPrintCount = 0; 33 | #else 34 | beginEvent = false; 35 | #endif 36 | } 37 | 38 | #if TRACER_BIGSIM_TRACES 39 | void Task::printEvt(tw_lp * lp, double startTime, int PEno, int jobNo) 40 | { 41 | for(int i = 0; i < bgPrintCount; i++) { 42 | myBgPrints[i].print(lp, startTime, PEno, jobNo); 43 | } 44 | } 45 | #endif 46 | 47 | Task::~Task() 48 | { 49 | #if TRACER_BIGSIM_TRACES 50 | delete[] forwardDep; 51 | delete[] backwardDep; 52 | delete[] myBgPrints; 53 | delete[] myEntries; 54 | #endif 55 | } 56 | 57 | -------------------------------------------------------------------------------- /tracer/elements/Task.h: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #ifndef TASK_H_ 18 | #define TASK_H_ 19 | #include "MsgEntry.h" 20 | #include 21 | #include 22 | #if TRACER_BIGSIM_TRACES 23 | #include 24 | #include 25 | #endif 26 | 27 | class MsgEntry; 28 | #include 29 | #define TIME_MULT 1000000000 30 | 31 | #if TRACER_BIGSIM_TRACES 32 | class BgPrint{ 33 | public: 34 | void print(tw_lp * lp, double startTime, int PEno, int jobNo) 35 | { 36 | char str[1000]; 37 | strcpy(str, "[%d %d : %s] "); 38 | strcat(str, msg); 39 | tw_output(lp, str, jobNo, PEno, taskName, startTime/((double)TIME_MULT)); 40 | } 41 | char* msg; 42 | double time; 43 | char taskName[50]; 44 | }; 45 | #endif 46 | 47 | // represents each DEP ~ SEB 48 | class Task { 49 | public: 50 | Task(); 51 | ~Task(); 52 | #if TRACER_BIGSIM_TRACES 53 | void printEvt(tw_lp * lp, double startTime, int PEno, int jobNo); 54 | int msgEntCount; // number of msg entries 55 | MsgEntry* myEntries; // outgoing messages of task 56 | int* forwardDep; //backward dependent tasks 57 | int forwDepSize; // size of forwardDep array 58 | 59 | int* backwardDep; //forward dependent tasks 60 | int backwDepSize; // size of backwDep array 61 | int bgPrintCount; 62 | BgPrint* myBgPrints; 63 | #elif TRACER_OTF_TRACES 64 | int64_t event_id; 65 | int64_t req_id; 66 | bool isNonBlocking; 67 | MsgEntry myEntry; 68 | bool beginEvent; 69 | #else 70 | #error Either TRACER_BIGSIM_TRACES or TRACER_OTF_TRACES should be 1 71 | #endif 72 | bool endEvent; 73 | bool loopEvent, loopStartEvent; 74 | double execTime; //execution time of the task 75 | }; 76 | 77 | #endif /* TASK_H_ */ 78 | -------------------------------------------------------------------------------- /tracer/reader/CWrapper.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include "elements/MsgEntry.h" 18 | #include "elements/PE.h" 19 | #include "CWrapper.h" 20 | #include "TraceReader.h" 21 | #include "assert.h" 22 | #include 23 | 24 | //MsgID 25 | MsgID* newMsgID(int size, int pe, int id){return new MsgID(size, pe, id);} 26 | int MsgID_getSize(MsgID* m){return m->size;} 27 | int MsgID_getID(MsgID* m){return m->id;} 28 | int MsgID_getPE(MsgID* m){return m->pe;} 29 | 30 | //MsgEntry 31 | MsgEntry* newMsgEntry(){return new MsgEntry();} 32 | int MsgEntry_getSize(MsgEntry* m){return m->msgId.size;} 33 | int MsgEntry_getPE(MsgEntry* m){return m->msgId.pe;} 34 | int MsgEntry_getID(MsgEntry* m){return m->msgId.id;} 35 | int MsgEntry_getNode(MsgEntry* m){return m->node;} 36 | int MsgEntry_getThread(MsgEntry* m){return m->thread;} 37 | 38 | //PE 39 | int PE_get_iter(PE* p) { return p->currIter; } 40 | void PE_inc_iter(PE* p) { 41 | #if TRACER_OTF_TRACES 42 | p->goToNextIter(p->currIter); 43 | #endif 44 | p->currIter++; 45 | } 46 | void PE_dec_iter(PE* p) { p->currIter--; } 47 | void PE_set_busy(PE* p, bool b){p->busy = b;} 48 | bool PE_is_busy(PE* p){return p->busy;} 49 | bool PE_noUnsatDep(PE* p, int iter, int tInd){return p->noUnsatDep(iter, tInd);} 50 | bool PE_noMsgDep(PE* p, int iter, int tInd){ 51 | return p->msgStatus[iter][tInd]; 52 | } 53 | bool PE_isEndEvent(PE *p, int tInd) { return p->myTasks[tInd].endEvent; } 54 | bool PE_isLoopEvent(PE *p, int tInd) { return p->myTasks[tInd].loopEvent; } 55 | double PE_getTaskExecTime(PE* p, int tInd){return p->taskExecTime(tInd);} 56 | void PE_addTaskExecTime(PE* p, int tInd, double time){ p->addTaskExecTime(tInd, time);} 57 | #if TRACER_BIGSIM_TRACES 58 | int PE_getTaskMsgEntryCount(PE* p, int tInd){return p->myTasks[tInd].msgEntCount;} 59 | MsgEntry** PE_getTaskMsgEntries(PE* p, int tInd){ 60 | return &(p->myTasks[tInd].myEntries); 61 | } 62 | MsgEntry* PE_getTaskMsgEntry(PE* p, int tInd, int mInd){ 63 | return &(p->myTasks[tInd].myEntries[mInd]); 64 | } 65 | 66 | void PE_execPrintEvt(tw_lp * lp, PE* p, int tInd, double stime) { 67 | p->myTasks[tInd].printEvt(lp, stime, p->myNum, p->jobNum); 68 | } 69 | #endif 70 | 71 | int PE_getFirstTask(PE* p){ return p->firstTask;} 72 | void PE_set_taskDone(PE* p, int iter, int tInd, bool b){ p->taskStatus[iter][tInd] = b; } 73 | void PE_mark_all_done(PE *p, int iter, int task_id) { 74 | p->mark_all_done(iter, task_id); 75 | } 76 | 77 | bool PE_get_taskDone(PE* p, int iter, int tInd){ return p->taskStatus[iter][tInd]; } 78 | #if TRACER_BIGSIM_TRACES 79 | int* PE_getTaskFwdDep(PE* p, int tInd){ return p->myTasks[tInd].forwardDep; } 80 | int PE_getTaskFwdDepSize(PE* p, int tInd){ return p->myTasks[tInd].forwDepSize; } 81 | void PE_undone_fwd_deps(PE* p, int iter, int tInd){ 82 | int fwd_dep_size = PE_getTaskFwdDepSize(p, tInd); 83 | int* fwd_deps = PE_getTaskFwdDep(p, tInd); 84 | for(int i=0; icurrentTask=tInd; } 96 | int PE_get_currentTask(PE* p){ return p->currentTask; } 97 | int PE_get_myEmPE(PE* p){return p->myEmPE;} 98 | int PE_get_myNum(PE* p){return p->myNum;} 99 | void PE_clearMsgBuffer(PE* p){p->msgBuffer.clear();} 100 | void PE_addToBuffer(PE* p, TaskPair *task_id){ 101 | bool found = (std::find(p->msgBuffer.begin(), p->msgBuffer.end(), *task_id) != p->msgBuffer.end()); 102 | if(found) assert(0); 103 | p->msgBuffer.push_back(*task_id); 104 | } 105 | void PE_addToFrontBuffer(PE* p, TaskPair *task_id){ 106 | bool found = (std::find(p->msgBuffer.begin(), p->msgBuffer.end(), *task_id) != p->msgBuffer.end()); 107 | if(found) assert(0); 108 | p->msgBuffer.push_front(*task_id); 109 | } 110 | int PE_getBufferSize(PE* p){ return p->msgBuffer.size();} 111 | void PE_resizeBuffer(PE* p, int num_elems_to_remove){ 112 | int cur_size = p->msgBuffer.size(); 113 | assert(cur_size >= num_elems_to_remove); 114 | p->msgBuffer.resize(cur_size - num_elems_to_remove); 115 | } 116 | void PE_removeFromBuffer(PE* p, TaskPair *task_id){ 117 | //if the task_id is in the buffer, remove it from the buffer 118 | if(!p->msgBuffer.size()) assert(0); 119 | if(p->msgBuffer.back().taskid != task_id->taskid) { 120 | printf("[PE %d] Mismatch (%d,%d) (%d,%d)\n", 121 | p->myNum, p->msgBuffer.back().iter, p->msgBuffer.back().taskid, 122 | task_id->iter, task_id->taskid); 123 | assert(0); 124 | } 125 | p->msgBuffer.pop_back(); 126 | } 127 | TaskPair PE_getNextBuffedMsg(PE* p){ 128 | if(p->msgBuffer.size()<=0) return TaskPair(-1,-1); 129 | else{ 130 | TaskPair id = p->msgBuffer.front(); 131 | p->msgBuffer.pop_front(); 132 | return id; 133 | } 134 | } 135 | int PE_findTaskFromMsg(PE* p, MsgID* msgId){ 136 | return p->findTaskFromMsg(msgId); 137 | } 138 | void PE_invertMsgPe(PE* p, int iter, int tInd){ 139 | p->invertMsgPe(iter, tInd); 140 | } 141 | int PE_get_tasksCount(PE* p){return p->tasksCount;} 142 | int PE_get_totalTasksCount(PE* p){return p->totalTasksCount;} 143 | void PE_printStat(PE* p, int iter){ p->printStat(iter); } 144 | int PE_get_numWorkThreads(PE* p){return p->numWth;} 145 | 146 | #if TRACER_BIGSIM_TRACES 147 | //TraceReader 148 | TraceReader* newTraceReader(char* s){return new TraceReader(s);} 149 | void TraceReader_loadTraceSummary(TraceReader* t){t->loadTraceSummary();} 150 | void TraceReader_loadOffsets(TraceReader* t){t->loadOffsets();} 151 | int* TraceReader_getOffsets(TraceReader* t){return t->allNodeOffsets;} 152 | void TraceReader_setOffsets(TraceReader* t, int** offsets){t->allNodeOffsets = *offsets;} 153 | void TraceReader_readTrace(TraceReader* t, int* tot, int* numnodes, int* 154 | empes, int* nwth, PE* pe, int penum, int jobnum, double* startTime){ 155 | t->readTrace(tot, numnodes, empes, nwth, pe, penum, jobnum, startTime); 156 | } 157 | int TraceReader_totalWorkerProcs(TraceReader* t){return t->totalWorkerProcs;} 158 | #endif 159 | 160 | -------------------------------------------------------------------------------- /tracer/reader/CWrapper.h: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #ifndef __CWRAPPER_H 18 | #define __CWRAPPER_H 19 | 20 | #include 21 | #include "datatypes.h" 22 | 23 | //MsgID 24 | typedef struct MsgID MsgID; 25 | MsgID* newMsgID(int size, int pe, int id); 26 | int MsgID_getSize(MsgID* m); 27 | int MsgID_getID(MsgID* m); 28 | int MsgID_getPE(MsgID* m); 29 | 30 | //MsgEntry 31 | typedef struct MsgEntry MsgEntry; 32 | MsgEntry* newMsgEntry(); 33 | int MsgEntry_getSize(MsgEntry* m); 34 | int MsgEntry_getID(MsgEntry* m); 35 | int MsgEntry_getPE(MsgEntry* m); 36 | int MsgEntry_getNode(MsgEntry* m); 37 | int MsgEntry_getThread(MsgEntry* m); 38 | 39 | //PE 40 | typedef struct PE PE; 41 | void PE_set_busy(PE* p, bool b); 42 | bool PE_is_busy(PE* p); 43 | bool PE_noUnsatDep(PE* p, int, int tInd); 44 | bool PE_noMsgDep(PE* p, int, int tInd); 45 | int PE_get_iter(PE* p); 46 | void PE_inc_iter(PE* p); 47 | void PE_dec_iter(PE* p); 48 | double PE_getTaskExecTime(PE* p, int tInd); 49 | void PE_addTaskExecTime(PE* p, int tInd, double time); 50 | #if TRACER_BIGSIM_TRACES 51 | int PE_getTaskMsgEntryCount(PE* p, int tInd); 52 | MsgEntry** PE_getTaskMsgEntries(PE* p, int tInd); 53 | MsgEntry* PE_getTaskMsgEntry(PE* p, int tInd, int mInd); 54 | void PE_execPrintEvt(tw_lp * lp, PE* p, int tInd, double stime); 55 | #endif 56 | void PE_set_taskDone(PE* p, int, int tInd, bool b); 57 | void PE_mark_all_done(PE *p, int iter, int task_id); 58 | bool PE_get_taskDone(PE* p, int, int tInd); 59 | #if TRACER_BIGSIM_TRACES 60 | int* PE_getTaskFwdDep(PE* p, int tInd); 61 | int PE_getTaskFwdDepSize(PE* p, int tInd); 62 | void PE_undone_fwd_deps(PE* p, int iter, int tInd); 63 | #endif 64 | void PE_set_currentTask(PE* p, int tInd); 65 | int PE_get_currentTask(PE* p); 66 | int PE_get_myEmPE(PE* p); 67 | int PE_get_myNum(PE* p); 68 | int PE_getFirstTask(PE* p); 69 | bool PE_isEndEvent(PE *p, int task_id); 70 | bool PE_isLoopEvent(PE *p, int task_id); 71 | 72 | int PE_getBufferSize(PE* p); 73 | void PE_clearMsgBuffer(PE* p); 74 | void PE_addToBuffer(PE* p, TaskPair *task_id); 75 | void PE_addToFrontBuffer(PE* p, TaskPair *task_id); 76 | void PE_removeFromBuffer(PE* p, TaskPair *task_id); 77 | void PE_resizeBuffer(PE* p, int num_elems_to_remove); 78 | TaskPair PE_getNextBuffedMsg(PE* p); 79 | 80 | int PE_findTaskFromMsg(PE* p, MsgID* msgId); 81 | void PE_invertMsgPe(PE* p, int, int tInd); 82 | int PE_get_tasksCount(PE* p); 83 | int PE_get_totalTasksCount(PE* p); 84 | void PE_printStat(PE* p, int iter); 85 | int PE_get_numWorkThreads(PE* p); 86 | 87 | #if TRACER_BIGSIM_TRACES 88 | //TraceReader 89 | typedef struct TraceReader TraceReader; 90 | TraceReader* newTraceReader(char*); 91 | void TraceReader_loadTraceSummary(TraceReader* t); 92 | void TraceReader_loadOffsets(TraceReader* t); 93 | int* TraceReader_getOffsets(TraceReader* t); 94 | void TraceReader_setOffsets(TraceReader* t, int** offsets); 95 | void TraceReader_readTrace(TraceReader* t, int* tot, int* numnodes, int* empes, 96 | int* nwth, PE* pe, int penum, int jobnum, double* startTime); 97 | int TraceReader_totalWorkerProcs(TraceReader* t); 98 | #endif 99 | void addEventSub(int job, char *key, double val, int numjobs); 100 | void addMsgSizeSub(int job, int64_t key, int64_t val, int numjobs); 101 | 102 | bool isPEonThisRank(int jobID, int i); 103 | void TraceReader_readOTF2Trace(PE* pe, int my_pe_num, int my_job, double *startTime); 104 | #endif 105 | -------------------------------------------------------------------------------- /tracer/reader/Makefile: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | # Produced at the Lawrence Livermore National Laboratory. 4 | # 5 | # Written by: 6 | # Nikhil Jain 7 | # Bilge Acun 8 | # Abhinav Bhatele 9 | # 10 | # LLNL-CODE-740483. All rights reserved. 11 | # 12 | # This file is part of TraceR. For details, see: 13 | # https://github.com/LLNL/TraceR 14 | # Please also read the LICENSE file for the MIT License notice. 15 | ############################################################################## 16 | 17 | include ../Makefile.common 18 | 19 | RM := rm -rf 20 | 21 | CPP_SRCS = TraceReader.C CWrapper.C otf2_reader.C 22 | OBJS = TraceReader.o CWrapper.o otf2_reader.o 23 | CPP_DEPS = TraceReader.d CWrapper.d otf2_reader.d 24 | 25 | CXXFLAGS += -I../ 26 | 27 | reader: ${OBJS} 28 | 29 | %.o: %.C 30 | @echo 'Building file: $<' 31 | ifeq ($(ARCH),bgq) 32 | ${SEQ_CXX} ${CXXFLAGS} -c -fmessage-length=0 -M -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" 33 | else 34 | ${SEQ_CXX} ${CXXFLAGS} -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" 35 | endif 36 | @echo 'Finished building: $<' 37 | @echo ' ' 38 | 39 | clean: 40 | -$(RM) $(OBJS) $(C++_DEPS) $(CC_DEPS) $(CPP_DEPS) $(EXECUTABLES) $(CXX_DEPS) $(C_UPPER_DEPS) 41 | -@echo ' ' 42 | -------------------------------------------------------------------------------- /tracer/reader/TraceReader.h: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #ifndef TRACEFILEREADER_H_ 18 | #define TRACEFILEREADER_H_ 19 | #include "assert.h" 20 | #if TRACER_BIGSIM_TRACES 21 | #include "blue.h" 22 | #include "blue_impl.h" 23 | #endif 24 | #include "elements/PE.h" 25 | #include "elements/Task.h" 26 | class PE; 27 | class Node; 28 | class Task; 29 | 30 | class TraceReader { 31 | public: 32 | TraceReader(char *); 33 | ~TraceReader(); 34 | #if TRACER_BIGSIM_TRACES 35 | void loadOffsets(); 36 | void loadTraceSummary(); 37 | void readTrace(int* tot, int* numnodes, int* empes, int* nwth, PE* pe, 38 | int penum, int jobnum, double* startTime); 39 | void setTaskFromLog(Task *t, BgTimeLog* bglog, int taskPE, int emPE, int jobPEindex, PE* pe, int, bool, double); 40 | #endif 41 | 42 | int numEmPes; // number of emulation PEs, there is a trace file for each of them 43 | int totalWorkerProcs; 44 | int totalNodes; 45 | int numWth; //Working PEs per node 46 | int* allNodeOffsets; 47 | char tracePath[256]; 48 | 49 | int fileLoc; // each worker needs separate file offset 50 | int firstLog; // first log of window to read for each worker 51 | int totalTlineLength; // apparently totalTlineLength should be kept for each PE! 52 | }; 53 | 54 | #endif /* TRACEFILEREADER_H_ */ 55 | -------------------------------------------------------------------------------- /tracer/reader/datatypes.h: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #ifndef _DATATYPES_H_ 18 | #define _DATATYPES_H_ 19 | 20 | #if TRACER_OTF_TRACES 21 | #include "otf2_reader.h" 22 | #endif 23 | 24 | #include 25 | #include 26 | 27 | struct TaskPair { 28 | int iter; 29 | int taskid; 30 | 31 | #ifdef __cplusplus 32 | TaskPair(int a, int b) { 33 | iter = a; 34 | taskid = b; 35 | } 36 | 37 | TaskPair() { 38 | iter = -1; 39 | taskid = -1; 40 | } 41 | 42 | TaskPair(const TaskPair &t) { 43 | iter = t.iter; 44 | taskid = t.taskid; 45 | } 46 | 47 | inline bool operator==(const TaskPair &t) { 48 | return iter == t.iter && taskid == t.taskid; 49 | } 50 | #endif 51 | }; 52 | 53 | typedef struct TaskPair TaskPair; 54 | 55 | typedef struct JobInf { 56 | int numRanks; 57 | char traceDir[256]; 58 | char map_file[256]; 59 | int *rankMap; 60 | int *offsets; 61 | int skipMsgId; 62 | int numIters; 63 | #if TRACER_OTF_TRACES 64 | AllData *allData; 65 | OTF2_Reader *reader; 66 | bool localDefs; 67 | #endif 68 | } JobInf; 69 | 70 | #endif 71 | 72 | -------------------------------------------------------------------------------- /tracer/reader/otf2_reader.h: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #ifndef _OTF2_READER_H_ 18 | #define _OTF2_READER_H_ 19 | #if TRACER_OTF_TRACES 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include "elements/Task.h" 30 | 31 | #if MPI_VERSION < 3 32 | #define OTF2_MPI_UINT64_T MPI_UNSIGNED_LONG 33 | #define OTF2_MPI_INT64_T MPI_LONG 34 | #endif 35 | #include 36 | 37 | enum Tracer_evt_type { 38 | TRACER_USER_EVT = -1, 39 | TRACER_PRINT_EVT = -2, 40 | TRACER_SEND_EVT = -3, 41 | TRACER_RECV_EVT = -4, 42 | TRACER_COLL_EVT = -5, 43 | TRACER_SEND_COMP_EVT = -6, 44 | TRACER_RECV_POST_EVT = -7, 45 | TRACER_RECV_COMP_EVT = -8, 46 | TRACER_LOOP_EVT = -9 47 | }; 48 | 49 | struct ClockProperties { 50 | uint64_t ticks_per_second; 51 | double ticksToSecond; 52 | uint64_t time_offset; 53 | }; 54 | 55 | struct Region { 56 | OTF2_StringRef name; 57 | OTF2_RegionRole role; 58 | OTF2_Paradigm paradigm; 59 | bool isTracerPrintEvt; 60 | bool isLoopEvt; 61 | bool isCommunication; 62 | bool isExtraTracerEvt; 63 | }; 64 | 65 | struct Group { 66 | OTF2_GroupType type; 67 | std::vector members; 68 | std::map rmembers; 69 | }; 70 | 71 | struct LocationData { 72 | uint64_t lastLogTime; 73 | bool firstEnter; 74 | std::vector tasks; 75 | }; 76 | 77 | struct AllData { 78 | ClockProperties clockProperties; 79 | std::vector locations; 80 | std::map strings; 81 | std::map communicators; 82 | std::map groups; 83 | std::map regions; 84 | LocationData *ld; 85 | std::map matchRecvIds;//temp space 86 | }; 87 | 88 | OTF2_Reader * readGlobalDefinitions(int jobID, char* tracefileName, 89 | AllData *allData); 90 | 91 | void readLocationTasks(int jobID, OTF2_Reader *reader, AllData *allData, 92 | uint32_t loc, LocationData* ld); 93 | 94 | void closeReader(OTF2_Reader *reader); 95 | #endif 96 | #endif 97 | -------------------------------------------------------------------------------- /utils/Makefile: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | # Produced at the Lawrence Livermore National Laboratory. 4 | # 5 | # Written by: 6 | # Nikhil Jain 7 | # Bilge Acun 8 | # Abhinav Bhatele 9 | # 10 | # LLNL-CODE-740483. All rights reserved. 11 | # 12 | # This file is part of TraceR. For details, see: 13 | # https://github.com/LLNL/TraceR 14 | # Please also read the LICENSE file for the MIT License notice. 15 | ############################################################################## 16 | 17 | CC = g++ 18 | 19 | SRCS=$(wildcard *.C) 20 | PGMS=$(SRCS:.C=) 21 | 22 | all: $(PGMS) 23 | 24 | %: %.C 25 | $(CC) -g ${EXTRA} -o $@ $< 26 | 27 | clean: 28 | rm -f $(PGMS) 29 | -------------------------------------------------------------------------------- /utils/README: -------------------------------------------------------------------------------- 1 | Ranking basics: 2 | --------------------- 3 | TraceR requires two sets of mapping files (with some what redundant information). 4 | Both types files provide information about mapping of global rank to jobs and 5 | their local rank. Global rank of a server/core is simply the logical rank that 6 | server LPs get inside CODES. It increases linearly from servers/cores connected 7 | to one switch to another. Due to the way default server to node mapping works 8 | within CODES, if more than one node is connected to a switch, server/cores are 9 | distributed in a cyclic manner. 10 | 11 | Example: Consider the following config file 12 | MODELNET_GRP 13 | { 14 | repetitions="8 15 | server="4"; 16 | modelnet_dragonfly="4"; 17 | modelnet_dragonfly_router="1"; 18 | } 19 | 20 | Servers residing in nodes connected to the first router gets global rank 0-3, 21 | second router gets global rank 4-7, and so on. 22 | 23 | Now consider this case: 24 | MODELNET_GRP 25 | { 26 | repetitions="8 27 | server="8"; 28 | modelnet_dragonfly="4"; 29 | modelnet_dragonfly_router="1"; 30 | } 31 | 32 | Servers residing in nodes connected to the first router gets global rank 0-7, 33 | second router gets global rank 8-15, and so on. However, there are 8 servers 34 | but only 4 nodes, so each node hosts 2 servers. The servers are distributed in 35 | a cyclic manner within a router, i.e. in router 0, server 0 is on node 0, 1 is 36 | on node 1, 2 is on node 2, 3 is node 3, 4 is on node 0, 5 is on node 1, 6 is on 37 | node 2, and 7 is on node 3. Similar cyclic distribution is done within every 38 | switch. 39 | 40 | Map file requirements: 41 | --------------------- 42 | Map files are divided into two sets: global map file and individual job files. 43 | The global file specifies how the global rank are mapped to individual jobs and 44 | ranks within those jobs. It is a binary file structured as sets of 3 integers: 45 | . Typical write routine look like: 46 | 47 | for(....) 48 | fwrite(&global_rank, sizeof(int), 1, binout); 49 | fwrite(&local_rank, sizeof(int), 1, binout); 50 | fwrite(&jobid, sizeof(int), 1, binout); 51 | endfor 52 | 53 | For each job, individual job map files are needed. A map file for a job is also a 54 | binary file filled with a series of global ranks. The global ranks are ordered 55 | by using the local ranks as the key. So, if the series of integers is loaded 56 | into an array called local_to_global, local_to_global[i] will contain the global 57 | rank of local rank i. 58 | 59 | Note for author: Eliminate individual job map files and make life easier for 60 | users. 61 | 62 | Job mappers 63 | ------------------ 64 | def_lin_mapping.C : generate linear mapping which is also the default mapping 65 | when no mapping is specified. If nodes per router is more than 1, then this 66 | mapping will spread the ranks in a round-robin fashion among the nodes. 67 | 68 | node_mapping.C : generates mapping that always places server with contiguous 69 | global ranks on a node. That, if there 2 servers per node, ranks 0-1 are on node 70 | 0, ranks 2-3 are on node 1, and so on. 71 | 72 | multi_job.C : Router based various schemes for mapping. 73 | many_job.C : Nodes based various schemes for mapping. 74 | 75 | Commands for execution 76 | ---------------------- 77 | ./def_lin_mapping 78 | ./node_mapping [optional ] 79 | 80 | Output - 81 | in binary format 82 | job{0,1..} files in binary format 83 | 84 | Example: 85 | ./def_lin_mapping global.bin 32 32 64 86 | 87 | generates global.bin with 128 ranks, where first 32 are mapped to job0, next 32 88 | to job1, and last 64 to job2. Also generates job0, job1, job2 that maps ranks 89 | from these jobs to global ranks. 90 | 91 | -------------------------------------------------------------------------------- /utils/core_random_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 6) { 30 | printf("Correct usage: %s \n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int rr_group = atoi(argv[3]); 41 | int rr = atoi(argv[4]); 42 | int skip = atoi(argv[5]); 43 | int local_rank = 0; 44 | 45 | int *localRanks = new int[numAllocCores]; 46 | int *granks = new int[numAllocCores]; 47 | 48 | for(int i = 0; i < numAllocCores; i++) { 49 | localRanks[i] = i; 50 | } 51 | srand(1789637); 52 | 53 | for(int i = 0; i < 5*numAllocCores; i++) { 54 | int t1 = rand() % numAllocCores; 55 | int t2 = rand() % numAllocCores; 56 | int tmp = localRanks[t1]; 57 | localRanks[t1] = localRanks[t2]; 58 | localRanks[t2] = tmp; 59 | } 60 | 61 | 62 | for(int i = 0; ; i += rr_group*rr) { 63 | for(int j = 0; j < rr_group; j++) { 64 | if(j == skip) { 65 | break; 66 | } 67 | for(int k = 0; k < rr; k++) { 68 | int global_rank = i + j + k * rr_group; 69 | fwrite(&global_rank, sizeof(int), 1, binout); 70 | fwrite(&localRanks[local_rank], sizeof(int), 1, binout); 71 | fwrite(&jobid, sizeof(int), 1, binout); 72 | granks[localRanks[local_rank]] = global_rank; 73 | #if PRINT_MAP 74 | printf("%d %d %d\n", global_rank, localRanks[local_rank], jobid); 75 | #endif 76 | local_rank++; 77 | if(local_rank == numAllocCores) { 78 | break; 79 | } 80 | } 81 | if(local_rank == numAllocCores) { 82 | break; 83 | } 84 | } 85 | if(local_rank == numAllocCores) { 86 | break; 87 | } 88 | } 89 | 90 | for(int i = 0; i < numAllocCores; i++) { 91 | fwrite(&granks[i], sizeof(int), 1, out_files); 92 | } 93 | 94 | fclose(binout); 95 | fclose(out_files); 96 | } 97 | -------------------------------------------------------------------------------- /utils/create_job_input.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import random as random 3 | import numpy as np 4 | 5 | from sys import argv 6 | 7 | if __name__ == '__main__': 8 | block_size = ([8,8,8], [8,8,16], [8,16,16], [16,16,16], 9 | [16,16,32], [16,32,32], [4,4,8], [4,8,8], 10 | [8,8,8], [8,8,16], [8,16,16], [16,16,16]) 11 | count = (75, 50, 25, 10, 10, 5, 75, 50, 25, 10, 10, 5) 12 | core_count = (512, 1024, 2048, 4096, 8192, 16384, 13 | 128, 256, 512, 1024, 2048, 4096) 14 | core_shapes = ([2,2,4], [2,2,1]) 15 | node_size = (16,4) 16 | mtype = int(argv[1]) 17 | outer_box = ([1,1,1]) 18 | 19 | jobs_des = ("fg-512", "fg-1K", "fg-2K", 20 | "fg-4K", "fg-8K", "fg-16K", 21 | "perm-512", "perm-1K", "perm-2K", 22 | "perm-4K", "perm-8K", "perm-16K", 23 | "stencil3d-512", "stencil3d-1K", "stencil3d-2K", 24 | "stencil3d-4K", "stencil3d-8K", "stencil3d-16K", 25 | "fft-128", "fft-256", "fft-512", 26 | "fft-1K", "fft-2K", "fft-4K", 27 | "kripke-128", "kripke-256", "kripke-512", 28 | "kripke-1K", "kripke-2K", "kripke-4K", 29 | "qbox-128", "qbox-256", "qbox-512", 30 | "qbox-1K", "qbox-2K", "qbox-4K") 31 | 32 | job_iters = (5,5,4,4,4,4, 33 | 3,3,3,3,3,3, 34 | 3,3,2,2,2,2, 35 | 3,3,3,3,3,3, 36 | 3,3,2,1,1,1, 37 | 3,2,2,1,1,1) 38 | 39 | 40 | msg_size = (4000,4000,4000,4000,4000,4000, 41 | 2592000, 2592000, 5184000, 5184000, 10368000, 10368000, 42 | 5184000,5184000,5184000,10368000,10368000, 10368000, 43 | 9540000, 9540000, 6360000, 6360000, 4770000, 4770000, 44 | 0,0,0,0,0,0, 45 | 0,0,0,0,0,0) 46 | 47 | time_calls = ([ ["SmallMsgs_Setup", 0.000001 ], ["SmallMsgs_SendTime", 0.000001], ["SmallMsgs_Work", 0.020 ] ], 48 | [ ["SmallMsgs_Setup", 0.000002 ], ["SmallMsgs_SendTime", 0.000001], ["SmallMsgs_Work", 0.023 ] ], 49 | [ ["SmallMsgs_Setup", 0.000004 ], ["SmallMsgs_SendTime", 0.000001], ["SmallMsgs_Work", 0.025 ] ], 50 | [ ["SmallMsgs_Setup", 0.000008 ], ["SmallMsgs_SendTime", 0.000001], ["SmallMsgs_Work", 0.030 ] ], 51 | [ ["SmallMsgs_Setup", 0.00001 ], ["SmallMsgs_SendTime", 0.000001], ["SmallMsgs_Work", 0.033 ] ], 52 | [ ["SmallMsgs_Setup", 0.000015 ], ["SmallMsgs_SendTime", 0.000001], ["SmallMsgs_Work", 0.036 ] ], 53 | [ ["Permuation_Setup", 0.0035 ], ["Permuation_Work", 0.0035] ], 54 | [ ["Permuation_Setup", 0.0045 ], ["Permuation_Work", 0.0045] ], 55 | [ ["Permuation_Setup", 0.0055 ], ["Permuation_Work", 0.0055] ], 56 | [ ["Permuation_Setup", 0.0065 ], ["Permuation_Work", 0.0065] ], 57 | [ ["Permuation_Setup", 0.0075 ], ["Permuation_Work", 0.0075] ], 58 | [ ["Permuation_Setup", 0.0085 ], ["Permuation_Work", 0.0085] ], 59 | [ ["Stencil3D_Setup", 0.001 ], ["Stencil3D_Work", 0.020 ] ], 60 | [ ["Stencil3D_Setup", 0.0012 ], ["Stencil3D_Work", 0.020 ] ], 61 | [ ["Stencil3D_Setup", 0.0014 ], ["Stencil3D_Work", 0.020 ] ], 62 | [ ["Stencil3D_Setup", 0.0016 ], ["Stencil3D_Work", 0.036 ] ], 63 | [ ["Stencil3D_Setup", 0.0018 ], ["Stencil3D_Work", 0.036 ] ], 64 | [ ["Stencil3D_Setup", 0.002 ], ["Stencil3D_Work", 0.036 ] ], 65 | [ ["FFT_Setup", 0.001], ["FFT_WORK", 0.001] ], 66 | [ ["FFT_Setup", 0.001], ["FFT_WORK", 0.001] ], 67 | [ ["FFT_Setup", 0.0008], ["FFT_WORK", 0.0008] ], 68 | [ ["FFT_Setup", 0.0008], ["FFT_WORK", 0.0008] ], 69 | [ ["FFT_Setup", 0.0004], ["FFT_WORK", 0.0004] ], 70 | [ ["FFT_Setup", 0.0004], ["FFT_WORK", 0.0004] ], 71 | [ ["Kripke_SolveCompute", 0.006 ], ["Kripke_SweepCompute", 0.000135 ] ], 72 | [ ["Kripke_SolveCompute", 0.006 ], ["Kripke_SweepCompute", 0.000135 ] ], 73 | [ ["Kripke_SolveCompute", 0.013 ], ["Kripke_SweepCompute", 0.000135 ] ], 74 | [ ["Kripke_SolveCompute", 0.013 ], ["Kripke_SweepCompute", 0.000135 ] ], 75 | [ ["Kripke_SolveCompute", 0.026 ], ["Kripke_SweepCompute", 0.000135 ] ], 76 | [ ["Kripke_SolveCompute", 0.026 ], ["Kripke_SweepCompute", 0.000135 ] ], 77 | [ ["QBOX_Setup", 0.001 ], ["QBOX_OverlapWork", 0], ["QBOX_FFTTime", 0.0005 ], ["QBOX_Work1", .005], ["QBOX_Work2", 0.006 ] ], 78 | [ ["QBOX_Setup", 0.0015 ], ["QBOX_OverlapWork", 0], ["QBOX_FFTTime", 0.008 ], ["QBOX_Work1", .007], ["QBOX_Work2", 0.008 ] ], 79 | [ ["QBOX_Setup", 0.002 ], ["QBOX_OverlapWork", 0], ["QBOX_FFTTime", 0.001 ], ["QBOX_Work1", .009], ["QBOX_Work2", 0.010 ] ], 80 | [ ["QBOX_Setup", 0.0025 ], ["QBOX_OverlapWork", 0], ["QBOX_FFTTime", 0.0013 ], ["QBOX_Work1", .010], ["QBOX_Work2", 0.012 ] ], 81 | [ ["QBOX_Setup", 0.003 ], ["QBOX_OverlapWork", 0], ["QBOX_FFTTime", 0.0016 ], ["QBOX_Work1", .015], ["QBOX_Work2", 0.018 ] ], 82 | [ ["QBOX_Setup", 0.004 ], ["QBOX_OverlapWork", 0], ["QBOX_FFTTime", 0.002 ], ["QBOX_Work1", .018], ["QBOX_Work2", 0.020 ] ]) 83 | 84 | jobid = 0 85 | random.seed(104723) 86 | f = open('event.txt', 'w') 87 | for i in range(len(count)): 88 | if(i < 6): 89 | s = 0 90 | bjind = i 91 | base = 0 92 | else: 93 | s = 1 94 | bjind = i - 6 95 | base = 18 96 | for it in range(count[i]): 97 | whichJob = random.randint(0,2) 98 | jind = base + whichJob * 6 + bjind 99 | #print (core_count[i]/node_size[s]," ",end="") 100 | #print core_count[i], mtype, \ 101 | # block_size[i][0], block_size[i][1], block_size[i][2], \ 102 | # core_shapes[s][0], core_shapes[s][1], core_shapes[s][2], \ 103 | # outer_box[0], outer_box[1], outer_box[2] 104 | print (jobs_des[jind], argv[2]+"/job"+str(jobid), core_count[i], job_iters[jind]) 105 | if(msg_size[jind] != 0): 106 | f.write("M "+str(jobid)+" 100000 "+str(msg_size[jind])+"\n") 107 | for o in range(len(time_calls[jind])): 108 | f.write("E "+str(jobid)+" "+str(time_calls[jind][o][0])+" "+str(time_calls[jind][o][1])+"\n") 109 | jobid = jobid + 1 110 | 111 | print ("\n") 112 | f.close() 113 | 114 | 115 | -------------------------------------------------------------------------------- /utils/def_lin_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int numJobs = argc - 2; 27 | vector jobSizes; 28 | vector out_files; 29 | int numAllocCores = 0; 30 | 31 | if(argc < 3) { 32 | printf("Correct usage: %s \n", 33 | argv[0]); 34 | exit(1); 35 | } 36 | 37 | jobSizes.resize(numJobs); 38 | out_files.resize(numJobs); 39 | for(int i = 0; i < numJobs; i++) { 40 | jobSizes[i] = atoi(argv[i+2]); 41 | numAllocCores += jobSizes[i]; 42 | char dFILE[256]; 43 | sprintf(dFILE, "%s%d", "job", i); 44 | out_files[i] = fopen(dFILE, "wb"); 45 | } 46 | 47 | int coresperjob = 0; 48 | int jobid = 0; 49 | for(int i = 0; i < numAllocCores; i++) { 50 | fwrite(&i, sizeof(int), 1, binout); 51 | fwrite(&coresperjob, sizeof(int), 1, binout); 52 | fwrite(&jobid, sizeof(int), 1, binout); 53 | #if PRINT_MAP 54 | printf("%d %d %d\n", i, coresperjob, jobid); 55 | #endif 56 | fwrite(&i, sizeof(int), 1, out_files[jobid]); 57 | coresperjob++; 58 | if(coresperjob == jobSizes[jobid]) { 59 | jobid++; 60 | coresperjob = 0; 61 | } 62 | } 63 | 64 | fclose(binout); 65 | for(int i = 0; i < numJobs; i++) { 66 | fclose(out_files[i]); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /utils/dfly_node_random_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 8) { 30 | printf("Correct usage: %s \n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int rr_group = atoi(argv[3]); 41 | int rr = atoi(argv[4]); 42 | int skip = atoi(argv[5]); 43 | int numGroups = atoi(argv[6]); 44 | int numRouters = atoi(argv[7]); 45 | int local_rank = 0; 46 | int size_per_group = numRouters * rr_group * rr; 47 | 48 | int numNodes = numGroups * numRouters * skip; 49 | int *mapping = new int[numNodes]; 50 | int *granks = new int[numAllocCores]; 51 | for(int i = 0; i < numNodes; i++) { 52 | mapping[i] = i; 53 | } 54 | 55 | srand(1331); 56 | for(int i = 0; i < numNodes; i++) { 57 | int node1 = rand() % numNodes; 58 | int node2 = rand() % numNodes; 59 | int temp = mapping[node1]; 60 | mapping[node1] = mapping[node2]; 61 | mapping[node2] = temp; 62 | } 63 | 64 | int currNode = 0; 65 | for(int r = 0; r < numRouters; r++) { 66 | for(int j = 0; j < rr_group; j++) { 67 | if(j >= skip) { 68 | break; 69 | } 70 | for(int g = 0; g < numGroups; g++) { 71 | int i = g * size_per_group + r * rr_group * rr; 72 | int useRank = mapping[currNode] * rr; 73 | if(useRank >= numAllocCores) { 74 | currNode++; 75 | continue; 76 | } 77 | for(int k = 0; k < rr; k++) { 78 | int global_rank = i + j + k * rr_group; 79 | fwrite(&global_rank, sizeof(int), 1, binout); 80 | fwrite(&useRank, sizeof(int), 1, binout); 81 | fwrite(&jobid, sizeof(int), 1, binout); 82 | granks[useRank] = global_rank; 83 | #if PRINT_MAP 84 | printf("%d %d %d\n", global_rank, useRank++, jobid); 85 | #else 86 | useRank++; 87 | #endif 88 | local_rank++; 89 | if(local_rank == numAllocCores) { 90 | break; 91 | } 92 | } 93 | if(local_rank == numAllocCores) { 94 | break; 95 | } 96 | currNode++; 97 | } 98 | if(local_rank == numAllocCores) { 99 | break; 100 | } 101 | } 102 | } 103 | 104 | for(int i = 0; i < numAllocCores; i++) { 105 | fwrite(&granks[i], sizeof(int), 1, out_files); 106 | } 107 | 108 | fclose(binout); 109 | fclose(out_files); 110 | } 111 | -------------------------------------------------------------------------------- /utils/dfly_node_rr_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 8) { 30 | printf("Correct usage: %s \n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int rr_group = atoi(argv[3]); 41 | int rr = atoi(argv[4]); 42 | int skip = atoi(argv[5]); 43 | int numGroups = atoi(argv[6]); 44 | int numRouters = atoi(argv[7]); 45 | int local_rank = 0; 46 | int size_per_group = numRouters * rr_group * rr; 47 | 48 | for(int r = 0; r < numRouters; r++) { 49 | for(int j = 0; j < rr_group; j++) { 50 | if(j >= skip) { 51 | break; 52 | } 53 | for(int g = 0; g < numGroups; g++) { 54 | int i = g * size_per_group + r * rr_group * rr; 55 | for(int k = 0; k < rr; k++) { 56 | int global_rank = i + j + k * rr_group; 57 | fwrite(&global_rank, sizeof(int), 1, binout); 58 | fwrite(&local_rank, sizeof(int), 1, binout); 59 | fwrite(&jobid, sizeof(int), 1, binout); 60 | fwrite(&global_rank, sizeof(int), 1, out_files); 61 | #if PRINT_MAP 62 | printf("%d %d %d\n", global_rank, local_rank, jobid); 63 | #endif 64 | local_rank++; 65 | if(local_rank == numAllocCores) { 66 | break; 67 | } 68 | } 69 | if(local_rank == numAllocCores) { 70 | break; 71 | } 72 | } 73 | if(local_rank == numAllocCores) { 74 | break; 75 | } 76 | } 77 | if(local_rank == numAllocCores) { 78 | break; 79 | } 80 | } 81 | fclose(binout); 82 | fclose(out_files); 83 | } 84 | -------------------------------------------------------------------------------- /utils/dfly_router_rr_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 8) { 30 | printf("Correct usage: %s \n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int rr_group = atoi(argv[3]); 41 | int rr = atoi(argv[4]); 42 | int skip = atoi(argv[5]); 43 | int numGroups = atoi(argv[6]); 44 | int numRouters = atoi(argv[7]); 45 | int local_rank = 0; 46 | int size_per_group = numRouters * rr_group * rr; 47 | 48 | for(int r = 0; r < numRouters; r++) { 49 | for(int g = 0; g < numGroups; g++) { 50 | for(int j = 0; j < rr_group; j++) { 51 | if(j >= skip) { 52 | break; 53 | } 54 | int i = g * size_per_group + r * rr_group * rr; 55 | for(int k = 0; k < rr; k++) { 56 | int global_rank = i + j + k * rr_group; 57 | fwrite(&global_rank, sizeof(int), 1, binout); 58 | fwrite(&local_rank, sizeof(int), 1, binout); 59 | fwrite(&jobid, sizeof(int), 1, binout); 60 | fwrite(&global_rank, sizeof(int), 1, out_files); 61 | #if PRINT_MAP 62 | printf("%d %d %d\n", global_rank, local_rank, jobid); 63 | #endif 64 | local_rank++; 65 | if(local_rank == numAllocCores) { 66 | break; 67 | } 68 | } 69 | if(local_rank == numAllocCores) { 70 | break; 71 | } 72 | } 73 | if(local_rank == numAllocCores) { 74 | break; 75 | } 76 | } 77 | if(local_rank == numAllocCores) { 78 | break; 79 | } 80 | } 81 | 82 | fclose(binout); 83 | fclose(out_files); 84 | } 85 | -------------------------------------------------------------------------------- /utils/hilbert.h: -------------------------------------------------------------------------------- 1 | /** \file hilbert.h 2 | * Author: Harshitha Menon 3 | * Contact: gplkrsh2@illinois.edu 4 | */ 5 | #ifndef HILBERT_H_ 6 | #define HILBERT_H_ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | using namespace std; 14 | 15 | int gray_encode(int i) { 16 | //cout << "gray_encode " << i << " " << (i^(i/2)) << endl; 17 | return i ^ (i/2); 18 | } 19 | 20 | int gray_decode(int n) { 21 | int sh = 1; 22 | int div; 23 | while (true) { 24 | div = n >> sh; 25 | n ^= div; 26 | if (div <= 1) { 27 | return n; 28 | } 29 | sh <<=1; 30 | } 31 | } 32 | 33 | void initial_start_end(int nChunks, int dim, int& start, int& end) { 34 | start = 0; 35 | ////cout << "-nchunks - 1 mod dim " << ((-nChunks-1)%dim) << endl; 36 | int mod_val = (-nChunks - 1) % dim; 37 | if (mod_val < 0) { 38 | mod_val += dim; 39 | } 40 | end = pow(2, mod_val); 41 | } 42 | 43 | int pack_index(vector chunks, int dim) { 44 | int p = pow(2, dim); 45 | int chunk_size = chunks.size(); 46 | int val = 0; 47 | for (int i = 0;i < chunk_size; i++) { 48 | val += chunks[i] * p; 49 | } 50 | return val; 51 | } 52 | 53 | vector transpose_bits(vector srcs, int nDests) { 54 | int nSrcs = srcs.size(); 55 | vector dests; 56 | dests.resize(nDests); 57 | int dest = 0; 58 | for (int j = nDests - 1; j > -1; j--) { 59 | dest = 0; 60 | ////cout << "nSrcs " << nSrcs << endl; 61 | for (int k = 0; k < nSrcs; k++) { 62 | dest = dest * 2 + srcs[k] % 2; 63 | srcs[k] /= 2; 64 | ////cout << "dest " << dest << endl; 65 | } 66 | dests[j] = dest; 67 | } 68 | return dests; 69 | } 70 | 71 | vector pack_coords(vector coord_chunks, int dim) { 72 | return transpose_bits(coord_chunks, dim); 73 | } 74 | 75 | void unpack_index(int i, int dim, vector& chunks) { 76 | int p = pow(2, dim); 77 | int nChunks = max(1, int(ceil(double(log(i+1))/log(p)))); 78 | //cout << "num chunks " << nChunks << endl; 79 | chunks.resize(nChunks); 80 | for (int j = nChunks-1; j > -1; j--) { 81 | chunks[j] = i % p; 82 | i /= p; 83 | ////cout << "chunks[" << j << "] " << chunks[j] << endl; 84 | } 85 | //cout << "chunk size " << chunks.size() << endl; 86 | } 87 | 88 | int gray_encode_travel(int start, int end, int mask, int i) { 89 | int travel_bit = start ^ end; 90 | int modulus = mask + 1; 91 | int g = gray_encode(i) * (travel_bit * 2); 92 | //cout << "start " << start << " end " << end << "travel_bits " << travel_bit << " modulus " << modulus << " g " << g << endl; 93 | return ((g | (g/modulus) ) & mask) ^ start; 94 | } 95 | 96 | int gray_decode_travel(int start, int end, int mask, int i) { 97 | int travel_bit = start ^ end; 98 | int modulus = mask + 1; 99 | int rg = (i ^ start) * ( modulus/(travel_bit * 2)); 100 | return gray_decode((rg | (rg / modulus)) & mask); 101 | } 102 | 103 | void child_start_end(int parent_start, int parent_end, int mask, int i, int& 104 | child_start, int& child_end) { 105 | int start_i = max(0, (i-1)&~1); 106 | //cout << "start_i " << start_i << endl; 107 | int end_i = min(mask, (i+1)|1); 108 | //cout << "end_i " << end_i << endl; 109 | child_start = gray_encode_travel(parent_start, parent_end, mask, start_i); 110 | child_end = gray_encode_travel(parent_start, parent_end, mask, end_i); 111 | //cout << "child_start " << child_start << " child end " << child_end << endl; 112 | } 113 | 114 | vector int_to_Hilbert(int i, int dim) { 115 | int nChunks, mask, start, end; 116 | vector index_chunks; 117 | unpack_index(i, dim, index_chunks); 118 | nChunks = index_chunks.size(); 119 | //cout << "int to hilbert of " << i << " in dim " << dim << " size " << nChunks << endl; 120 | mask = pow(2, dim) - 1; 121 | //cout << "mask " << mask << endl; 122 | initial_start_end(nChunks, dim, start, end); 123 | //cout << "start " << start << " end " << end << endl; 124 | vector coord_chunks; 125 | coord_chunks.resize(nChunks); 126 | for (int j = 0; j < nChunks; j++) { 127 | i = index_chunks[j]; 128 | coord_chunks[j] = gray_encode_travel(start, end, mask, i); 129 | //cout << "coord_chuunk " << j << " : " << coord_chunks[j] << endl; 130 | ////cout << "going for child start end" << endl; 131 | child_start_end(start, end, mask, i, start, end); 132 | //cout << "child start end " << start << " " << end << endl; 133 | } 134 | //return pack_index(index_chunks, dim); 135 | //cout << "coords size " << coord_chunks.size() << endl; 136 | return pack_coords(coord_chunks, dim); 137 | } 138 | #endif 139 | -------------------------------------------------------------------------------- /utils/job_config.input: -------------------------------------------------------------------------------- 1 | <#ranks> 2 | <#ranks> 3 | <#ranks> 4 | <#ranks> 5 | <#ranks> 6 | 7 | For app dims, choose any 3 grid suitable for the application. If the dimensions 8 | do not matter, simply use "#ranks 1 1". 9 | 10 | For node dim, choose how you would like to arrange ranks with a node. If the 11 | dimensions do not matter, simply use "#ranks_per_node 1 1". 12 | 13 | For router shape, choose how you would like to arrange nodes with a router. If 14 | it does not matter, simply use "#nodes_per_router 1 1". 15 | 16 | -------------------------------------------------------------------------------- /utils/node_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 6) { 30 | printf("Correct usage: %s [optional ]\n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int rr_group = atoi(argv[3]); 41 | int rr = atoi(argv[4]); 42 | int skip = rr_group; 43 | if(argc > 5) { 44 | skip = atoi(argv[5]); 45 | } 46 | int local_rank = 0; 47 | 48 | for(int i = 0; ; i += rr_group*rr) { 49 | for(int j = 0; j < rr_group; j++) { 50 | if(j == skip) { 51 | break; 52 | } 53 | for(int k = 0; k < rr; k++) { 54 | int global_rank = i + j + k * rr_group; 55 | fwrite(&global_rank, sizeof(int), 1, binout); 56 | fwrite(&local_rank, sizeof(int), 1, binout); 57 | fwrite(&jobid, sizeof(int), 1, binout); 58 | fwrite(&global_rank, sizeof(int), 1, out_files); 59 | #if PRINT_MAP 60 | printf("%d %d %d\n", global_rank, local_rank, jobid); 61 | #endif 62 | local_rank++; 63 | if(local_rank == numAllocCores) { 64 | break; 65 | } 66 | } 67 | if(local_rank == numAllocCores) { 68 | break; 69 | } 70 | } 71 | if(local_rank == numAllocCores) { 72 | break; 73 | } 74 | } 75 | 76 | fclose(binout); 77 | fclose(out_files); 78 | } 79 | -------------------------------------------------------------------------------- /utils/router_random_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 8) { 30 | printf("Correct usage: %s \n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int rr_group = atoi(argv[3]); 41 | int rr = atoi(argv[4]); 42 | int skip = atoi(argv[5]); 43 | int numGroups = atoi(argv[6]); 44 | int numRouters = atoi(argv[7]); 45 | int local_rank = 0; 46 | int size_per_group = numRouters * rr_group * rr; 47 | 48 | int totalRouters = numGroups * numRouters; 49 | int *mapping = new int[totalRouters]; 50 | int *granks = new int[numAllocCores]; 51 | for(int i = 0; i < totalRouters; i++) { 52 | mapping[i] = i; 53 | } 54 | 55 | srand(1331); 56 | for(int i = 0; i < totalRouters; i++) { 57 | int node1 = rand() % totalRouters; 58 | int node2 = rand() % totalRouters; 59 | int temp = mapping[node1]; 60 | mapping[node1] = mapping[node2]; 61 | mapping[node2] = temp; 62 | } 63 | 64 | int currNode = 0; 65 | for(int r = 0; r < numRouters; r++) { 66 | for(int g = 0; g < numGroups; g++) { 67 | for(int j = 0; j < rr_group; j++) { 68 | if(j >= skip) { 69 | break; 70 | } 71 | int i = g * size_per_group + r * rr_group * rr; 72 | int useRank = mapping[currNode] * skip * rr + j * rr; 73 | if(useRank >= numAllocCores) continue; 74 | for(int k = 0; k < rr; k++) { 75 | int global_rank = i + j + k * rr_group; 76 | fwrite(&global_rank, sizeof(int), 1, binout); 77 | fwrite(&useRank, sizeof(int), 1, binout); 78 | fwrite(&jobid, sizeof(int), 1, binout); 79 | granks[useRank] = global_rank; 80 | #if PRINT_MAP 81 | printf("%d %d %d\n", global_rank, useRank++, jobid); 82 | #else 83 | useRank++; 84 | #endif 85 | local_rank++; 86 | if(local_rank == numAllocCores) { 87 | break; 88 | } 89 | } 90 | if(local_rank == numAllocCores) { 91 | break; 92 | } 93 | } 94 | if(local_rank == numAllocCores) { 95 | break; 96 | } 97 | currNode++; 98 | } 99 | if(local_rank == numAllocCores) { 100 | break; 101 | } 102 | } 103 | 104 | for(int i = 0; i < numAllocCores; i++) { 105 | fwrite(&granks[i], sizeof(int), 1, out_files); 106 | } 107 | 108 | fclose(binout); 109 | fclose(out_files); 110 | } 111 | -------------------------------------------------------------------------------- /utils/spread_nodes.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 7) { 30 | printf("Correct usage: %s \n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int rr_group = atoi(argv[3]); 41 | int rr = atoi(argv[4]); 42 | int numRouters = atoi(argv[5]); 43 | int numNodes = atoi(argv[6]); 44 | int *mapping = new int[numNodes]; 45 | int *granks = new int[numAllocCores]; 46 | for(int i = 0; i < numNodes; i++) { 47 | mapping[i] = (i/144) + (i % 144) * 324; 48 | } 49 | 50 | int currNode = 0; 51 | int local_rank = 0; 52 | for(int r = 0; r < numRouters; r++) { 53 | int i = r * rr_group * rr; 54 | for(int j = 0; j < rr_group; j++) { 55 | int useRank = mapping[currNode] * rr; 56 | if(useRank >= numAllocCores) { 57 | currNode++; 58 | continue; 59 | } 60 | for(int k = 0; k < rr; k++) { 61 | int global_rank = i + j + k * rr_group; 62 | fwrite(&global_rank, sizeof(int), 1, binout); 63 | fwrite(&useRank, sizeof(int), 1, binout); 64 | fwrite(&jobid, sizeof(int), 1, binout); 65 | granks[useRank] = global_rank; 66 | #if PRINT_MAP 67 | printf("%d %d %d\n", global_rank, useRank++, jobid); 68 | #else 69 | useRank++; 70 | #endif 71 | local_rank++; 72 | if(local_rank == numAllocCores) { 73 | break; 74 | } 75 | } 76 | if(local_rank == numAllocCores) { 77 | break; 78 | } 79 | currNode++; 80 | } 81 | if(local_rank == numAllocCores) { 82 | break; 83 | } 84 | } 85 | 86 | for(int i = 0; i < numAllocCores; i++) { 87 | fwrite(&granks[i], sizeof(int), 1, out_files); 88 | } 89 | 90 | fclose(binout); 91 | fclose(out_files); 92 | } 93 | -------------------------------------------------------------------------------- /utils/stencil_block_block_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 8) { 30 | printf("Correct usage: %s \n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int rr_group = atoi(argv[3]); 41 | int rr = atoi(argv[4]); 42 | int skip = atoi(argv[5]); 43 | int numGroups = atoi(argv[6]); 44 | int numRouters = atoi(argv[7]); 45 | int box_x = atoi(argv[8]); 46 | int box_y = atoi(argv[9]); 47 | int box_z = atoi(argv[10]); 48 | int s_x = atoi(argv[11]); 49 | int s_y = atoi(argv[12]); 50 | int s_z = atoi(argv[13]); 51 | int r_x = atoi(argv[14]); 52 | int r_y = atoi(argv[15]); 53 | int r_z = atoi(argv[16]); 54 | int local_rank = 0; 55 | int size_per_group = numRouters * rr_group * rr; 56 | int *localRanks = new int[numAllocCores]; 57 | int *granks = new int[numAllocCores]; 58 | int bx = r_x; 59 | int by = r_y; 60 | int bz = r_z; 61 | int prod_xyz = s_x * s_y * s_z; 62 | int prod_xy = s_x * s_y; 63 | 64 | int bigger_box = skip * prod_xyz; 65 | int bbx = box_x/(r_x*s_x); 66 | int bby = box_y/(r_y*s_y); 67 | int bbz = box_z/(r_z*s_z); 68 | 69 | for(int i = 0; i < numAllocCores; i++) { 70 | int bigger_box_num = i / bigger_box; 71 | int my_x = (bigger_box_num % bbx) * r_x * s_x; 72 | int my_y = ((bigger_box_num / bbx) % bby) * r_y * s_y; 73 | int my_z = (bigger_box_num / (bbx * bby)) * r_z * s_z; 74 | 75 | int box_num = (i % bigger_box) / prod_xyz; 76 | int box_rank = ((i % bigger_box)) % prod_xyz; 77 | my_x += (box_num % bx) * s_x; 78 | my_y += ((box_num / bx) % by) * s_y; 79 | my_z += (box_num / (bx*by)) * s_z; 80 | 81 | my_x += box_rank % s_x; 82 | my_y += (box_rank / s_x) % s_y; 83 | my_z += box_rank / (s_x * s_y); 84 | 85 | int my_rank = my_x + my_y * box_x + my_z * box_x * box_y; 86 | localRanks[i] = my_rank; 87 | } 88 | 89 | bool cont = true; 90 | for(int g = 0; cont && (g < numGroups); g++) { 91 | for(int r = 0; (r < numRouters) && cont; r++) { 92 | for(int j = 0; cont && (j < rr_group); j++) { 93 | if(j >= skip) { 94 | break; 95 | } 96 | int i = g * size_per_group + r * rr_group * rr; 97 | for(int k = 0; k < rr; k++) { 98 | int global_rank = i + j + k * rr_group; 99 | fwrite(&global_rank, sizeof(int), 1, binout); 100 | fwrite(&localRanks[local_rank], sizeof(int), 1, binout); 101 | fwrite(&jobid, sizeof(int), 1, binout); 102 | granks[localRanks[local_rank]] = global_rank; 103 | #if PRINT_MAP 104 | printf("%d %d %d\n", global_rank, localRanks[local_rank], jobid); 105 | #endif 106 | local_rank++; 107 | if(local_rank == numAllocCores) { 108 | cont = false; 109 | break; 110 | } 111 | } 112 | } 113 | } 114 | } 115 | 116 | for(int i = 0; i < numAllocCores; i++) { 117 | fwrite(&granks[i], sizeof(int), 1, out_files); 118 | } 119 | fclose(binout); 120 | fclose(out_files); 121 | } 122 | -------------------------------------------------------------------------------- /utils/stencil_block_block_random_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 8) { 30 | printf("Correct usage: %s \n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int rr_group = atoi(argv[3]); 41 | int rr = atoi(argv[4]); 42 | int skip = atoi(argv[5]); 43 | int numGroups = atoi(argv[6]); 44 | int numRouters = atoi(argv[7]); 45 | int box_x = atoi(argv[8]); 46 | int box_y = atoi(argv[9]); 47 | int box_z = atoi(argv[10]); 48 | int s_x = atoi(argv[11]); 49 | int s_y = atoi(argv[12]); 50 | int s_z = atoi(argv[13]); 51 | int r_x = atoi(argv[14]); 52 | int r_y = atoi(argv[15]); 53 | int r_z = atoi(argv[16]); 54 | int local_rank = 0; 55 | int size_per_group = numRouters * rr_group * rr; 56 | int *localRanks = new int[numAllocCores]; 57 | int *granks = new int[numAllocCores]; 58 | int bx = r_x; 59 | int by = r_y; 60 | int bz = r_z; 61 | int prod_xyz = s_x * s_y * s_z; 62 | int prod_xy = s_x * s_y; 63 | 64 | int bigger_box = skip * prod_xyz; 65 | int bbx = box_x/(r_x*s_x); 66 | int bby = box_y/(r_y*s_y); 67 | int bbz = box_z/(r_z*s_z); 68 | 69 | for(int i = 0; i < numAllocCores; i++) { 70 | int bigger_box_num = i / bigger_box; 71 | int my_x = (bigger_box_num % bbx) * r_x * s_x; 72 | int my_y = ((bigger_box_num / bbx) % bby) * r_y * s_y; 73 | int my_z = (bigger_box_num / (bbx * bby)) * r_z * s_z; 74 | 75 | int box_num = (i % bigger_box) / prod_xyz; 76 | int box_rank = ((i % bigger_box)) % prod_xyz; 77 | my_x += (box_num % bx) * s_x; 78 | my_y += ((box_num / bx) % by) * s_y; 79 | my_z += (box_num / (bx*by)) * s_z; 80 | 81 | my_x += box_rank % s_x; 82 | my_y += (box_rank / s_x) % s_y; 83 | my_z += box_rank / (s_x * s_y); 84 | 85 | int my_rank = my_x + my_y * box_x + my_z * box_x * box_y; 86 | localRanks[i] = my_rank; 87 | } 88 | 89 | int totalRouters = numGroups * numRouters; 90 | int *mapping = new int[totalRouters]; 91 | for(int i = 0; i < totalRouters ; i++) { 92 | mapping[i] = i; 93 | } 94 | 95 | srand(1331); 96 | for(int i = 0; i < 4*totalRouters; i++) { 97 | int node1 = rand() % totalRouters; 98 | int node2 = rand() % totalRouters; 99 | int temp = mapping[node1]; 100 | mapping[node1] = mapping[node2]; 101 | mapping[node2] = temp; 102 | } 103 | 104 | bool cont = true; 105 | int currRouter = 0; 106 | for(int g = 0; cont && (g < numGroups); g++) { 107 | for(int r = 0; (r < numRouters) && cont; r++) { 108 | for(int j = 0; cont && (j < rr_group); j++) { 109 | if(j >= skip) { 110 | break; 111 | } 112 | int i = g * size_per_group + r * rr_group * rr; 113 | int useRank = mapping[currRouter] * skip * rr + j * rr; 114 | if(useRank >= numAllocCores) continue; 115 | for(int k = 0; k < rr; k++) { 116 | int global_rank = i + j + k * rr_group; 117 | fwrite(&global_rank, sizeof(int), 1, binout); 118 | fwrite(&localRanks[useRank], sizeof(int), 1, binout); 119 | fwrite(&jobid, sizeof(int), 1, binout); 120 | granks[localRanks[useRank]] = global_rank; 121 | #if PRINT_MAP 122 | printf("%d %d %d\n", global_rank, localRanks[useRank++], jobid); 123 | #else 124 | useRank++; 125 | #endif 126 | local_rank++; 127 | if(local_rank == numAllocCores) { 128 | cont = false; 129 | break; 130 | } 131 | } 132 | } 133 | currRouter++; 134 | } 135 | } 136 | 137 | for(int i = 0; i < numAllocCores; i++) { 138 | fwrite(&granks[i], sizeof(int), 1, out_files); 139 | } 140 | fclose(binout); 141 | fclose(out_files); 142 | } 143 | -------------------------------------------------------------------------------- /utils/stencil_block_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 6) { 30 | printf("Correct usage: %s \n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int rr_group = atoi(argv[3]); 41 | int rr = atoi(argv[4]); 42 | int skip = atoi(argv[5]); 43 | int local_rank = 0; 44 | int box_x = atoi(argv[6]); 45 | int box_y = atoi(argv[7]); 46 | int box_z = atoi(argv[8]); 47 | int s_x = atoi(argv[9]); 48 | int s_y = atoi(argv[10]); 49 | int s_z = atoi(argv[11]); 50 | 51 | int *localRanks = new int[numAllocCores]; 52 | int *granks = new int[numAllocCores]; 53 | int bx = box_x/s_x; 54 | int by = box_y/s_y; 55 | int bz = box_z/s_z; 56 | int prod_xyz = s_x * s_y * s_z; 57 | int prod_xy = s_x * s_y; 58 | 59 | for(int i = 0; i < numAllocCores; i++) { 60 | int box_num = i / prod_xyz; 61 | int box_rank = i % prod_xyz; 62 | int x = box_num % bx; 63 | int y = (box_num / bx) % by; 64 | int z = box_num / (bx*by); 65 | 66 | int my_x = x * s_x + box_rank % s_x; 67 | int my_y = y * s_y + (box_rank / s_x) % s_y; 68 | int my_z = z * s_z + box_rank / (s_x * s_y); 69 | 70 | int my_rank = my_x + my_y * box_x + my_z * box_x * box_y; 71 | 72 | localRanks[i] = my_rank; 73 | } 74 | 75 | for(int i = 0; ; i += rr_group*rr) { 76 | for(int j = 0; j < rr_group; j++) { 77 | if(j == skip) { 78 | break; 79 | } 80 | for(int k = 0; k < rr; k++) { 81 | int global_rank = i + j + k * rr_group; 82 | fwrite(&global_rank, sizeof(int), 1, binout); 83 | fwrite(&localRanks[local_rank], sizeof(int), 1, binout); 84 | fwrite(&jobid, sizeof(int), 1, binout); 85 | granks[localRanks[local_rank]] = global_rank; 86 | #if PRINT_MAP 87 | printf("%d %d %d\n", global_rank, localRanks[local_rank], jobid); 88 | #endif 89 | local_rank++; 90 | if(local_rank == numAllocCores) { 91 | break; 92 | } 93 | } 94 | if(local_rank == numAllocCores) { 95 | break; 96 | } 97 | } 98 | if(local_rank == numAllocCores) { 99 | break; 100 | } 101 | } 102 | 103 | for(int i = 0; i < numAllocCores; i++) { 104 | fwrite(&granks[i], sizeof(int), 1, out_files); 105 | } 106 | 107 | fclose(binout); 108 | fclose(out_files); 109 | } 110 | -------------------------------------------------------------------------------- /utils/stencil_block_node_random_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 8) { 30 | printf("Correct usage: %s \n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int rr_group = atoi(argv[3]); 41 | int rr = atoi(argv[4]); 42 | int skip = atoi(argv[5]); 43 | int numGroups = atoi(argv[6]); 44 | int numRouters = atoi(argv[7]); 45 | int local_rank = 0; 46 | int box_x = atoi(argv[8]); 47 | int box_y = atoi(argv[9]); 48 | int box_z = atoi(argv[10]); 49 | int s_x = atoi(argv[11]); 50 | int s_y = atoi(argv[12]); 51 | int s_z = atoi(argv[13]); 52 | 53 | int *localRanks = new int[numAllocCores]; 54 | 55 | int size_per_group = numRouters * rr_group * rr; 56 | 57 | int numNodes = numGroups * numRouters * skip; 58 | int *mapping = new int[numNodes]; 59 | int *granks = new int[numAllocCores]; 60 | 61 | int bx = box_x/s_x; 62 | int by = box_y/s_y; 63 | int bz = box_z/s_z; 64 | int prod_xyz = s_x * s_y * s_z; 65 | int prod_xy = s_x * s_y; 66 | 67 | for(int i = 0; i < numAllocCores; i++) { 68 | int box_num = i / prod_xyz; 69 | int box_rank = i % prod_xyz; 70 | int x = box_num % bx; 71 | int y = (box_num / bx) % by; 72 | int z = box_num / (bx*by); 73 | 74 | int my_x = x * s_x + box_rank % s_x; 75 | int my_y = y * s_y + (box_rank / s_x) % s_y; 76 | int my_z = z * s_z + box_rank / (s_x * s_y); 77 | 78 | int my_rank = my_x + my_y * box_x + my_z * box_x * box_y; 79 | 80 | localRanks[i] = my_rank; 81 | } 82 | 83 | for(int i = 0; i < numNodes; i++) { 84 | mapping[i] = i; 85 | } 86 | 87 | srand(1331); 88 | for(int i = 0; i < numNodes; i++) { 89 | int node1 = rand() % numNodes; 90 | int node2 = rand() % numNodes; 91 | int temp = mapping[node1]; 92 | mapping[node1] = mapping[node2]; 93 | mapping[node2] = temp; 94 | } 95 | 96 | int currNode = 0; 97 | for(int g = 0; g < numGroups; g++) { 98 | for(int r = 0; r < numRouters; r++) { 99 | for(int j = 0; j < rr_group; j++) { 100 | if(j >= skip) { 101 | break; 102 | } 103 | int i = g * size_per_group + r * rr_group * rr; 104 | int useRank = mapping[currNode] * rr; 105 | if(useRank >= numAllocCores) { 106 | currNode++; 107 | continue; 108 | } 109 | for(int k = 0; k < rr; k++) { 110 | int global_rank = i + j + k * rr_group; 111 | fwrite(&global_rank, sizeof(int), 1, binout); 112 | fwrite(&localRanks[useRank], sizeof(int), 1, binout); 113 | fwrite(&jobid, sizeof(int), 1, binout); 114 | granks[localRanks[useRank]] = global_rank; 115 | #if PRINT_MAP 116 | printf("%d %d %d\n", global_rank, localRanks[useRank++], jobid); 117 | #else 118 | useRank++; 119 | #endif 120 | local_rank++; 121 | if(local_rank == numAllocCores) { 122 | break; 123 | } 124 | } 125 | if(local_rank == numAllocCores) { 126 | break; 127 | } 128 | currNode++; 129 | } 130 | if(local_rank == numAllocCores) { 131 | break; 132 | } 133 | } 134 | } 135 | 136 | for(int i = 0; i < numAllocCores; i++) { 137 | fwrite(&granks[i], sizeof(int), 1, out_files); 138 | } 139 | 140 | fclose(binout); 141 | fclose(out_files); 142 | } 143 | -------------------------------------------------------------------------------- /utils/stencil_block_torus_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | 23 | using namespace std; 24 | 25 | int main(int argc, char**argv) { 26 | FILE *binout = fopen(argv[1], "wb"); 27 | int jobid = 0; 28 | FILE* out_files; 29 | 30 | if(argc < 3) { 31 | printf("Correct usage: %s \n", 32 | argv[0]); 33 | exit(1); 34 | } 35 | 36 | char dFILE[256]; 37 | sprintf(dFILE, "%s%d", "job", 0); 38 | out_files = fopen(dFILE, "wb"); 39 | 40 | int numAllocCores = atoi(argv[2]); 41 | int box_x = atoi(argv[3]); 42 | int box_y = atoi(argv[4]); 43 | int box_z = atoi(argv[5]); 44 | int s_x = atoi(argv[6]); 45 | int s_y = atoi(argv[7]); 46 | int s_z = atoi(argv[8]); 47 | int local_rank = 0; 48 | int *localRanks = new int[numAllocCores]; 49 | int *granks = new int[numAllocCores]; 50 | int prod_xyz = s_x * s_y * s_z; 51 | int prod_xy = s_x * s_y; 52 | 53 | int bigger_box = 64 * prod_xyz; 54 | int bbx = box_x/(4*s_x); 55 | int bby = box_y/(4*s_y); 56 | int bbz = box_z/(4*s_z); 57 | int bx = 4; 58 | int by = 4; 59 | int bz = 4; 60 | 61 | for(int i = 0; i < numAllocCores; i++) { 62 | localRanks[i] = -1; 63 | granks[i] = -1; 64 | } 65 | for(int i = 0; i < numAllocCores; i++) { 66 | int bigger_box_num = i / bigger_box; 67 | int my_x = (bigger_box_num % bbx) * 4 * s_x; 68 | int my_y = ((bigger_box_num / bbx) % bby) * 4 * s_y; 69 | int my_z = (bigger_box_num / (bbx * bby)) * 4 * s_z; 70 | 71 | int box_num = (i % bigger_box) / prod_xyz; 72 | int box_rank = ((i % bigger_box)) % prod_xyz; 73 | my_x += (box_num % bx) * s_x; 74 | my_y += ((box_num / bx) % by) * s_y; 75 | my_z += (box_num / (bx*by)) * s_z; 76 | 77 | my_x += box_rank % s_x; 78 | my_y += (box_rank / s_x) % s_y; 79 | my_z += box_rank / (s_x * s_y); 80 | 81 | int my_rank = my_x + my_y * box_x + my_z * box_x * box_y; 82 | assert(localRanks[i] == -1); 83 | localRanks[i] = my_rank; 84 | } 85 | for(int i = 0; i < numAllocCores; i++) { 86 | assert(localRanks[i] != -1); 87 | } 88 | 89 | int d[6], o[6]; 90 | bool cont = true; 91 | for(o[0] = 0; cont && (o[0] < 6); o[0] += 2) { 92 | for(o[1] = 0; cont && (o[1] < 6); o[1] += 2) { 93 | for(o[2] = 0; cont && (o[2] < 6); o[2] += 2) { 94 | for(o[3] = 0; cont && (o[3] < 6); o[3] += 2) { 95 | for(o[4] = 0; cont && (o[4] < 6); o[4] += 2) { 96 | for(o[5] = 0; cont && (o[5] < 6); o[5] += 2) { 97 | for(d[0] = o[0]; cont && (d[0] < o[0] + 2); d[0]++) { 98 | for(d[1] = o[1]; cont && (d[1] < o[1] + 2); d[1]++) { 99 | for(d[2] = o[2]; cont && (d[2] < o[2] + 2); d[2]++) { 100 | for(d[3] = o[3]; cont && (d[3] < o[3] + 2); d[3]++) { 101 | for(d[4] = o[4]; cont && (d[4] < o[4] + 2); d[4]++) { 102 | for(d[5] = o[5]; cont && (d[5] < o[5] + 2); d[5]++) { 103 | int realNode = d[5] + d[4] * 6 + d[3] * 36 + d[2] * 216 + d[1] * 1296 + d[0] * 7776; 104 | int base_global_rank = realNode * 16; 105 | for(int j = 0; j < 16; j++) { 106 | int global_rank = base_global_rank + j; 107 | fwrite(&global_rank, sizeof(int), 1, binout); 108 | fwrite(&localRanks[local_rank], sizeof(int), 1, binout); 109 | fwrite(&jobid, sizeof(int), 1, binout); 110 | assert(granks[localRanks[local_rank]] == -1); 111 | granks[localRanks[local_rank]] = global_rank; 112 | #if PRINT_MAP 113 | printf("%d %d %d\n", global_rank, localRanks[local_rank], jobid); 114 | #endif 115 | local_rank++; 116 | if(local_rank == numAllocCores) { 117 | cont = false; 118 | break; 119 | } 120 | } 121 | }}}}}}}}}}}} 122 | 123 | for(int i = 0; i < numAllocCores; i++) { 124 | fwrite(&granks[i], sizeof(int), 1, out_files); 125 | } 126 | fclose(binout); 127 | fclose(out_files); 128 | } 129 | -------------------------------------------------------------------------------- /utils/torus_block_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 3) { 30 | printf("Correct usage: %s \n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int local_rank = 0; 41 | int d[6], o[6]; 42 | for(o[0] = 0; o[0] < 6; o[0] += 2) { 43 | for(o[1] = 0; o[1] < 6; o[1] += 2) { 44 | for(o[2] = 0; o[2] < 6; o[2] += 2) { 45 | for(o[3] = 0; o[3] < 6; o[3] += 2) { 46 | for(o[4] = 0; o[4] < 6; o[4] += 2) { 47 | for(o[5] = 0; o[5] < 6; o[5] += 2) { 48 | for(d[0] = o[0]; d[0] < o[0] + 2; d[0]++) { 49 | for(d[1] = o[1]; d[1] < o[1] + 2; d[1]++) { 50 | for(d[2] = o[2]; d[2] < o[2] + 2; d[2]++) { 51 | for(d[3] = o[3]; d[3] < o[3] + 2; d[3]++) { 52 | for(d[4] = o[4]; d[4] < o[4] + 2; d[4]++) { 53 | for(d[5] = o[5]; d[5] < o[5] + 2; d[5]++) { 54 | int realNode = d[5] + d[4] * 6 + d[3] * 36 + d[2] * 216 + d[1] * 1296 55 | + d[0] * 7776; 56 | int base_global_rank = realNode * 64; 57 | for(int j = 0; j < 64; j++) { 58 | int global_rank = base_global_rank + j; 59 | fwrite(&global_rank, sizeof(int), 1, binout); 60 | fwrite(&local_rank, sizeof(int), 1, binout); 61 | fwrite(&jobid, sizeof(int), 1, binout); 62 | fwrite(&global_rank, sizeof(int), 1, out_files); 63 | #if PRINT_MAP 64 | printf("%d %d %d\n", global_rank, local_rank, jobid); 65 | #endif 66 | local_rank++; 67 | if(local_rank == numAllocCores) { 68 | break; 69 | } 70 | } 71 | if(local_rank == numAllocCores) { 72 | fclose(binout); 73 | fclose(out_files); 74 | return 0; 75 | } 76 | }}}}}}}}}}}} 77 | } 78 | -------------------------------------------------------------------------------- /utils/torus_node_random_mapping.C: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | using namespace std; 23 | 24 | int main(int argc, char**argv) { 25 | FILE *binout = fopen(argv[1], "wb"); 26 | int jobid = 0; 27 | FILE* out_files; 28 | 29 | if(argc < 5) { 30 | printf("Correct usage: %s \n", 31 | argv[0]); 32 | exit(1); 33 | } 34 | 35 | char dFILE[256]; 36 | sprintf(dFILE, "%s%d", "job", 0); 37 | out_files = fopen(dFILE, "wb"); 38 | 39 | int numAllocCores = atoi(argv[2]); 40 | int rr = atoi(argv[3]); 41 | int numNodes = atoi(argv[4]); 42 | int local_rank = 0; 43 | 44 | int *mapping = new int[numNodes]; 45 | int *granks = new int[numAllocCores]; 46 | for(int i = 0; i < numNodes; i++) { 47 | mapping[i] = i; 48 | } 49 | 50 | srand(1331); 51 | for(int i = 0; i < numNodes; i++) { 52 | int node1 = rand() % numNodes; 53 | int node2 = rand() % numNodes; 54 | int temp = mapping[node1]; 55 | mapping[node1] = mapping[node2]; 56 | mapping[node2] = temp; 57 | } 58 | 59 | for(int currNode = 0; currNode < numNodes; currNode++) { 60 | int i = currNode * rr; 61 | int useRank = mapping[currNode] * rr; 62 | if(useRank >= numAllocCores) continue; 63 | for(int k = 0; k < rr; k++) { 64 | int global_rank = i + k; 65 | fwrite(&global_rank, sizeof(int), 1, binout); 66 | fwrite(&useRank, sizeof(int), 1, binout); 67 | fwrite(&jobid, sizeof(int), 1, binout); 68 | granks[useRank] = global_rank; 69 | #if PRINT_MAP 70 | printf("%d %d %d\n", global_rank, useRank++, jobid); 71 | #else 72 | useRank++; 73 | #endif 74 | local_rank++; 75 | if(local_rank == numAllocCores) { 76 | break; 77 | } 78 | } 79 | if(local_rank == numAllocCores) { 80 | break; 81 | } 82 | } 83 | 84 | for(int i = 0; i < numAllocCores; i++) { 85 | fwrite(&granks[i], sizeof(int), 1, out_files); 86 | } 87 | 88 | fclose(binout); 89 | fclose(out_files); 90 | } 91 | -------------------------------------------------------------------------------- /utils/traceHelp/Makefile: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | # Produced at the Lawrence Livermore National Laboratory. 4 | # 5 | # Written by: 6 | # Nikhil Jain 7 | # Bilge Acun 8 | # Abhinav Bhatele 9 | # 10 | # LLNL-CODE-740483. All rights reserved. 11 | # 12 | # This file is part of TraceR. For details, see: 13 | # https://github.com/LLNL/TraceR 14 | # Please also read the LICENSE file for the MIT License notice. 15 | ############################################################################## 16 | 17 | CHARMC ?= $(HOME)/charm/bin/charmc 18 | 19 | all: traceToFile 20 | 21 | traceToFile: traceToFile.cpp 22 | $(CHARMC) $< -seq -o $@ -lconv-bigsim-logs -lconv-util -lblue-standalone -language c++ 23 | 24 | clean: 25 | rm -rf traceToFile 26 | -------------------------------------------------------------------------------- /utils/traceHelp/traceToFile.cpp: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // Copyright (c) 2015, Lawrence Livermore National Security, LLC. 3 | // Produced at the Lawrence Livermore National Laboratory. 4 | // 5 | // Written by: 6 | // Nikhil Jain 7 | // Bilge Acun 8 | // Abhinav Bhatele 9 | // 10 | // LLNL-CODE-740483. All rights reserved. 11 | // 12 | // This file is part of TraceR. For details, see: 13 | // https://github.com/LLNL/TraceR 14 | // Please also read the LICENSE file for the MIT License notice. 15 | ////////////////////////////////////////////////////////////////////////////// 16 | 17 | #include "assert.h" 18 | #include "blue.h" 19 | #include "blue_impl.h" 20 | #include 21 | #include 22 | #define TIME_MULT 1000000000 23 | 24 | extern BgTimeLineRec* currTline; 25 | extern int currTlineIdx; 26 | void printLogToFile(BgTimeLog* bglog, FILE* file); 27 | 28 | int main(int argc, char** argv) 29 | { 30 | int numPes; // number of emulation PEs 31 | int totalWorkerProcs; 32 | int numX, numY, numZ; 33 | int numCth; //communication PEs per node 34 | int numWth; //Working PEs per node 35 | int* allNodeOffsets; 36 | int numPesToTranslate; 37 | 38 | BgLoadTraceSummary("bgTrace", totalWorkerProcs, numX, numY, numZ, numCth, 39 | numWth, numPes); 40 | printf("totalWorkers:%d, numX:%d, numY:%d numZ:%d numCth:%d numWth:%d " 41 | "numPes:%d\n", totalWorkerProcs, numX, numY, numZ, numCth, numWth,numPes); 42 | allNodeOffsets = BgLoadOffsets(totalWorkerProcs, numPes); 43 | 44 | int startTranslate = 0; 45 | if(argc == 2) { 46 | numPesToTranslate = atoi(argv[1]); 47 | } else if(argc == 3) { 48 | startTranslate = atoi(argv[1]); 49 | numPesToTranslate = atoi(argv[2]); 50 | } else { 51 | numPesToTranslate = totalWorkerProcs; 52 | } 53 | for (int i = startTranslate; i < numPesToTranslate; ++i) { 54 | BgTimeLineRec tlinerec; // Time line (list of logs) 55 | currTline = &tlinerec; // set global variable 56 | currTlineIdx = i; // set global variable 57 | int status = BgReadProc(i, numWth , numPes, totalWorkerProcs, 58 | allNodeOffsets, tlinerec); 59 | char name[10]; 60 | sprintf(name,"PE%d", i); 61 | FILE* file = fopen(name, "w"); 62 | for(int logInd = 0; logInd < tlinerec.length(); logInd++) 63 | { 64 | BgTimeLog *bglog = tlinerec[logInd]; 65 | printLogToFile(bglog, file); 66 | } 67 | fclose(file); 68 | printf("PE finished %d\n",i); 69 | } 70 | return 0; 71 | } 72 | 73 | void printLogToFile(BgTimeLog* bglog, FILE* file) 74 | { 75 | fprintf(file, "[%d][%s:%f] ", bglog->seqno, bglog->name, bglog->execTime); 76 | 77 | fprintf(file,"$P[%d:%d] ", bglog->msgId.pe(), bglog->msgId.msgID()); 78 | 79 | fprintf(file,"$S["); 80 | for(int i = 0; i < bglog->msgs.length(); i++) 81 | { 82 | fprintf(file,"(o %f: ", bglog->msgs[i]->sendTime - bglog->startTime); 83 | fprintf(file,"n %d ", bglog->msgs[i]->dstNode); 84 | fprintf(file,"t %d ", bglog->msgs[i]->tID); 85 | fprintf(file,"b %d ", bglog->msgs[i]->msgsize); 86 | fprintf(file,"i %d)", bglog->msgs[i]->msgID); 87 | } 88 | fprintf(file,"] "); 89 | 90 | fprintf(file,"$B[ "); 91 | for(int i = 0; i < bglog->backwardDeps.length(); i++) 92 | { 93 | fprintf(file,"%d ", bglog->backwardDeps[i]->seqno); 94 | } 95 | fprintf(file,"] "); 96 | 97 | fprintf(file,"$F[ "); 98 | for(int i = 0; i < bglog->forwardDeps.length(); i++){ 99 | fprintf(file,"%d ",bglog->forwardDeps[i]->seqno); 100 | } 101 | fprintf(file,"] "); 102 | 103 | fprintf(file,"$E["); 104 | for(int i = 0; i < bglog->evts.length(); i++){ 105 | fprintf(file,"(%f %s)", bglog->evts[i]->rTime, 106 | ((char *)bglog->evts[i]->data)); 107 | } 108 | fprintf(file,"]\n"); 109 | } 110 | 111 | --------------------------------------------------------------------------------