diff --git a/CMakeLists.txt b/CMakeLists.txt index 156fb24e6b6..4db56ab71ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -191,6 +191,8 @@ option(EXECUTORCH_BUILD_MPS "Build the MPS backend" OFF) option(EXECUTORCH_BUILD_NEURON "Build the backends/mediatek directory" OFF) +option(EXECUTORCH_BUILD_OPENVINO "Build the Openvino backend" ON) + option(EXECUTORCH_BUILD_PYBIND "Build the Python Bindings" OFF) option(EXECUTORCH_BUILD_QNN "Build the Qualcomm backend" OFF) @@ -621,6 +623,10 @@ if(EXECUTORCH_BUILD_NEURON) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/mediatek) endif() +if(EXECUTORCH_BUILD_OPENVINO) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/openvino) +endif() + if(EXECUTORCH_BUILD_QNN) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/qualcomm) endif() diff --git a/backends/openvino/CMakeLists.txt b/backends/openvino/CMakeLists.txt index e6be4f14d79..08fccf2faae 100644 --- a/backends/openvino/CMakeLists.txt +++ b/backends/openvino/CMakeLists.txt @@ -35,8 +35,8 @@ target_include_directories( set(OPENVINO_LIB_PATH ${OPENVINO_DIR}/runtime/lib/intel64) set(OPENVINO_LIBS - ${OPENVINO_LIB_PATH}/libopenvino.so - ${OPENVINO_LIB_PATH}/libopenvino_ir_frontend.so.2450 + ${OPENVINO_LIB_PATH}/libopenvino.so.2025.0.0 + ${OPENVINO_LIB_PATH}/libopenvino_ir_frontend.so.2025.0.0 ${OPENVINO_LIB_PATH}/libopenvino_c.so ${OPENVINO_LIB_PATH}/libopenvino_intel_cpu_plugin.so ${OPENVINO_LIB_PATH}/libopenvino_intel_gpu_plugin.so diff --git a/backends/openvino/partitioner.py b/backends/openvino/partitioner.py index 2fa20bd8831..b0d0e18a0d7 100644 --- a/backends/openvino/partitioner.py +++ b/backends/openvino/partitioner.py @@ -1,9 +1,3 @@ -# Copyright (c) 2024 MediaTek Inc. -# -# Licensed under the BSD License (the "License"); you may not use this file -# except in compliance with the License. See the license file in the root -# directory of this source tree for more details. - from typing import Callable, final, List, Optional, Tuple import torch diff --git a/backends/openvino/preprocess.py b/backends/openvino/preprocess.py index bfb38474797..96df9faba85 100644 --- a/backends/openvino/preprocess.py +++ b/backends/openvino/preprocess.py @@ -1,9 +1,3 @@ -# Copyright (c) 2024 MediaTek Inc. -# -# Licensed under the BSD License (the "License"); you may not use this file -# except in compliance with the License. See the license file in the root -# directory of this source tree for more details. - import contextlib import struct @@ -28,6 +22,7 @@ class OpenvinoBackend(BackendDetails): def preprocess( cls, edge_program: ExportedProgram, module_compile_spec: List[CompileSpec] ) -> PreprocessResult: + name_to_node_mappings = {node.name: node for node in edge_program.graph.nodes} input_names = edge_program.graph_signature.user_inputs output_names = edge_program.graph_signature.user_outputs @@ -39,7 +34,11 @@ def preprocess( input_shapes = [] output_shapes = [] - compiled = openvino_compile(edge_program.module(), *args) + compile_options = {} + for spec in module_compile_spec: + compile_options[spec.key] = spec.value.decode() + + compiled = openvino_compile(edge_program.module(), *args, options=compile_options) model_bytes = compiled.export_model() return PreprocessResult(processed_bytes=model_bytes) diff --git a/build/executorch_srcs.cmake b/build/executorch_srcs.cmake new file mode 100644 index 00000000000..a44fe650da2 --- /dev/null +++ b/build/executorch_srcs.cmake @@ -0,0 +1,448 @@ +# @generated by extract_sources.py + +set(_executorch__srcs + kernels/prim_ops/et_copy_index.cpp + kernels/prim_ops/et_view.cpp + kernels/prim_ops/register_prim_ops.cpp +) + +set(_executorch_core__srcs + runtime/backend/interface.cpp + runtime/core/evalue.cpp + runtime/core/exec_aten/util/tensor_util_portable.cpp + runtime/core/portable_type/tensor_impl.cpp + runtime/executor/method.cpp + runtime/executor/method_meta.cpp + runtime/executor/program.cpp + runtime/executor/tensor_parser_exec_aten.cpp + runtime/executor/tensor_parser_portable.cpp + runtime/kernel/operator_registry.cpp + runtime/platform/abort.cpp + runtime/platform/default/posix.cpp + runtime/platform/log.cpp + runtime/platform/profiler.cpp + runtime/platform/runtime.cpp + schema/extended_header.cpp +) + +set(_portable_kernels__srcs + kernels/portable/cpu/op__to_dim_order_copy.cpp + kernels/portable/cpu/op_abs.cpp + kernels/portable/cpu/op_acos.cpp + kernels/portable/cpu/op_acosh.cpp + kernels/portable/cpu/op_add.cpp + kernels/portable/cpu/op_addmm.cpp + kernels/portable/cpu/op_alias_copy.cpp + kernels/portable/cpu/op_allclose.cpp + kernels/portable/cpu/op_amax.cpp + kernels/portable/cpu/op_amin.cpp + kernels/portable/cpu/op_any.cpp + kernels/portable/cpu/op_arange.cpp + kernels/portable/cpu/op_argmax.cpp + kernels/portable/cpu/op_argmin.cpp + kernels/portable/cpu/op_as_strided_copy.cpp + kernels/portable/cpu/op_asin.cpp + kernels/portable/cpu/op_asinh.cpp + kernels/portable/cpu/op_atan.cpp + kernels/portable/cpu/op_atan2.cpp + kernels/portable/cpu/op_atanh.cpp + kernels/portable/cpu/op_avg_pool2d.cpp + kernels/portable/cpu/op_bitwise_and.cpp + kernels/portable/cpu/op_bitwise_not.cpp + kernels/portable/cpu/op_bitwise_or.cpp + kernels/portable/cpu/op_bitwise_xor.cpp + kernels/portable/cpu/op_bmm.cpp + kernels/portable/cpu/op_cat.cpp + kernels/portable/cpu/op_cdist_forward.cpp + kernels/portable/cpu/op_ceil.cpp + kernels/portable/cpu/op_clamp.cpp + kernels/portable/cpu/op_clone.cpp + kernels/portable/cpu/op_constant_pad_nd.cpp + kernels/portable/cpu/op_convolution.cpp + kernels/portable/cpu/op_convolution_backward.cpp + kernels/portable/cpu/op_copy.cpp + kernels/portable/cpu/op_cos.cpp + kernels/portable/cpu/op_cosh.cpp + kernels/portable/cpu/op_cumsum.cpp + kernels/portable/cpu/op_detach_copy.cpp + kernels/portable/cpu/op_diagonal_copy.cpp + kernels/portable/cpu/op_div.cpp + kernels/portable/cpu/op_embedding.cpp + kernels/portable/cpu/op_empty.cpp + kernels/portable/cpu/op_eq.cpp + kernels/portable/cpu/op_erf.cpp + kernels/portable/cpu/op_exp.cpp + kernels/portable/cpu/op_expand_copy.cpp + kernels/portable/cpu/op_expm1.cpp + kernels/portable/cpu/op_fill.cpp + kernels/portable/cpu/op_flip.cpp + kernels/portable/cpu/op_floor.cpp + kernels/portable/cpu/op_floor_divide.cpp + kernels/portable/cpu/op_fmod.cpp + kernels/portable/cpu/op_full.cpp + kernels/portable/cpu/op_full_like.cpp + kernels/portable/cpu/op_gather.cpp + kernels/portable/cpu/op_ge.cpp + kernels/portable/cpu/op_gelu.cpp + kernels/portable/cpu/op_glu.cpp + kernels/portable/cpu/op_gt.cpp + kernels/portable/cpu/op_hardtanh.cpp + kernels/portable/cpu/op_index.cpp + kernels/portable/cpu/op_index_put.cpp + kernels/portable/cpu/op_index_select.cpp + kernels/portable/cpu/op_isinf.cpp + kernels/portable/cpu/op_isnan.cpp + kernels/portable/cpu/op_le.cpp + kernels/portable/cpu/op_leaky_relu.cpp + kernels/portable/cpu/op_lift_fresh_copy.cpp + kernels/portable/cpu/op_linear_scratch_example.cpp + kernels/portable/cpu/op_log.cpp + kernels/portable/cpu/op_log10.cpp + kernels/portable/cpu/op_log1p.cpp + kernels/portable/cpu/op_log2.cpp + kernels/portable/cpu/op_log_softmax.cpp + kernels/portable/cpu/op_logical_and.cpp + kernels/portable/cpu/op_logical_not.cpp + kernels/portable/cpu/op_logical_or.cpp + kernels/portable/cpu/op_logical_xor.cpp + kernels/portable/cpu/op_logit.cpp + kernels/portable/cpu/op_lt.cpp + kernels/portable/cpu/op_masked_fill.cpp + kernels/portable/cpu/op_masked_scatter.cpp + kernels/portable/cpu/op_max.cpp + kernels/portable/cpu/op_max_pool2d_with_indices.cpp + kernels/portable/cpu/op_maximum.cpp + kernels/portable/cpu/op_mean.cpp + kernels/portable/cpu/op_min.cpp + kernels/portable/cpu/op_minimum.cpp + kernels/portable/cpu/op_mm.cpp + kernels/portable/cpu/op_mul.cpp + kernels/portable/cpu/op_narrow_copy.cpp + kernels/portable/cpu/op_native_batch_norm.cpp + kernels/portable/cpu/op_native_group_norm.cpp + kernels/portable/cpu/op_native_layer_norm.cpp + kernels/portable/cpu/op_ne.cpp + kernels/portable/cpu/op_neg.cpp + kernels/portable/cpu/op_nonzero.cpp + kernels/portable/cpu/op_ones.cpp + kernels/portable/cpu/op_pdist_forward.cpp + kernels/portable/cpu/op_permute_copy.cpp + kernels/portable/cpu/op_pixel_shuffle.cpp + kernels/portable/cpu/op_pixel_unshuffle.cpp + kernels/portable/cpu/op_pow.cpp + kernels/portable/cpu/op_prod.cpp + kernels/portable/cpu/op_reciprocal.cpp + kernels/portable/cpu/op_reflection_pad1d.cpp + kernels/portable/cpu/op_reflection_pad2d.cpp + kernels/portable/cpu/op_reflection_pad3d.cpp + kernels/portable/cpu/op_relu.cpp + kernels/portable/cpu/op_remainder.cpp + kernels/portable/cpu/op_repeat.cpp + kernels/portable/cpu/op_replication_pad1d.cpp + kernels/portable/cpu/op_replication_pad2d.cpp + kernels/portable/cpu/op_replication_pad3d.cpp + kernels/portable/cpu/op_roll.cpp + kernels/portable/cpu/op_round.cpp + kernels/portable/cpu/op_rsqrt.cpp + kernels/portable/cpu/op_rsub.cpp + kernels/portable/cpu/op_scalar_tensor.cpp + kernels/portable/cpu/op_scatter.cpp + kernels/portable/cpu/op_scatter_add.cpp + kernels/portable/cpu/op_select_copy.cpp + kernels/portable/cpu/op_select_scatter.cpp + kernels/portable/cpu/op_sigmoid.cpp + kernels/portable/cpu/op_sign.cpp + kernels/portable/cpu/op_sin.cpp + kernels/portable/cpu/op_sinh.cpp + kernels/portable/cpu/op_slice_copy.cpp + kernels/portable/cpu/op_slice_scatter.cpp + kernels/portable/cpu/op_softmax.cpp + kernels/portable/cpu/op_split_copy.cpp + kernels/portable/cpu/op_split_with_sizes_copy.cpp + kernels/portable/cpu/op_sqrt.cpp + kernels/portable/cpu/op_squeeze_copy.cpp + kernels/portable/cpu/op_stack.cpp + kernels/portable/cpu/op_sub.cpp + kernels/portable/cpu/op_sum.cpp + kernels/portable/cpu/op_t_copy.cpp + kernels/portable/cpu/op_tan.cpp + kernels/portable/cpu/op_tanh.cpp + kernels/portable/cpu/op_to_copy.cpp + kernels/portable/cpu/op_topk.cpp + kernels/portable/cpu/op_transpose_copy.cpp + kernels/portable/cpu/op_tril.cpp + kernels/portable/cpu/op_trunc.cpp + kernels/portable/cpu/op_unbind_copy.cpp + kernels/portable/cpu/op_unsqueeze_copy.cpp + kernels/portable/cpu/op_var.cpp + kernels/portable/cpu/op_view_copy.cpp + kernels/portable/cpu/op_where.cpp + kernels/portable/cpu/op_zeros.cpp + kernels/portable/cpu/pattern/unary_ufunc_realh.cpp + kernels/portable/cpu/pattern/unary_ufunc_realhb_to_bool.cpp + kernels/portable/cpu/pattern/unary_ufunc_realhbbf16_to_floathbf16.cpp + kernels/portable/cpu/util/activation_ops_util.cpp + kernels/portable/cpu/util/advanced_index_util.cpp + kernels/portable/cpu/util/broadcast_util.cpp + kernels/portable/cpu/util/copy_ops_util.cpp + kernels/portable/cpu/util/distance_util.cpp + kernels/portable/cpu/util/dtype_util.cpp + kernels/portable/cpu/util/index_util.cpp + kernels/portable/cpu/util/kernel_ops_util.cpp + kernels/portable/cpu/util/matmul_ops_util.cpp + kernels/portable/cpu/util/normalization_ops_util.cpp + kernels/portable/cpu/util/padding_util.cpp + kernels/portable/cpu/util/reduce_util.cpp + kernels/portable/cpu/util/repeat_util.cpp + kernels/portable/cpu/util/select_copy_util.cpp + kernels/portable/cpu/util/slice_util.cpp +) + +set(_optimized_kernels__srcs + extension/parallel/thread_parallel.cpp + kernels/optimized/blas/BlasKernel.cpp + kernels/optimized/blas/CPUBlas.cpp + kernels/optimized/cpu/op_add.cpp + kernels/optimized/cpu/op_bmm.cpp + kernels/optimized/cpu/op_div.cpp + kernels/optimized/cpu/op_exp.cpp + kernels/optimized/cpu/op_le.cpp + kernels/optimized/cpu/op_linear.cpp + kernels/optimized/cpu/op_mm.cpp + kernels/optimized/cpu/op_mul.cpp + kernels/optimized/cpu/op_native_layer_norm.cpp + kernels/optimized/cpu/op_neg.cpp + kernels/optimized/cpu/op_sub.cpp +) + +set(_quantized_kernels__srcs + kernels/quantized/cpu/embeddingxb.cpp + kernels/quantized/cpu/op_add.cpp + kernels/quantized/cpu/op_choose_qparams.cpp + kernels/quantized/cpu/op_dequantize.cpp + kernels/quantized/cpu/op_embedding.cpp + kernels/quantized/cpu/op_embedding2b.cpp + kernels/quantized/cpu/op_embedding4b.cpp + kernels/quantized/cpu/op_mixed_linear.cpp + kernels/quantized/cpu/op_mixed_mm.cpp + kernels/quantized/cpu/op_quantize.cpp +) + +set(_program_schema__srcs + schema/program.fbs + schema/scalar_type.fbs +) + +set(_optimized_cpublas__srcs + extension/parallel/thread_parallel.cpp + extension/threadpool/threadpool.cpp + extension/threadpool/threadpool_guard.cpp + kernels/optimized/blas/BlasKernel.cpp + kernels/optimized/blas/CPUBlas.cpp +) + +set(_optimized_native_cpu_ops_oss__srcs + codegen/templates/RegisterCodegenUnboxedKernels.cpp + codegen/templates/RegisterDispatchKeyCustomOps.cpp + codegen/templates/RegisterKernels.cpp + codegen/templates/RegisterSchema.cpp + extension/parallel/thread_parallel.cpp + extension/threadpool/threadpool.cpp + extension/threadpool/threadpool_guard.cpp + kernels/optimized/blas/BlasKernel.cpp + kernels/optimized/blas/CPUBlas.cpp + kernels/optimized/cpu/op_add.cpp + kernels/optimized/cpu/op_bmm.cpp + kernels/optimized/cpu/op_div.cpp + kernels/optimized/cpu/op_exp.cpp + kernels/optimized/cpu/op_le.cpp + kernels/optimized/cpu/op_linear.cpp + kernels/optimized/cpu/op_mm.cpp + kernels/optimized/cpu/op_mul.cpp + kernels/optimized/cpu/op_native_layer_norm.cpp + kernels/optimized/cpu/op_neg.cpp + kernels/optimized/cpu/op_sub.cpp +) + +set(_extension_data_loader__srcs + extension/data_loader/file_data_loader.cpp + extension/data_loader/mmap_data_loader.cpp +) + +set(_extension_module__srcs + extension/module/module.cpp +) + +set(_extension_runner_util__srcs + extension/runner_util/inputs.cpp + extension/runner_util/inputs_portable.cpp +) + +set(_extension_llm_runner__srcs + extension/data_loader/file_data_loader.cpp + extension/data_loader/mmap_data_loader.cpp + extension/llm/runner/text_decoder_runner.cpp + extension/llm/runner/text_prefiller.cpp + extension/llm/sampler/sampler.cpp + extension/tensor/tensor_ptr.cpp + extension/tensor/tensor_ptr_maker.cpp +) + +set(_extension_tensor__srcs + extension/tensor/tensor_ptr.cpp + extension/tensor/tensor_ptr_maker.cpp +) + +set(_extension_threadpool__srcs + extension/threadpool/threadpool.cpp + extension/threadpool/threadpool_guard.cpp +) + +set(_extension_training__srcs + extension/data_loader/file_data_loader.cpp + extension/data_loader/mmap_data_loader.cpp + extension/module/module.cpp + extension/training/module/training_module.cpp + extension/training/optimizer/sgd.cpp + kernels/prim_ops/et_copy_index.cpp + kernels/prim_ops/et_view.cpp + kernels/prim_ops/register_prim_ops.cpp +) + +set(_train_xor__srcs + extension/data_loader/file_data_loader.cpp + extension/data_loader/mmap_data_loader.cpp + extension/module/module.cpp + extension/tensor/tensor_ptr.cpp + extension/tensor/tensor_ptr_maker.cpp + extension/training/examples/XOR/train.cpp + extension/training/module/training_module.cpp + extension/training/optimizer/sgd.cpp +) + +set(_executor_runner__srcs + examples/portable/executor_runner/executor_runner.cpp + extension/data_loader/file_data_loader.cpp + extension/evalue_util/print_evalue.cpp + extension/runner_util/inputs.cpp + extension/runner_util/inputs_portable.cpp + runtime/executor/test/test_backend_compiler_lib.cpp +) + +set(_size_test__srcs + extension/data_loader/file_data_loader.cpp + test/size_test.cpp +) + +set(_mps_executor_runner__srcs + backends/apple/mps/runtime/MPSBackend.mm + backends/apple/mps/runtime/MPSCompiler.mm + backends/apple/mps/runtime/MPSDelegateHeader.mm + backends/apple/mps/runtime/MPSDevice.mm + backends/apple/mps/runtime/MPSExecutor.mm + backends/apple/mps/runtime/MPSGraphBuilder.mm + backends/apple/mps/runtime/MPSStream.mm + backends/apple/mps/runtime/operations/ActivationOps.mm + backends/apple/mps/runtime/operations/BinaryOps.mm + backends/apple/mps/runtime/operations/ClampOps.mm + backends/apple/mps/runtime/operations/ConstantOps.mm + backends/apple/mps/runtime/operations/ConvolutionOps.mm + backends/apple/mps/runtime/operations/IndexingOps.mm + backends/apple/mps/runtime/operations/LinearAlgebra.mm + backends/apple/mps/runtime/operations/NormalizationOps.mm + backends/apple/mps/runtime/operations/OperationUtils.mm + backends/apple/mps/runtime/operations/PadOps.mm + backends/apple/mps/runtime/operations/PoolingOps.mm + backends/apple/mps/runtime/operations/QuantDequant.mm + backends/apple/mps/runtime/operations/RangeOps.mm + backends/apple/mps/runtime/operations/ReduceOps.mm + backends/apple/mps/runtime/operations/ShapeOps.mm + backends/apple/mps/runtime/operations/UnaryOps.mm + devtools/bundled_program/bundled_program.cpp + devtools/etdump/emitter.cpp + devtools/etdump/etdump_flatcc.cpp + examples/apple/mps/executor_runner/mps_executor_runner.mm + extension/data_loader/file_data_loader.cpp + extension/evalue_util/print_evalue.cpp + extension/runner_util/inputs.cpp + extension/runner_util/inputs_portable.cpp +) + +set(_mps_backend__srcs + backends/apple/mps/runtime/MPSBackend.mm + backends/apple/mps/runtime/MPSCompiler.mm + backends/apple/mps/runtime/MPSDelegateHeader.mm + backends/apple/mps/runtime/MPSDevice.mm + backends/apple/mps/runtime/MPSExecutor.mm + backends/apple/mps/runtime/MPSGraphBuilder.mm + backends/apple/mps/runtime/MPSStream.mm + backends/apple/mps/runtime/operations/ActivationOps.mm + backends/apple/mps/runtime/operations/BinaryOps.mm + backends/apple/mps/runtime/operations/ClampOps.mm + backends/apple/mps/runtime/operations/ConstantOps.mm + backends/apple/mps/runtime/operations/ConvolutionOps.mm + backends/apple/mps/runtime/operations/IndexingOps.mm + backends/apple/mps/runtime/operations/LinearAlgebra.mm + backends/apple/mps/runtime/operations/NormalizationOps.mm + backends/apple/mps/runtime/operations/OperationUtils.mm + backends/apple/mps/runtime/operations/PadOps.mm + backends/apple/mps/runtime/operations/PoolingOps.mm + backends/apple/mps/runtime/operations/QuantDequant.mm + backends/apple/mps/runtime/operations/RangeOps.mm + backends/apple/mps/runtime/operations/ReduceOps.mm + backends/apple/mps/runtime/operations/ShapeOps.mm + backends/apple/mps/runtime/operations/UnaryOps.mm +) + +set(_mps_schema__srcs + backends/apple/mps/serialization/schema.fbs +) + +set(_xnn_executor_runner__srcs + examples/portable/executor_runner/executor_runner.cpp + extension/data_loader/file_data_loader.cpp + extension/evalue_util/print_evalue.cpp + extension/runner_util/inputs.cpp + extension/runner_util/inputs_portable.cpp +) + +set(_xnnpack_backend__srcs + backends/xnnpack/runtime/XNNCompiler.cpp + backends/xnnpack/runtime/XNNExecutor.cpp + backends/xnnpack/runtime/XNNHeader.cpp + backends/xnnpack/runtime/XNNPACKBackend.cpp + backends/xnnpack/runtime/profiling/XNNProfiler.cpp + extension/threadpool/threadpool.cpp + extension/threadpool/threadpool_guard.cpp +) + +set(_xnnpack_schema__srcs + backends/xnnpack/serialization/runtime_schema.fbs +) + +set(_vulkan_schema__srcs + backends/vulkan/serialization/schema.fbs +) + +set(_custom_ops__srcs + extension/llm/custom_ops/op_fallback.cpp + extension/llm/custom_ops/op_fast_hadamard_transform.cpp + extension/llm/custom_ops/op_sdpa.cpp + extension/llm/custom_ops/op_update_quantized_cache.cpp + extension/llm/custom_ops/spinquant/fast_hadamard_transform.cpp + extension/llm/custom_ops/spinquant/third-party/FFHT/fht_avx.c + kernels/portable/cpu/util/reduce_util.cpp +) + +set(_llama_runner__srcs + examples/models/llama/runner/runner.cpp + examples/models/llama/tokenizer/llama_tiktoken.cpp + extension/evalue_util/print_evalue.cpp + extension/llm/runner/text_decoder_runner.cpp + extension/llm/runner/text_prefiller.cpp + extension/llm/sampler/sampler.cpp + extension/llm/tokenizer/bpe_tokenizer.cpp + extension/llm/tokenizer/tiktoken.cpp + extension/tensor/tensor_ptr.cpp + extension/tensor/tensor_ptr_maker.cpp +) \ No newline at end of file diff --git a/examples/openvino/CMakeLists.txt b/examples/openvino/CMakeLists.txt index 31903042c04..0a37f777e2d 100644 --- a/examples/openvino/CMakeLists.txt +++ b/examples/openvino/CMakeLists.txt @@ -53,7 +53,7 @@ target_include_directories( ) # Set the path to the library directory -set(LIBRARY_DIR "/home/icx-6338/ynimmaga/executorch_new/executorch/cmake-openvino-out/lib/") +set(LIBRARY_DIR "${CMAKE_CURRENT_LIST_DIR}/../../cmake-openvino-out/lib/") # List the libraries you want to link (without the 'lib' prefix and file extension) set(LIBRARIES_TO_LINK ${LIBRARY_DIR}/libopenvino_backend.so