88
99env :
1010 BUILD_DIR : build
11- EXECUTABLE_PATH : ${{env.BUILD_DIR}}/nons
1211 GENERATORS_DIR : scripts/generators
13-
14- FAT_TREE_GENERATOR : ${{env.GENERATORS_DIR}}/topology/fat_tree/fat_tree.py
15- ALL_TO_ALL_GENERATOR : ${{env.GENERATORS_DIR}}/ti_simulation/all-to-all/all-to-all.py
16-
17- FAT_TREE_CONFIGS_DIR : ${{env.GENERATORS_DIR}}/topology/fat_tree
18- FAT_TREE_SMALL_CONFIG : ${{env.FAT_TREE_CONFIGS_DIR}}/small_fat_tree_config.yml
19- FAT_TREE_LARGE_CONFIG : ${{env.FAT_TREE_CONFIGS_DIR}}/large_fat_tree_config.yml
20-
2112 FLAMEGRAPH_ARTIFACT_DIR : flamegraph
22- FLAMEGRAPH_OUTPUT_DIR : ${{env.FLAMEGRAPH_ARTIFACT_DIR}}/flamegraph
23-
2413 FLAMEGRAPH_TOPOLOGY_NAME : fat_tree_topology.yml
2514 FLAMEGRAPH_SIMULATION_NAME : fat_tree_simulation.yml
2615
@@ -34,19 +23,29 @@ jobs:
3423 - name : Update submodules
3524 run : git submodule update --init --recursive
3625
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+
3736 - name : Configure CMake for building project
38- run : cmake -B ${{env. BUILD_DIR}} -DCMAKE_BUILD_TYPE=Release -DBUILD_PROJECT=ON -DBUILD_TESTS=OFF -DLOG_LEVEL=LOG_LEVEL_ERROR
37+ run : cmake -B $BUILD_DIR -DCMAKE_BUILD_TYPE=Release -DBUILD_PROJECT=ON -DBUILD_TESTS=OFF -DLOG_LEVEL=LOG_LEVEL_ERROR
3938
4039 - name : Build project
41- run : cmake --build ${{env. BUILD_DIR}} -j $(nproc)
40+ run : cmake --build $BUILD_DIR -j $(nproc)
4241
4342 - name : Update PYTHONPATH
4443 run : echo "PYTHONPATH=${{ github.workspace }}/scripts" >> $GITHUB_ENV
4544
4645 - name : Run simulations
4746 run : |
48- python3 scripts/generate_configs_and_run.py -e ${{env. EXECUTABLE_PATH}} -t ${{env. FAT_TREE_GENERATOR}} -tc ${{env. FAT_TREE_SMALL_CONFIG}}
49- python3 scripts/generate_configs_and_run.py -e ${{env. EXECUTABLE_PATH}} -t ${{env. FAT_TREE_GENERATOR}} -tc ${{env. FAT_TREE_LARGE_CONFIG}}
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
5049
5150
5251 profiling_load_testing :
@@ -57,24 +56,34 @@ jobs:
5756 - name : Update submodules
5857 run : git submodule update --init --recursive
5958
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+
6069 - name : Configure CMake for profiling
61- run : cmake -B ${{env. BUILD_DIR}} -DCMAKE_BUILD_TYPE=Release -DBUILD_PROJECT=ON -DBUILD_TESTS=OFF -DPROFILING=ON -DLOG_LEVEL=LOG_LEVEL_ERROR
70+ run : cmake -B $BUILD_DIR -DCMAKE_BUILD_TYPE=Release -DBUILD_PROJECT=ON -DBUILD_TESTS=OFF -DPROFILING=ON -DLOG_LEVEL=LOG_LEVEL_ERROR
6271
6372 - name : Build project with profiling
64- run : cmake --build ${{env. BUILD_DIR}} -j $(nproc)
73+ run : cmake --build $BUILD_DIR -j $(nproc)
6574
6675 - name : Update PYTHONPATH
6776 run : echo "PYTHONPATH=${{ github.workspace }}/scripts" >> $GITHUB_ENV
6877
6978 - name : Run simulations with profiling
7079 run : |
71- python3 scripts/generate_configs_and_run.py -e ${{env. EXECUTABLE_PATH}} -t ${{env. FAT_TREE_GENERATOR}} -tc ${{env. FAT_TREE_SMALL_CONFIG}}
72- gprof ${{env. EXECUTABLE_PATH}} > profile.txt
73- head profile.txt
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
7483
75- python3 scripts/generate_configs_and_run.py -e ${{env. EXECUTABLE_PATH}} -t ${{env. FAT_TREE_GENERATOR}} -tc ${{env. FAT_TREE_LARGE_CONFIG}}
76- gprof ${{env. EXECUTABLE_PATH}} > profile.txt
77- head profile.txt
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
7887
7988 flamegraph :
8089 runs-on : ubuntu-latest
@@ -87,41 +96,50 @@ jobs:
8796 - name : Update submodules
8897 run : git submodule update --init --recursive
8998
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+
90108 - name : Get dependencies
91109 run : git clone https://github.com/brendangregg/FlameGraph.git
92110
93111 - name : Configure CMake for perf
94- 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"
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"
95113
96114 - name : Build project with profiling
97- run : cmake --build ${{env. BUILD_DIR}} -j $(nproc)
115+ run : cmake --build $BUILD_DIR -j $(nproc)
98116
99117 - name : Update PYTHONPATH
100118 run : echo "PYTHONPATH=${{ github.workspace }}/scripts" >> $GITHUB_ENV
101119
102120 - name : Generate topology config
103- run : python3 ${{env. FAT_TREE_GENERATOR}} -c ${{env. FAT_TREE_LARGE_CONFIG}} -o ${{env. FLAMEGRAPH_TOPOLOGY_NAME}}
121+ run : python3 $FAT_TREE_GENERATOR -c $FAT_TREE_LARGE_CONFIG -o $FLAMEGRAPH_TOPOLOGY_NAME
104122
105123 - name : Generate simulation config
106- run : python3 ${{env. ALL_TO_ALL_GENERATOR}} -t ${{env. FLAMEGRAPH_TOPOLOGY_NAME}} -o ${{env. FLAMEGRAPH_SIMULATION_NAME}}
124+ run : python3 $ALL_TO_ALL_GENERATOR -t $FLAMEGRAPH_TOPOLOGY_NAME -o $FLAMEGRAPH_SIMULATION_NAME
107125
108126 - name : Run perf
109127 run : |
110- sudo perf record -F 99 -g -- ./${{env. EXECUTABLE_PATH}} -c ${{env. FLAMEGRAPH_SIMULATION_NAME}} --no-logs --no-plots > perf.data
128+ sudo perf record -F 99 -g -- ./$EXECUTABLE_PATH -c $FLAMEGRAPH_SIMULATION_NAME --no-logs --no-plots > perf.data
111129 perf report -i perf.data --header-only
112130 perf script -i perf.data -v > out.perf 2>&1 || true
113131
114132 - name : Prepare FlameGraph
115133 run : |
116- mkdir -p ${{ env. FLAMEGRAPH_OUTPUT_DIR }}
134+ mkdir -p $FLAMEGRAPH_OUTPUT_DIR
117135
118136 - name : Generate flamegraph
119137 run : |
120138 ./FlameGraph/stackcollapse-perf.pl out.perf > out.folded
121- ./FlameGraph/flamegraph.pl out.folded > ${{ env. FLAMEGRAPH_OUTPUT_DIR }} /flamegraph.svg
139+ ./FlameGraph/flamegraph.pl out.folded > $FLAMEGRAPH_OUTPUT_DIR/flamegraph.svg
122140
123141 - name : Create HTML
124- run : python3 scripts/generate-html.py ./${{ env. FLAMEGRAPH_ARTIFACT_DIR }}
142+ run : python3 scripts/generate-html.py ./$FLAMEGRAPH_ARTIFACT_DIR
125143
126144 - name : Put github context to json file
127145 run : echo '${{ toJson(github) }}' > github_context.json
0 commit comments