Skip to content

Commit dbc9e75

Browse files
ai-edge-botcopybara-github
authored andcommitted
Make Qualcomm utilities compatible with Windows.
LiteRT-PiperOrigin-RevId: 819869603
1 parent 6878990 commit dbc9e75

File tree

3 files changed

+105
-7
lines changed

3 files changed

+105
-7
lines changed

.github/workflows/windows_x86_64.yml

Lines changed: 87 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,10 @@ on:
1515
type: boolean
1616
default: true
1717

18-
1918
concurrency:
2019
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
2120
cancel-in-progress: true
2221

23-
2422
jobs:
2523
presubmit:
2624
name: "Presubmit-Win"
@@ -40,13 +38,11 @@ jobs:
4038
- name: Checkout code
4139
uses: actions/checkout@v4
4240

43-
4441
- name: Setup Python
4542
uses: actions/setup-python@v5
4643
with:
4744
python-version: "3.11"
4845

49-
5046
- name: Configure tensorflow & python path
5147
run: |
5248
$env:PYTHON_BIN_PATH = (Get-Command python).Source
@@ -73,11 +69,11 @@ jobs:
7369
# D: is faster than C: for I/O.
7470
$SHORT_SHA=$("${{ github.sha }}".SubString(0, 8))
7571
echo "BAZEL_OUTPUT_BASE=D:/w-$SHORT_SHA" >> "$env:GITHUB_ENV"
72+
7673
- name: Clean build outputs if cache is being refreshed.
7774
if: env.REFRESH_CACHE == 'true'
7875
run: bazel --output_base="$env:BAZEL_OUTPUT_BASE" clean --expunge
7976

