88
99env :
1010 BUILD_DIR : build
11- GENERATORS_DIR : scripts/generators
12- FLAMEGRAPH_ARTIFACT_DIR : flamegraph
11+ EXECUTABLE_PATH : build/nons
12+
13+ GENERATORS_DIR : scripts/generators
14+ FAT_TREE_GENERATOR : scripts/generators/topology/fat_tree/fat_tree.py
15+ FAT_TREE_CONFIGS_DIR : scripts/generators/topology/fat_tree
16+ FAT_TREE_SMALL_CONFIG : scripts/generators/topology/fat_tree/small_fat_tree_config.yml
17+ FAT_TREE_LARGE_CONFIG : scripts/generators/topology/fat_tree/large_fat_tree_config.yml
18+ ALL_TO_ALL_GENERATOR : scripts/generators/ti_simulation/all-to-all/all-to-all.py
19+
1320 FLAMEGRAPH_TOPOLOGY_NAME : fat_tree_topology.yml
1421 FLAMEGRAPH_SIMULATION_NAME : fat_tree_simulation.yml
22+ FLAMEGRAPH_ARTIFACT_DIR : flamegraph
23+ FLAMEGRAPH_OUTPUT_DIR : flamegraph/flamegraph
1524
1625jobs :
1726 load_testing :
@@ -23,29 +32,19 @@ jobs:
2332 - name : Update submodules
2433 run : git submodule update --init --recursive
2534
26- - name : Derive env vars
27- run : |
28- echo "EXECUTABLE_PATH=$BUILD_DIR/nons" >> $GITHUB_ENV
29- echo "FAT_TREE_GENERATOR=$GENERATORS_DIR/topology/fat_tree/fat_tree.py" >> $GITHUB_ENV
30- echo "ALL_TO_ALL_GENERATOR=$GENERATORS_DIR/ti_simulation/all-to-all/all-to-all.py" >> $GITHUB_ENV
31- echo "FAT_TREE_CONFIGS_DIR=$GENERATORS_DIR/topology/fat_tree" >> $GITHUB_ENV
32- echo "FAT_TREE_SMALL_CONFIG=$GENERATORS_DIR/topology/fat_tree/small_fat_tree_config.yml" >> $GITHUB_ENV
33- echo "FAT_TREE_LARGE_CONFIG=$GENERATORS_DIR/topology/fat_tree/large_fat_tree_config.yml" >> $GITHUB_ENV
34- echo "FLAMEGRAPH_OUTPUT_DIR=$FLAMEGRAPH_ARTIFACT_DIR/flamegraph" >> $GITHUB_ENV
35-
3635 - name : Configure CMake for building project
37- run : cmake -B $BUILD_DIR -DCMAKE_BUILD_TYPE=Release -DBUILD_PROJECT=ON -DBUILD_TESTS=OFF -DLOG_LEVEL=LOG_LEVEL_ERROR
36+ run : cmake -B ${{env. BUILD_DIR}} -DCMAKE_BUILD_TYPE=Release -DBUILD_PROJECT=ON -DBUILD_TESTS=OFF -DLOG_LEVEL=LOG_LEVEL_ERROR
3837
3938 - name : Build project
40- run : cmake --build $BUILD_DIR -j $(nproc)
39+ run : cmake --build ${{env. BUILD_DIR}} -j $(nproc)
4140
4241 - name : Update PYTHONPATH
4342 run : echo "PYTHONPATH=${{ github.workspace }}/scripts" >> $GITHUB_ENV
4443
4544 - name : Run simulations
4645 run : |
47- python3 scripts/generate_configs_and_run.py -e $EXECUTABLE_PATH -t $FAT_TREE_GENERATOR -tc $FAT_TREE_SMALL_CONFIG
48- python3 scripts/generate_configs_and_run.py -e $EXECUTABLE_PATH -t $FAT_TREE_GENERATOR -tc $FAT_TREE_LARGE_CONFIG
46+ python3 scripts/generate_configs_and_run.py -e ${{env. EXECUTABLE_PATH}} -t ${{env. FAT_TREE_GENERATOR}} -tc ${{env. FAT_TREE_SMALL_CONFIG}}
47+ python3 scripts/generate_configs_and_run.py -e ${{env. EXECUTABLE_PATH}} -t ${{env. FAT_TREE_GENERATOR}} -tc ${{env. FAT_TREE_LARGE_CONFIG}}
4948
5049
5150 profiling_load_testing :
@@ -56,34 +55,24 @@ jobs:
5655 - name : Update submodules
5756 run : git submodule update --init --recursive
5857
59- - name : Derive env vars
60- run : |
61- echo "EXECUTABLE_PATH=$BUILD_DIR/nons" >> $GITHUB_ENV
62- echo "FAT_TREE_GENERATOR=$GENERATORS_DIR/topology/fat_tree/fat_tree.py" >> $GITHUB_ENV
63- echo "ALL_TO_ALL_GENERATOR=$GENERATORS_DIR/ti_simulation/all-to-all/all-to-all.py" >> $GITHUB_ENV
64- echo "FAT_TREE_CONFIGS_DIR=$GENERATORS_DIR/topology/fat_tree" >> $GITHUB_ENV
65- echo "FAT_TREE_SMALL_CONFIG=$GENERATORS_DIR/topology/fat_tree/small_fat_tree_config.yml" >> $GITHUB_ENV
66- echo "FAT_TREE_LARGE_CONFIG=$GENERATORS_DIR/topology/fat_tree/large_fat_tree_config.yml" >> $GITHUB_ENV
67- echo "FLAMEGRAPH_OUTPUT_DIR=$FLAMEGRAPH_ARTIFACT_DIR/flamegraph" >> $GITHUB_ENV
68-
6958 - name : Configure CMake for profiling
70- run : cmake -B $BUILD_DIR -DCMAKE_BUILD_TYPE=Release -DBUILD_PROJECT=ON -DBUILD_TESTS=OFF -DPROFILING=ON -DLOG_LEVEL=LOG_LEVEL_ERROR
59+ run : cmake -B ${{env. BUILD_DIR}} -DCMAKE_BUILD_TYPE=Release -DBUILD_PROJECT=ON -DBUILD_TESTS=OFF -DPROFILING=ON -DLOG_LEVEL=LOG_LEVEL_ERROR
7160
7261 - name : Build project with profiling
73- run : cmake --build $BUILD_DIR -j $(nproc)
62+ run : cmake --build ${{env. BUILD_DIR}} -j $(nproc)
7463
7564 - name : Update PYTHONPATH
7665 run : echo "PYTHONPATH=${{ github.workspace }}/scripts" >> $GITHUB_ENV
7766
7867 - name : Run simulations with profiling
7968 run : |
80- python3 scripts/generate_configs_and_run.py -e $EXECUTABLE_PATH -t $FAT_TREE_GENERATOR -tc $FAT_TREE_SMALL_CONFIG
81- gprof $EXECUTABLE_PATH > profile.txt || true
82- head profile.txt || true
69+ python3 scripts/generate_configs_and_run.py -e ${{env. EXECUTABLE_PATH}} -t ${{env. FAT_TREE_GENERATOR}} -tc ${{env. FAT_TREE_SMALL_CONFIG}}
70+ gprof ${{env. EXECUTABLE_PATH}} > profile.txt
71+ head profile.txt
8372
84- python3 scripts/generate_configs_and_run.py -e $EXECUTABLE_PATH -t $FAT_TREE_GENERATOR -tc $FAT_TREE_LARGE_CONFIG
85- gprof $EXECUTABLE_PATH > profile.txt || true
86- head profile.txt || true
73+ python3 scripts/generate_configs_and_run.py -e ${{env. EXECUTABLE_PATH}} -t ${{env. FAT_TREE_GENERATOR}} -tc ${{env. FAT_TREE_LARGE_CONFIG}}
74+ gprof ${{env. EXECUTABLE_PATH}} > profile.txt
75+ head profile.txt
8776
8877 flamegraph :
8978 runs-on : ubuntu-latest
@@ -96,50 +85,41 @@ jobs:
9685 - name : Update submodules
9786 run : git submodule update --init --recursive
9887
99- - name : Derive env vars
100- run : |
101- echo "EXECUTABLE_PATH=$BUILD_DIR/nons" >> $GITHUB_ENV
102- echo "FAT_TREE_GENERATOR=$GENERATORS_DIR/topology/fat_tree/fat_tree.py" >> $GITHUB_ENV
103- echo "ALL_TO_ALL_GENERATOR=$GENERATORS_DIR/ti_simulation/all-to-all/all-to-all.py" >> $GITHUB_ENV
104- echo "FAT_TREE_CONFIGS_DIR=$GENERATORS_DIR/topology/fat_tree" >> $GITHUB_ENV
105- echo "FAT_TREE_LARGE_CONFIG=$GENERATORS_DIR/topology/fat_tree/large_fat_tree_config.yml" >> $GITHUB_ENV
106- echo "FLAMEGRAPH_OUTPUT_DIR=$FLAMEGRAPH_ARTIFACT_DIR/flamegraph" >> $GITHUB_ENV
107-
10888 - name : Get dependencies
10989 run : git clone https://github.com/brendangregg/FlameGraph.git
11090
11191 - name : Configure CMake for perf
112- run : cmake -B $BUILD_DIR -DCMAKE_BUILD_TYPE=Release -DBUILD_PROJECT=ON -DBUILD_TESTS=OFF -DLOG_LEVEL=LOG_LEVEL_ERROR -DCMAKE_CXX_FLAGS="-g -fno-omit-frame-pointer"
92+ run : cmake -B ${{env. BUILD_DIR}} -DCMAKE_BUILD_TYPE=Release -DBUILD_PROJECT=ON -DBUILD_TESTS=OFF -DLOG_LEVEL=LOG_LEVEL_ERROR -DCMAKE_CXX_FLAGS="-g -fno-omit-frame-pointer"
11393
11494 - name : Build project with profiling
115- run : cmake --build $BUILD_DIR -j $(nproc)
95+ run : cmake --build ${{env. BUILD_DIR}} -j $(nproc)
11696
11797 - name : Update PYTHONPATH
11898 run : echo "PYTHONPATH=${{ github.workspace }}/scripts" >> $GITHUB_ENV
11999
120100 - name : Generate topology config
121- run : python3 $FAT_TREE_GENERATOR -c $FAT_TREE_LARGE_CONFIG -o $FLAMEGRAPH_TOPOLOGY_NAME
101+ run : python3 ${{env. FAT_TREE_GENERATOR}} -c ${{env. FAT_TREE_LARGE_CONFIG}} -o ${{env. FLAMEGRAPH_TOPOLOGY_NAME}}
122102
123103 - name : Generate simulation config
124- run : python3 $ALL_TO_ALL_GENERATOR -t $FLAMEGRAPH_TOPOLOGY_NAME -o $FLAMEGRAPH_SIMULATION_NAME
104+ run : python3 ${{env. ALL_TO_ALL_GENERATOR}} -t ${{env. FLAMEGRAPH_TOPOLOGY_NAME}} -o ${{env. FLAMEGRAPH_SIMULATION_NAME}}
125105
126106 - name : Run perf
127107 run : |
128- sudo perf record -F 99 -g -- ./$EXECUTABLE_PATH -c $FLAMEGRAPH_SIMULATION_NAME --no-logs --no-plots > perf.data
108+ sudo perf record -F 99 -g -- ./${{env. EXECUTABLE_PATH}} -c ${{env. FLAMEGRAPH_SIMULATION_NAME}} --no-logs --no-plots > perf.data
129109 perf report -i perf.data --header-only
130- perf script -i perf.data -v > out.perf 2>&1 || true
110+ perf script -i perf.data -v > out.perf 2>&1
131111
132112 - name : Prepare FlameGraph
133113 run : |
134- mkdir -p $FLAMEGRAPH_OUTPUT_DIR
114+ mkdir -p ${{ env. FLAMEGRAPH_OUTPUT_DIR }}
135115
136116 - name : Generate flamegraph
137117 run : |
138118 ./FlameGraph/stackcollapse-perf.pl out.perf > out.folded
139- ./FlameGraph/flamegraph.pl out.folded > $FLAMEGRAPH_OUTPUT_DIR/flamegraph.svg
119+ ./FlameGraph/flamegraph.pl out.folded > ${{ env. FLAMEGRAPH_OUTPUT_DIR }} /flamegraph.svg
140120
141121 - name : Create HTML
142- run : python3 scripts/generate-html.py ./$FLAMEGRAPH_ARTIFACT_DIR
122+ run : python3 scripts/generate-html.py ./${{ env. FLAMEGRAPH_ARTIFACT_DIR }}
143123
144124 - name : Put github context to json file
145125 run : echo '${{ toJson(github) }}' > github_context.json
0 commit comments