Skip to content

Commit 5cbfcdc

Browse files
[ET-VK] Introduce ShaderResult struct for SDK data
Pull Request resolved: #7874 For readability. Differential Revision: [D68534949](https://our.internmc.facebook.com/intern/diff/D68534949/) ghstack-source-id: 262751885 Co-authored-by: jorgep31415 <[email protected]>
1 parent de0ea1d commit 5cbfcdc

File tree

4 files changed

+28
-27
lines changed

4 files changed

+28
-27
lines changed

backends/vulkan/runtime/VulkanBackend.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -593,16 +593,16 @@ class VulkanBackend final : public ::executorch::runtime::BackendInterface {
593593
#ifdef ET_EVENT_TRACER_ENABLED
594594
runtime::EventTracer* event_tracer = context.event_tracer();
595595
compute_graph->context()->querypool().extract_results();
596-
for (const auto& tup :
596+
for (const auto& r :
597597
compute_graph->context()->querypool().get_shader_timestamp_data()) {
598598
std::string event_name =
599-
std::get<0>(tup) + "_" + std::to_string(std::get<1>(tup));
599+
r.kernel_name + "_" + std::to_string(r.dispatch_id);
600600
event_tracer_log_profiling_delegate(
601601
event_tracer,
602602
event_name.c_str(),
603-
-1,
604-
std::get<2>(tup),
605-
std::get<3>(tup));
603+
/* delegate_debug_id = */ -1,
604+
r.start_time_ns,
605+
r.end_time_ns);
606606
}
607607
#endif // ET_EVENT_TRACER_ENABLED
608608

backends/vulkan/runtime/vk_api/QueryPool.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -176,22 +176,21 @@ std::string stringize(const VkExtent3D& extents) {
176176
<< "}";
177177
return ss.str();
178178
}
179-
std::vector<std::tuple<std::string, uint32_t, uint64_t, uint64_t>>
180-
QueryPool::get_shader_timestamp_data() {
179+
std::vector<ShaderResult> QueryPool::get_shader_timestamp_data() {
181180
if (querypool_ == VK_NULL_HANDLE) {
182181
return {};
183182
}
184183
std::lock_guard<std::mutex> lock(mutex_);
185-
std::vector<std::tuple<std::string, uint32_t, uint64_t, uint64_t>>
186-
shader_timestamp_data;
184+
std::vector<ShaderResult> shader_result;
187185
for (ShaderDuration& entry : shader_durations_) {
188-
shader_timestamp_data.emplace_back(std::make_tuple(
189-
entry.kernel_name,
190-
entry.dispatch_id,
191-
entry.start_time_ns,
192-
entry.end_time_ns));
186+
shader_result.push_back(ShaderResult{
187+
.kernel_name = entry.kernel_name,
188+
.dispatch_id = entry.dispatch_id,
189+
.start_time_ns = entry.start_time_ns,
190+
.end_time_ns = entry.end_time_ns,
191+
});
193192
}
194-
return shader_timestamp_data;
193+
return shader_result;
195194
}
196195

197196
std::string QueryPool::generate_string_report() {

backends/vulkan/runtime/vk_api/QueryPool.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@
2626
namespace vkcompute {
2727
namespace vkapi {
2828

29+
struct ShaderResult final {
30+
const std::string kernel_name;
31+
const uint32_t dispatch_id;
32+
const uint64_t start_time_ns;
33+
const uint64_t end_time_ns;
34+
};
35+
2936
struct QueryPoolConfig final {
3037
uint32_t max_query_count = VULKAN_QUERY_POOL_SIZE;
3138
uint32_t initial_reserve_size = 256u;
@@ -97,8 +104,7 @@ class QueryPool final {
97104

98105
void extract_results();
99106

100-
std::vector<std::tuple<std::string, uint32_t, uint64_t, uint64_t>>
101-
get_shader_timestamp_data();
107+
std::vector<ShaderResult> get_shader_timestamp_data();
102108
void print_results(const bool tsv_format = false);
103109
unsigned long get_total_shader_ns(std::string kernel_name);
104110
unsigned long get_mean_shader_ns(std::string kernel_name);

backends/vulkan/test/op_tests/utils/gen_benchmark_vk.py

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -269,22 +269,18 @@ def generate_benchmark_fixture(self) -> str:
269269
return at::from_blob(acc.data(), sizes, dtype).detach().clone();
270270
}}
271271
272-
using ShaderEntry = std::tuple<std::string, uint32_t, uint64_t, uint64_t>;
273-
using QueryPoolResults = std::vector<ShaderEntry>;
272+
using QueryPoolResults = std::vector<vkcompute::vkapi::ShaderResult>;
274273
using ShaderTimes = std::unordered_map<std::string, std::vector<uint64_t>>;
275274
276275
void process_querypool_results(
277276
QueryPoolResults& results,
278277
ShaderTimes& shader_times) {{
279-
for (const ShaderEntry& entry : results) {{
280-
std::string kernel_name = std::get<0>(entry);
281-
std::uint64_t start_ns = std::get<2>(entry);
282-
std::uint64_t end_ns = std::get<3>(entry);
283-
std::uint64_t duration_ns = end_ns - start_ns;
284-
if (shader_times.find(kernel_name) == shader_times.end()) {{
285-
shader_times[kernel_name] = std::vector<uint64_t>();
278+
for (const vkcompute::vkapi::ShaderResult& r : results) {{
279+
uint64_t duration_ns = r.end_time_ns - r.start_time_ns;
280+
if (shader_times.find(r.kernel_name) == shader_times.end()) {{
281+
shader_times[r.kernel_name] = std::vector<uint64_t>();
286282
}}
287-
shader_times[kernel_name].emplace_back(duration_ns);
283+
shader_times[r.kernel_name].emplace_back(duration_ns);
288284
}}
289285
}}
290286

0 commit comments

Comments
 (0)