80-
8177
- name: Restore bazel cache if cache is not being refreshed.
8278
id: bazel-cache
8379
if: env.REFRESH_CACHE != 'true'
@@ -90,21 +86,105 @@ jobs:
9086
${{ steps.cache-keys.outputs.CACHE_RESTORE_KEY_0 }}-
9187
${{ steps.cache-keys.outputs.CACHE_RESTORE_KEY_1 }}-
9288
${{ steps.cache-keys.outputs.CACHE_RESTORE_KEY_2 }}-
89+
9390
- name: Check cache hit
9491
run: |
9592
echo "Cache Hit: ${{ steps.bazel-cache.outputs.cache-hit }}"
9693
echo "Cache Primary Key: ${{ steps.bazel-cache.outputs.cache-primary-key }}"
9794
echo "Cache Matched Key: ${{ steps.bazel-cache.outputs.cache-matched-key }}"
95+
9896
- name: Run bazel test on Windows for litert
9997
run: |
100-
bazel test --disk_cache=~/.cache/bazel-windows --config=windows -- //litert/c:litert_common_test //litert/c:litert_compiled_model_test //litert/c:litert_custom_op_test //litert/c:litert_environment_options_test //litert/c:litert_logging_test //litert/c:litert_model_test //litert/c:litert_opaque_options_test //litert/c:litert_options_test //litert/c:litert_profiler_test //litert/c:litert_rewriter_test //litert/c:litert_tensor_buffer_requirements_test //litert/c/internal:litert_accelerator_registration_test //litert/c/internal:litert_accelerator_test //litert/c/options:litert_cpu_options_test //litert/c/options:litert_google_tensor_options_test //litert/c/options:litert_gpu_options_test //litert/c/options:litert_mediatek_options_test //litert/c/options:litert_qualcomm_options_test //litert/c/options:litert_runtime_options_test //litert/cc:litert_any_test //litert/cc:litert_buffer_ref_test //litert/cc:litert_c_types_printing_test //litert/cc:litert_custom_op_test //litert/cc:litert_element_type_test //litert/cc:litert_environment_options_test //litert/cc:litert_environment_test //litert/cc:litert_expected_test //litert/cc:litert_handle_test //litert/cc:litert_layout_test //litert/cc:litert_logging_test //litert/cc:litert_model_test //litert/cc:litert_op_options_test //litert/cc:litert_opaque_options_test //litert/cc:litert_rewriter_test //litert/cc:litert_tensor_buffer_requirements_test //litert/cc/dynamic_runtime:litert_tensor_buffer_requirements_test //litert/cc/dynamic_runtime/options:litert_cpu_options_test //litert/cc/dynamic_runtime/options:litert_runtime_options_test //litert/cc/options:darwinn_options_test //litert/cc/options:litert_cpu_options_test //litert/cc/options:litert_gpu_options_test //litert/cc/options:litert_runtime_options_test //litert/compiler/plugin:algo_test //litert/core:build_stamp_test //litert/core:dispatch_op_schema_test //litert/core:environment_options_test //litert/core:environment_test //litert/core:error_reporter_test //litert/core:filesystem_test //litert/core:insert_order_map_test //litert/core/cache:compilation_cache_test //litert/core/model:buffer_manager_test //litert/core/model:flatbuffer_to_litert_test //litert/core/model:ir_allocator_test //litert/core/model:litert_to_flatbuffer_test //litert/core/model:model_buffer_test //litert/core/model:model_graph_test //litert/core/model:model_test //litert/core/model:rewriter_test //litert/core/util:flatbuffer_tools_test //litert/core/util:tensor_type_util_test //litert/runtime:magic_number_utils_test //litert/runtime:profiler_test //litert/runtime:tensor_buffer_registry_test //litert/runtime/dispatch:dispatch_opaque_options_test //litert/test:matchers_test //litert/tools:dump_test //litert/tools:tool_display_test //litert/tools/flags:flag_types_test //litert/tools/flags/vendors:google_tensor_flags_test //litert/tools/flags/vendors:mediatek_flags_test //litert/tools/flags/vendors:qualcomm_flags_test //litert/vendors/examples:example_common_test //litert/vendors/qualcomm/core:common_test //litert/vendors/qualcomm/core/wrappers/tests:quantize_params_wrapper_test
98+
bazel test --disk_cache=~/.cache/bazel-windows --config=windows -- `
99+
//litert/c:litert_common_test `
100+
//litert/c:litert_compiled_model_test `
101+
//litert/c:litert_custom_op_test `
102+
//litert/c:litert_environment_options_test `
103+
//litert/c:litert_logging_test `
104+
//litert/c:litert_model_test `
105+
//litert/c:litert_opaque_options_test `
106+
//litert/c:litert_options_test `
107+
//litert/c:litert_profiler_test `
108+
//litert/c:litert_rewriter_test `
109+
//litert/c:litert_tensor_buffer_requirements_test `
110+
//litert/c/internal:litert_accelerator_registration_test `
111+
//litert/c/internal:litert_accelerator_test `
112+
//litert/c/options:litert_cpu_options_test `
113+
//litert/c/options:litert_google_tensor_options_test `
114+
//litert/c/options:litert_gpu_options_test `
115+
//litert/c/options:litert_mediatek_options_test `
116+
//litert/c/options:litert_qualcomm_options_test `
117+
//litert/c/options:litert_runtime_options_test `
118+
//litert/cc:litert_any_test `
119+
//litert/cc:litert_buffer_ref_test `
120+
//litert/cc:litert_c_types_printing_test `
121+
//litert/cc:litert_custom_op_test `
122+
//litert/cc:litert_element_type_test `
123+
//litert/cc:litert_environment_options_test `
124+
//litert/cc:litert_environment_test `
125+
//litert/cc:litert_expected_test `
126+
//litert/cc:litert_handle_test `
127+
//litert/cc:litert_layout_test `
128+
//litert/cc:litert_logging_test `
129+
//litert/cc:litert_model_test `
130+
//litert/cc:litert_op_options_test `
131+
//litert/cc:litert_opaque_options_test `
132+
//litert/cc:litert_rewriter_test `
133+
//litert/cc:litert_tensor_buffer_requirements_test `
134+
//litert/cc/dynamic_runtime:litert_tensor_buffer_requirements_test `
135+
//litert/cc/dynamic_runtime/options:litert_cpu_options_test `
136+
//litert/cc/dynamic_runtime/options:litert_runtime_options_test `
137+
//litert/cc/dynamic_runtime/options:litert_gpu_options_test `
138+
//litert/cc/options:darwinn_options_test `
139+
//litert/cc/options:litert_cpu_options_test `
140+
//litert/cc/options:litert_gpu_options_test `
141+
//litert/cc/options:litert_runtime_options_test `
142+
//litert/cc/options:litert_webnn_options_test `
143+
//litert/compiler/plugin:algo_test `
144+
//litert/core:build_stamp_test `
145+
//litert/core:dispatch_op_schema_test `
146+
//litert/core:environment_options_test `
147+
//litert/core:environment_test `
148+
//litert/core:error_reporter_test `
149+
//litert/core:filesystem_test `
150+
//litert/core:insert_order_map_test `
151+
//litert/core/cache:compilation_cache_test `
152+
//litert/core/model:buffer_manager_test `
153+
//litert/core/model:flatbuffer_to_litert_test `
154+
//litert/core/model:ir_allocator_test `
155+
//litert/core/model:litert_to_flatbuffer_test `
156+
//litert/core/model:model_buffer_test `
157+
//litert/core/model:model_graph_test `
158+
//litert/core/model:model_test `
159+
//litert/core/model:rewriter_test `
160+
//litert/core/util:flatbuffer_tools_test `
161+
//litert/core/util:tensor_type_util_test `
162+
//litert/runtime:magic_number_utils_test `
163+
//litert/runtime:profiler_test `
164+
//litert/runtime:tensor_buffer_registry_test `
165+
//litert/runtime/dispatch:dispatch_opaque_options_test `
166+
//litert/test:matchers_test `
167+
//litert/tools:dump_test `
168+
//litert/tools:tool_display_test `
169+
//litert/tools/flags:flag_types_test `
170+
//litert/tools/flags/vendors:google_tensor_flags_test `
171+
//litert/tools/flags/vendors:mediatek_flags_test `
172+
//litert/tools/flags/vendors:qualcomm_flags_test `
173+
//litert/vendors/examples:example_common_test `
174+
//litert/vendors/qualcomm/core:common_test `
175+
//litert/vendors/qualcomm/core:tensor_pool_test `
176+
//litert/vendors/qualcomm/core/dump:dump_graph_test `
177+
//litert/vendors/qualcomm/core/transformation:graph_to_graph_test `
178+
//litert/vendors/qualcomm/core/wrappers/tests:op_wrapper_test `
179+
//litert/vendors/qualcomm/core/wrappers/tests:param_wrapper_test `
180+
//litert/vendors/qualcomm/core/wrappers/tests:quantize_params_wrapper_test `
181+
//litert/vendors/qualcomm/core/wrappers/tests:tensor_wrapper_test
101182
102183
- name: Remove cache if cache is being refreshed.
103184
if: env.REFRESH_CACHE == 'true'
104185
continue-on-error: true # Ignore errors when cache is not found.
105186
run: gh cache delete ${{ steps.cache-keys.outputs.CACHE_KEY }}
106187

