Skip to content

Commit 039e57f

Browse files
committed
debug
1 parent 970535a commit 039e57f

File tree

3 files changed

+120
-114
lines changed

3 files changed

+120
-114
lines changed

backends/qualcomm/__init__.py

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,41 @@
99
_stage_libcxx,
1010
)
1111

12-
# # Path to executorch/backends/qualcomm/
13-
# PKG_ROOT = pathlib.Path(__file__).parent.parent / "qualcomm"
12+
# Path to executorch/backends/qualcomm/
13+
PKG_ROOT = pathlib.Path(__file__).parent.parent / "qualcomm"
1414

15-
# # --- Qualcomm SDK handling ---
16-
# qnn_root = os.environ.get("QNN_SDK_ROOT")
17-
# if qnn_root:
18-
# QNN_SDK_DIR = pathlib.Path(qnn_root)
19-
# else:
20-
# QNN_SDK_DIR = PKG_ROOT / "sdk" / "qnn"
21-
# if not QNN_SDK_DIR.exists():
22-
# print("Qualcomm SDK not found. Downloading...")
23-
# _download_qnn_sdk()
15+
print(
16+
"EXECUTORCH_BUILDING_WHEEL: ", os.environ.get("EXECUTORCH_BUILDING_WHEEL", "False")
17+
)
18+
if not os.environ.get("EXECUTORCH_BUILDING_WHEEL"):
19+
# --- Qualcomm SDK handling ---
20+
qnn_root = os.environ.get("QNN_SDK_ROOT")
21+
if qnn_root:
22+
QNN_SDK_DIR = pathlib.Path(qnn_root)
23+
else:
24+
QNN_SDK_DIR = PKG_ROOT / "sdk" / "qnn"
25+
if not QNN_SDK_DIR.exists():
26+
print("Qualcomm SDK not found. Downloading...")
27+
_download_qnn_sdk()
2428

25-
# os.environ["QNN_SDK_ROOT"] = str(QNN_SDK_DIR)
29+
os.environ["QNN_SDK_ROOT"] = str(QNN_SDK_DIR)
2630

27-
# # Load QNN library
28-
# qnn_lib = QNN_SDK_DIR / "lib" / "x86_64-linux-clang" / "libQnnHtp.so"
29-
# try:
30-
# ctypes.CDLL(str(qnn_lib), mode=ctypes.RTLD_GLOBAL)
31-
# print(f"Loaded QNN library from {qnn_lib}")
32-
# except OSError as e:
33-
# print(f"[ERROR] Failed to load QNN library at {qnn_lib}: {e}")
34-
# raise
31+
# Load QNN library
32+
qnn_lib = QNN_SDK_DIR / "lib" / "x86_64-linux-clang" / "libQnnHtp.so"
33+
try:
34+
ctypes.CDLL(str(qnn_lib), mode=ctypes.RTLD_GLOBAL)
35+
print(f"Loaded QNN library from {qnn_lib}")
36+
except OSError as e:
37+
print(f"[ERROR] Failed to load QNN library at {qnn_lib}: {e}")
38+
raise
3539

36-
# --- libc++ handling ---
37-
# Path to executorch/backends/
38-
# _libcxx_dir = _get_libcxx_dir(PKG_ROOT)
40+
# --- libc++ handling ---
41+
# Path to executorch/backends/
42+
# _libcxx_dir = _get_libcxx_dir(PKG_ROOT)
3943

40-
# # Stage (download if missing) and load
41-
# try:
42-
# _stage_libcxx(_libcxx_dir)
43-
# _load_libcxx_libs(_libcxx_dir)
44-
# except Exception as e:
45-
# print(f"[libcxx] Warning: failed to stage/load libc++: {e}")
44+
# Stage (download if missing) and load
45+
try:
46+
_stage_libcxx(_libcxx_dir)
47+
_load_libcxx_libs(_libcxx_dir)
48+
except Exception as e:
49+
print(f"[libcxx] Warning: failed to stage/load libc++: {e}")

backends/qualcomm/python/__init__.py

Whitespace-only changes.

setup.py

