16 if measurement_type ==
"ComputeTime":
17 return MeasurementType.COMPUTE_TIME
18 if measurement_type ==
"ComputeTimeNormalised":
19 return MeasurementType.COMPUTE_TIME_NORMALISED
20 if measurement_type ==
"LaunchTime":
21 return MeasurementType.LAUNCH_TIME
22 if measurement_type ==
"LaunchTimeNormalised":
23 return MeasurementType.LAUNCH_TIME_NORMALISED
24 raise ValueError(f
"Unknown measurement type: {measurement_type}")
27 match measurement_type:
28 case MeasurementType.COMPUTE_TIME:
30 case MeasurementType.COMPUTE_TIME_NORMALISED:
31 return "Run Time per Cell (s)"
32 case MeasurementType.LAUNCH_TIME:
33 return "Launch Time (s)"
34 case MeasurementType.LAUNCH_TIME_NORMALISED:
35 return "Launch Time per Cell (s)"
53 patch_sizes = [3, 6, 16]
54 numbers_of_threads = [1, 2, 4, 8, 16, 32]
56 for patch_size
in patch_sizes:
58 number_of_patches =
None
60 measurement_number = 0
62 for number_of_threads
in numbers_of_threads:
63 print (number_of_threads)
64 input_file = f
"mlir_results/ccz4_rusanov_parallel_size_{patch_size}_threads_{number_of_threads}.txt"
65 with open(input_file,
'r')
as file:
67 if 'Number of patches per rank:' in line:
69 number_of_patches = int(words[-1])
70 if not any(char.isdigit()
for char
in line)
and ':' in line
and 'Kernel ID' not in line:
72 id = line.split(
':')[0].strip()
73 if '|' in line
and '(' not in line
and any(char.isdigit()
for char
in line):
77 if number_of_threads
not in data[id]:
78 data[id][number_of_threads] = {}
79 if measurement_type
not in data[id][number_of_threads]:
80 data[id][number_of_threads][measurement_type] = {}
81 data[id][number_of_threads][measurement_type][number_of_patches] = float(line.split(
'|')[0].strip())
82 measurement_number += 1
83 if measurement_number > 3:
84 measurement_number = 0
87 color_cycle = plt.rcParams[
"axes.prop_cycle"].by_key()[
"color"]
89 for i, number_of_threads
in enumerate(numbers_of_threads):
90 color_map[number_of_threads] = color_cycle[i]
92 for id
in data.keys():
94 for number_of_threads
in numbers_of_threads:
95 print(number_of_threads)
96 x_axis = list(data[id][number_of_threads][measurement_type].keys())
97 y_axis = list(data[id][number_of_threads][measurement_type].values())
99 plt.plot(x_axis, y_axis,
"--", color = color_map[number_of_threads], label=id)
101 plt.plot(x_axis, y_axis, color = color_map[number_of_threads], label=id)
103 plt.title(f
"CCZ4 Rusanov Kernel Performance (Patch Size: {patch_size})")
104 plt.xlabel(
"Number of Patches")
106 plt.xscale(
"log", base=2)
107 if 'Normalised' not in args.measurement_type:
108 plt.yscale(
"log", base=2)
115 patch_sizes = [3, 6, 16]
117 for patch_size
in patch_sizes:
119 number_of_patches =
None
121 measurement_number = 0
123 input_files = [f
"mlir_results/ccz4_rusanov_cpu_serial_size_{patch_size}.txt",
124 f
"mlir_results/ccz4_rusanov_parallel_size_{patch_size}_threads_1.txt"]
127 for input_file
in input_files:
128 with open(input_file,
'r')
as file:
130 if 'Number of patches per rank:' in line:
132 number_of_patches = int(words[-1])
133 if not any(char.isdigit()
for char
in line)
and ':' in line
and 'Kernel ID' not in line:
135 id = line.split(
':')[0].strip()
136 if '|' in line
and '(' not in line
and any(char.isdigit()
for char
in line):
140 if measurement_type
not in data[id]:
141 data[id][measurement_type] = {}
142 data[id][measurement_type][number_of_patches] = float(line.split(
'|')[0].strip())
143 print (data[id][measurement_type][number_of_patches])
144 measurement_number += 1
145 if measurement_number > 3:
146 measurement_number = 0
149 for id
in data.keys():
150 x_axis = list(data[id][measurement_type].keys())
151 y_axis = list(data[id][measurement_type].values())
152 plt.plot(x_axis, y_axis, label=id)
154 plt.title(f
"CCZ4 Rusanov Kernel Performance (Patch Size: {patch_size})")
155 plt.xlabel(
"Number of Patches")
157 plt.xscale(
"log", base=2)
158 if 'Normalised' not in args.measurement_type:
159 plt.yscale(
"log", base=2)