107-
108188
- name: Save bazel cache if it's new or being refreshed.
109189
uses: actions/cache/save@v4
110190
if: env.REFRESH_CACHE == 'true' || steps.bazel-cache.outputs.cache-hit != 'true'

litert/vendors/qualcomm/core/utils/miscs.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
// SPDX-License-Identifier: Apache-2.0
33
#include "litert/vendors/qualcomm/core/utils/miscs.h"
44

5+
#if !defined(_WIN32)
56
#include <dlfcn.h>
7+
#endif
68

79
#include <cstddef>
810
#include <cstdint>
@@ -74,6 +76,7 @@ bool CreateDirectoryRecursive(const std::filesystem::path& dir_name) {
7476
return true;
7577
}
7678

79+
#if !defined(_WIN32)
7780
void DlCloser::operator()(void* handle) const {
7881
if (handle) {
7982
dlclose(handle);
@@ -157,6 +160,7 @@ const QNN_INTERFACE_VER_TYPE* ResolveQnnApi(
157160

158161
return &providers[0]->QNN_INTERFACE_VER_NAME;
159162
}
163+
#endif // !defined(_WIN32)
160164

161165
std::optional<::qnn::SocInfo> FindSocModel(std::string_view soc_model_name) {
162166
std::optional<::qnn::SocInfo> soc_model;

litert/vendors/qualcomm/core/utils/miscs.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33

44
#ifndef ODML_LITERT_LITERT_VENDORS_QUALCOMM_CORE_UTILS_MISCS_H_
55
#define ODML_LITERT_LITERT_VENDORS_QUALCOMM_CORE_UTILS_MISCS_H_
6+
#if !defined(_WIN32)
67
#include <dlfcn.h>
8+
#endif
79

810
#include <cmath>
911
#include <cstddef>
@@ -51,6 +53,7 @@ void ConvertDataFromInt4ToInt8(const void* src, std::vector<std::int8_t>& dst,
5153

5254
bool CreateDirectoryRecursive(const std::filesystem::path& dir_name);
5355

56+
#if !defined(_WIN32)
5457
struct DlCloser {
5558
void operator()(void* handle) const;
5659
};
@@ -61,6 +64,17 @@ DLHandle CreateDLHandle(const char* path);
6164

6265
const QNN_INTERFACE_VER_TYPE* ResolveQnnApi(void* handle,
6366
Qnn_Version_t expected_qnn_version);
67+
#else // _WIN32
68+
struct DlCloser {
69+
void operator()(void* handle) const {}
70+
};
71+
using DLHandle = std::unique_ptr<void, DlCloser>;
72+
inline DLHandle CreateDLHandle(const char* path) { return DLHandle(nullptr); }
73+
inline const QNN_INTERFACE_VER_TYPE* ResolveQnnApi(
74+
void* handle, Qnn_Version_t expected_qnn_version) {
75+
return nullptr;
76+
}
77+
#endif // !defined(_WIN32)
6478

6579
std::optional<::qnn::SocInfo> FindSocModel(std::string_view soc_model_name);
6680
} // namespace qnn

0 commit comments

Comments
 (0)