Lines changed: 87 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -464,91 +464,93 @@ def run(self):
464464
if self._ran_build:
465465
return
466466

467-
# try:
468-
# from backends.qualcomm.scripts.download_qnn_sdk import (
469-
# _download_qnn_sdk,
470-
# LLVM_VERSION,
471-
# SDK_DIR,
472-
# )
473-
474-
# qnn sdk setup
475-
# print(
476-
# "SDK_DIR: ",
477-
# SDK_DIR,
478-
# "type: ",
479-
# type(SDK_DIR),
480-
# "exists: ",
481-
# os.path.exists(SDK_DIR),
482-
# )
483-
# _download_qnn_sdk()
484-
485-
# sdk_path = Path(SDK_DIR).resolve() # full absolute path
486-
# print("sdk_path: ", sdk_path)
487-
# if not sdk_path:
488-
# raise RuntimeError("Qualcomm SDK not found, cannot build backend")
489-
490-
# # Determine paths
491-
# prj_root = Path(__file__).parent.resolve()
492-
# print("prj_root: ", prj_root)
493-
# build_sh = prj_root / "backends/qualcomm/scripts/build.sh"
494-
# build_root = prj_root / "build-x86"
495-
496-
# if not build_sh.exists():
497-
# raise FileNotFoundError(f"{build_sh} not found")
498-
499-
# # Run build.sh with SDK path exported
500-
# env = dict(**os.environ)
501-
# print("str(sdk_path): ", str(sdk_path))
502-
# env["QNN_SDK_ROOT"] = str(sdk_path)
503-
# subprocess.check_call([str(build_sh), "--skip_aarch64"], env=env)
504-
505-
# # Copy the main .so into the wheel package
506-
# so_src = build_root / "backends/qualcomm/libqnn_executorch_backend.so"
507-
# so_dst = Path(
508-
# self.get_ext_fullpath("executorch.backends.qualcomm.qnn_backend")
509-
# )
510-
# self.mkpath(so_dst.parent) # ensure destination exists
511-
# self.copy_file(str(so_src), str(so_dst))
512-
# print(f"Copied Qualcomm backend: {so_src} -> {so_dst}")
513-
514-
# # --- CLEANUP SECTION ---
515-
# # 1. Remove Qualcomm SDK staging folder so it doesn’t get packaged
516-
# if os.path.exists(SDK_DIR):
517-
# try:
518-
# shutil.rmtree(SDK_DIR)
519-
# print(f"Removed Qualcomm SDK folder: {SDK_DIR}")
520-
# except Exception as e:
521-
# print(f"Failed to remove SDK_DIR {SDK_DIR}: {e}")
522-
523-
# # 2. Also remove the entire packaged SDK tree
524-
# pkg_sdk_dir = prj_root / "backends/qualcomm/sdk"
525-
# if pkg_sdk_dir.exists():
526-
# try:
527-
# shutil.rmtree(pkg_sdk_dir)
528-
# print(f"Removed packaged Qualcomm SDK: {pkg_sdk_dir}")
529-
# except Exception as e:
530-
# print(f"Failed to remove packaged SDK dir {pkg_sdk_dir}: {e}")
531-
532-
# so_files = [
533-
# (
534-
# "executorch.backends.qualcomm.python.PyQnnManagerAdaptor",
535-
# prj_root
536-
# / "backends/qualcomm/python/PyQnnManagerAdaptor.cpython-310-x86_64-linux-gnu.so",
537-
# ),
538-
# (
539-
# "executorch.backends.qualcomm.python.PyQnnWrapperAdaptor",
540-
# prj_root
541-
# / "backends/qualcomm/python/PyQnnWrapperAdaptor.cpython-310-x86_64-linux-gnu.so",
542-
# ),
543-
# ]
544-
545-
# for module_name, so_src in so_files:
546-
# so_dst = Path(self.get_ext_fullpath(module_name))
547-
# self.mkpath(str(so_dst.parent))
548-
# self.copy_file(str(so_src), str(so_dst))
549-
# print(f"Copied Qualcomm backend: {so_src} -> {so_dst}")
550-
# except ImportError:
551-
# print("Import error: ", sys.exc_info()[0])
467+
try:
468+
from backends.qualcomm.scripts.download_qnn_sdk import (
469+
_download_qnn_sdk,
470+
LLVM_VERSION,
471+
SDK_DIR,
472+
)
473+
474+
os.environ["EXECUTORCH_BUILDING_WHEEL"] = "1"
475+
476+
# qnn sdk setup
477+
print(
478+
"SDK_DIR: ",
479+
SDK_DIR,
480+
"type: ",
481+
type(SDK_DIR),
482+
"exists: ",
483+
os.path.exists(SDK_DIR),
484+
)
485+
_download_qnn_sdk()
486+
487+
sdk_path = Path(SDK_DIR).resolve() # full absolute path
488+
print("sdk_path: ", sdk_path)
489+
if not sdk_path:
490+
raise RuntimeError("Qualcomm SDK not found, cannot build backend")
491+
492+
# Determine paths
493+
prj_root = Path(__file__).parent.resolve()
494+
print("prj_root: ", prj_root)
495+
build_sh = prj_root / "backends/qualcomm/scripts/build.sh"
496+
build_root = prj_root / "build-x86"
497+
498+
if not build_sh.exists():
499+
raise FileNotFoundError(f"{build_sh} not found")
500+
501+
# Run build.sh with SDK path exported
502+
env = dict(**os.environ)
503+
print("str(sdk_path): ", str(sdk_path))
504+
env["QNN_SDK_ROOT"] = str(sdk_path)
505+
subprocess.check_call([str(build_sh), "--skip_aarch64"], env=env)
506+
507+
# Copy the main .so into the wheel package
508+
so_src = build_root / "backends/qualcomm/libqnn_executorch_backend.so"
509+
so_dst = Path(
510+
self.get_ext_fullpath("executorch.backends.qualcomm.qnn_backend")
511+
)
512+
self.mkpath(so_dst.parent) # ensure destination exists
513+
self.copy_file(str(so_src), str(so_dst))
514+
print(f"Copied Qualcomm backend: {so_src} -> {so_dst}")
515+
516+
# --- CLEANUP SECTION ---
517+
# 1. Remove Qualcomm SDK staging folder so it doesn’t get packaged
518+
if os.path.exists(SDK_DIR):
519+
try:
520+
shutil.rmtree(SDK_DIR)
521+
print(f"Removed Qualcomm SDK folder: {SDK_DIR}")
522+
except Exception as e:
523+
print(f"Failed to remove SDK_DIR {SDK_DIR}: {e}")
524+
525+
# 2. Also remove the entire packaged SDK tree
526+
pkg_sdk_dir = prj_root / "backends/qualcomm/sdk"
527+
if pkg_sdk_dir.exists():
528+
try:
529+
shutil.rmtree(pkg_sdk_dir)
530+
print(f"Removed packaged Qualcomm SDK: {pkg_sdk_dir}")
531+
except Exception as e:
532+
print(f"Failed to remove packaged SDK dir {pkg_sdk_dir}: {e}")
533+
534+
so_files = [
535+
(
536+
"executorch.backends.qualcomm.python.PyQnnManagerAdaptor",
537+
prj_root
538+
/ "backends/qualcomm/python/PyQnnManagerAdaptor.cpython-310-x86_64-linux-gnu.so",
539+
),
540+
(
541+
"executorch.backends.qualcomm.python.PyQnnWrapperAdaptor",
542+
prj_root
543+
/ "backends/qualcomm/python/PyQnnWrapperAdaptor.cpython-310-x86_64-linux-gnu.so",
544+
),
545+
]
546+
547+
for module_name, so_src in so_files:
548+
so_dst = Path(self.get_ext_fullpath(module_name))
549+
self.mkpath(str(so_dst.parent))
550+
self.copy_file(str(so_src), str(so_dst))
551+
print(f"Copied Qualcomm backend: {so_src} -> {so_dst}")
552+
except ImportError:
553+
print("Import error: ", sys.exc_info()[0])
552554

553555
if self.editable_mode:
554556
self._ran_build = True

0 commit comments

Comments
 (0)