v4.16.2
authorHailoRT-Automation <98901220+HailoRT-Automation@users.noreply.github.com>
Mon, 4 Mar 2024 17:25:35 +0000 (19:25 +0200)
committerGitHub <noreply@github.com>
Mon, 4 Mar 2024 17:25:35 +0000 (19:25 +0200)
40 files changed:
hailort/CMakeLists.txt
hailort/libhailort/CMakeLists.txt
hailort/libhailort/bindings/gstreamer/CMakeLists.txt
hailort/libhailort/bindings/gstreamer/gst-hailo/gsthailonet2.cpp
hailort/libhailort/bindings/gstreamer/gst-hailo/gsthailonet2.hpp
hailort/libhailort/bindings/python/platform/hailo_platform/pyhailort/pyhailort.py
hailort/libhailort/bindings/python/platform/setup.py
hailort/libhailort/bindings/python/src/CMakeLists.txt
hailort/libhailort/examples/c/data_quantization_example/CMakeLists.txt
hailort/libhailort/examples/c/infer_pipeline_example/CMakeLists.txt
hailort/libhailort/examples/c/multi_device_example/CMakeLists.txt
hailort/libhailort/examples/c/multi_network_vstream_example/CMakeLists.txt
hailort/libhailort/examples/c/notification_callback_example/CMakeLists.txt
hailort/libhailort/examples/c/power_measurement_example/CMakeLists.txt
hailort/libhailort/examples/c/raw_async_streams_single_thread_example/CMakeLists.txt
hailort/libhailort/examples/c/raw_streams_example/CMakeLists.txt
hailort/libhailort/examples/c/switch_network_groups_example/CMakeLists.txt
hailort/libhailort/examples/c/switch_network_groups_manually_example/CMakeLists.txt
hailort/libhailort/examples/c/vstreams_example/CMakeLists.txt
hailort/libhailort/examples/cpp/async_infer_example/CMakeLists.txt
hailort/libhailort/examples/cpp/async_infer_functionality_example/CMakeLists.txt
hailort/libhailort/examples/cpp/infer_pipeline_example/CMakeLists.txt
hailort/libhailort/examples/cpp/multi_device_example/CMakeLists.txt
hailort/libhailort/examples/cpp/multi_network_vstream_example/CMakeLists.txt
hailort/libhailort/examples/cpp/multi_process_example/CMakeLists.txt
hailort/libhailort/examples/cpp/notification_callback_example/CMakeLists.txt
hailort/libhailort/examples/cpp/power_measurement_example/CMakeLists.txt
hailort/libhailort/examples/cpp/raw_async_streams_multi_thread_example/CMakeLists.txt
hailort/libhailort/examples/cpp/raw_async_streams_single_thread_example/CMakeLists.txt
hailort/libhailort/examples/cpp/raw_streams_example/CMakeLists.txt
hailort/libhailort/examples/cpp/switch_network_groups_example/CMakeLists.txt
hailort/libhailort/examples/cpp/switch_network_groups_manually_example/CMakeLists.txt
hailort/libhailort/examples/cpp/vstreams_example/CMakeLists.txt
hailort/libhailort/src/device_common/control.cpp
hailort/libhailort/src/utils/soc_utils/partial_cluster_reader.cpp
hailort/libhailort/src/utils/soc_utils/partial_cluster_reader.hpp
hailort/scripts/download_firmware_eth.cmd
hailort/scripts/download_firmware_eth.sh
hailort/scripts/download_hefs.cmd
hailort/scripts/download_hefs.sh

index 2170e21fb6b42c77ee27013e755b1442da452bfe..307878f8f2b57c2a1bc717f4d7a978089ff96db8 100644 (file)
@@ -31,7 +31,7 @@ endif()
 # Set firmware version
 add_definitions( -DFIRMWARE_VERSION_MAJOR=4 )
 add_definitions( -DFIRMWARE_VERSION_MINOR=16 )
-add_definitions( -DFIRMWARE_VERSION_REVISION=1 )
+add_definitions( -DFIRMWARE_VERSION_REVISION=2 )
 if(HAILO_BUILD_SERVICE)
     add_definitions( -DHAILO_SUPPORT_MULTI_PROCESS )
 endif()
index 20402c41e7fc1007da25fe01cb307fe9ac428ae1..b44ab0e33c88c5cbb57f6ad76038cb6ac556d962 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 
 set(HAILORT_MAJOR_VERSION    4)
 set(HAILORT_MINOR_VERSION    16)
-set(HAILORT_REVISION_VERSION 1)
+set(HAILORT_REVISION_VERSION 2)
 
 # Add the cmake folder so the modules there are found
 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
index ba871c34ea023991a7c71a38434df56ef7049a1e..abe928498e8bb82084ca16336aa854a38f8a51d9 100644 (file)
@@ -8,7 +8,7 @@ if(NOT CMAKE_HOST_UNIX)
     message(FATAL_ERROR "Only unix hosts are supported, stopping build")
 endif()
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 # GST_PLUGIN_DEFINE needs PACKAGE to be defined
 set(GST_HAILO_PACKAGE_NAME "hailo")
index 3545fc169244bc4b84bb1ed17cdfce30518eed6c..69f8763529c40c0bb1430d1f267e3b3e95ae486d 100644 (file)
@@ -52,6 +52,7 @@ enum
     PROP_INPUT_FROM_META,
     PROP_NO_TRANSFORM,
     PROP_MULTI_PROCESS_SERVICE,
+    PROP_PASS_THROUGH,
 
     // Deprecated
     PROP_VDEVICE_KEY,
@@ -332,6 +333,7 @@ static hailo_status gst_hailonet2_allocate_infer_resources(GstHailoNet2 *self)
                 buffer = static_cast<GstBuffer*>(gst_queue_array_pop_head(self->thread_queue));
                 self->buffers_in_thread_queue--;
             }
+            self->thread_cv.notify_all();
             if (GST_IS_PAD(self->srcpad)) { // Checking because we fail here when exiting the application
                 GstFlowReturn ret = gst_pad_push(self->srcpad, buffer);
                 if ((GST_FLOW_OK != ret) && (GST_FLOW_FLUSHING != ret) && (!self->has_got_eos)) {
@@ -482,9 +484,12 @@ static void gst_hailonet2_set_property(GObject *object, guint property_id, const
     case PROP_IS_ACTIVE:
         (void)gst_hailonet2_toggle_activation(self, self->props.m_is_active.get(), g_value_get_boolean(value));
         break;
+    case PROP_PASS_THROUGH:
+        self->props.m_pass_through = g_value_get_boolean(value);
+        break;
     case PROP_OUTPUTS_MIN_POOL_SIZE:
         if (self->is_configured) {
-            g_warning("The network was already configured so changing the outputs minimum pool size will not take place!");
+            g_warning("The network has already been configured, the output's minimum pool size cannot be changed!");
             break;
         }
         self->props.m_outputs_min_pool_size = g_value_get_uint(value);
@@ -620,6 +625,9 @@ static void gst_hailonet2_get_property(GObject *object, guint property_id, GValu
     case PROP_IS_ACTIVE:
         g_value_set_boolean(value, self->props.m_is_active.get());
         break;
+    case PROP_PASS_THROUGH:
+        g_value_set_boolean(value, self->props.m_pass_through.get());
+        break;
     case PROP_OUTPUTS_MIN_POOL_SIZE:
         g_value_set_uint(value, self->props.m_outputs_min_pool_size.get());
         break;
@@ -725,6 +733,11 @@ static void gst_hailonet2_class_init(GstHailoNet2Class *klass)
             "By default, the hailonet element will not be active unless it is the only one. "
             "Setting this property in combination with 'scheduling-algorithm' different than HAILO_SCHEDULING_ALGORITHM_NONE is not supported.", false,
         (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+    g_object_class_install_property(gobject_class, PROP_PASS_THROUGH,
+        g_param_spec_boolean("pass-through", "Is Element pass-through", "Controls whether the element will perform inference or simply pass buffers through. "
+            "By default, the hailonet element will not be pass-through. "
+            "Setting this property to true disables inference, regardless of the scheduler settings.", false,
+        (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
 
     g_object_class_install_property(gobject_class, PROP_SCHEDULING_ALGORITHM,
         g_param_spec_enum("scheduling-algorithm", "Scheduling policy for automatic network group switching", "Controls the Model Scheduler algorithm of HailoRT. "
@@ -798,6 +811,9 @@ static void gst_hailonet2_push_buffer_to_thread(GstHailoNet2 *self, GstBuffer *b
 {
     {
         std::unique_lock<std::mutex> lock(self->thread_queue_mutex);
+        self->thread_cv.wait(lock, [self] () {
+            return self->buffers_in_thread_queue < self->props.m_outputs_max_pool_size.get();
+        });
         gst_queue_array_push_tail(self->thread_queue, buffer);
         self->buffers_in_thread_queue++;
     }
@@ -1010,7 +1026,7 @@ static GstFlowReturn gst_hailonet2_chain(GstPad * /*pad*/, GstObject * parent, G
     GstHailoNet2 *self = GST_HAILONET2(parent);
     std::unique_lock<std::mutex> lock(self->infer_mutex);
 
-    if (!self->props.m_is_active.get() || (nullptr == self->configured_infer_model)) {
+    if (self->props.m_pass_through.get() || !self->props.m_is_active.get()) {
         gst_hailonet2_push_buffer_to_thread(self, buffer);
         return GST_FLOW_OK;
     }
index daba88f7bfdfbb334223d2f0f860e18238140619..119e7a86f6766960749eef3252a3e1202265e99b 100644 (file)
@@ -66,7 +66,7 @@ struct HailoNet2Properties final
 {
 public:
     HailoNet2Properties() : m_hef_path(nullptr), m_batch_size(HAILO_DEFAULT_BATCH_SIZE),
-        m_device_id(nullptr), m_device_count(0), m_vdevice_group_id(nullptr), m_is_active(false),
+        m_device_id(nullptr), m_device_count(0), m_vdevice_group_id(nullptr), m_is_active(false), m_pass_through(false),
         m_outputs_min_pool_size(MIN_OUTPUTS_POOL_SIZE), m_outputs_max_pool_size(MAX_OUTPUTS_POOL_SIZE),
         m_scheduling_algorithm(HAILO_SCHEDULING_ALGORITHM_ROUND_ROBIN), m_scheduler_timeout_ms(HAILO_DEFAULT_SCHEDULER_TIMEOUT_MS),
         m_scheduler_threshold(HAILO_DEFAULT_SCHEDULER_THRESHOLD), m_scheduler_priority(HAILO_SCHEDULER_PRIORITY_NORMAL),
@@ -95,6 +95,7 @@ public:
     HailoElemProperty<guint16> m_device_count;
     HailoElemProperty<gchar*> m_vdevice_group_id;
     HailoElemProperty<gboolean> m_is_active;
+    HailoElemProperty<gboolean> m_pass_through;
     HailoElemProperty<guint> m_outputs_min_pool_size;
     HailoElemProperty<guint> m_outputs_max_pool_size;
     HailoElemProperty<hailo_scheduling_algorithm_t> m_scheduling_algorithm;
index 196f9f42dfd110f6f6c07eb8fb7ccf22436ccb91..2c3e547563833bd6e08d75f8d4a022a62126a9d0 100644 (file)
@@ -1488,7 +1488,7 @@ class HailoFormatFlags(_pyhailort.FormatFlags):
 SUPPORTED_PROTOCOL_VERSION = 2
 SUPPORTED_FW_MAJOR = 4
 SUPPORTED_FW_MINOR = 16
-SUPPORTED_FW_REVISION = 1
+SUPPORTED_FW_REVISION = 2
 
 MEGA_MULTIPLIER = 1000.0 * 1000.0
 
index 4132ad20d004f9b4b63d5006fb2da61bff3b4d60..f6b5f5ad8d937418b1e04d7285fb75edd3248ed5 100644 (file)
@@ -69,6 +69,6 @@ if __name__ == "__main__":
             "linux_aarch64",
         ],
         url="https://hailo.ai/",
-        version="4.16.1",
+        version="4.16.2",
         zip_safe=False,
     )
index 836c11824e3c3f468196db2e171e63be9ec2195a..91c03fb55c5856a3b9d1e9ab37d96fabf2247318 100644 (file)
@@ -49,7 +49,7 @@ set_target_properties(_pyhailort PROPERTIES
     # VISIBILITY_INLINES_HIDDEN YES
 )
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 target_link_libraries(_pyhailort PRIVATE HailoRT::libhailort)
 if(WIN32)
index 3d3be168d7055785f5e7687bbb0eef774f55a455..6a2e675bd650b3f1830f3cf16e65dd1dcb6cd56e 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 SET_SOURCE_FILES_PROPERTIES(data_quantization_example.c PROPERTIES LANGUAGE C)
 
index 04b389e1b6b791dc20053be9757488913dc94879..1fd6b7aad5ac833fa05699878bc07d4f194745d0 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 SET_SOURCE_FILES_PROPERTIES(infer_pipeline_example.c PROPERTIES LANGUAGE C)
 
index 1d92d1099c666461671a8837fc3590b7b26402fa..5ed386f1dad255e17de8b98fd5004a6dcf94cefe 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 SET_SOURCE_FILES_PROPERTIES(multi_device_example.c PROPERTIES LANGUAGE C)
 
index e5f513011377148c83d09d4f8343a422b09de7c9..bea6c1ccd09412243be130161327e4ccb416e1a0 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 find_package(Threads REQUIRED)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 SET_SOURCE_FILES_PROPERTIES(multi_network_vstream_example.c PROPERTIES LANGUAGE C)
 
index 2d62279896bca80c5cf614d2fa1482ef81a83bf7..fe145e205c8f72833a1f04b546e38f699a99eafa 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 SET_SOURCE_FILES_PROPERTIES(notification_callback_example.c PROPERTIES LANGUAGE C)
 
index 314f8dac84095b7f3293e4be171093ee8e04bf54..76d85fd141fd3bddb7db76485546daeef7f577a3 100644 (file)
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.0.0)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 SET_SOURCE_FILES_PROPERTIES(power_measurement_example.c PROPERTIES LANGUAGE C)
 
index 137a2d49672519a251b5671826a59ff09297bac0..8477fc8a46ad5719c42e619ee0d67a088ac851a6 100644 (file)
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.0.0)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 SET_SOURCE_FILES_PROPERTIES(raw_async_streams_single_thread_example.c PROPERTIES LANGUAGE C)
 
index d98dc87938194fed5d312a6df690678cf726d7a5..2d4245eb60438b9e266042464dfd9e17154dbb84 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 SET_SOURCE_FILES_PROPERTIES(raw_streams_example.c PROPERTIES LANGUAGE C)
 
index 4f4d7a228c2253ca42ca139f71bf5bf3da07b5e6..e71deee994721bebf3e9acb4f13fe612742d7577 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 SET_SOURCE_FILES_PROPERTIES(switch_network_groups_example.c PROPERTIES LANGUAGE C)
 
index dc3c3d0528e6985b2f315b81459611a522a3f0e2..aab5aec0ea792730d36ca3f780f86a88d2cc18d8 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 SET_SOURCE_FILES_PROPERTIES(switch_network_groups_manually_example.c PROPERTIES LANGUAGE C)
 
index 41f487eec2839078e18bbff5703b7613604e9f85..0ef434b930a4cf1449936b922b15a132c8fc5699 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 SET_SOURCE_FILES_PROPERTIES(vstreams_example.c PROPERTIES LANGUAGE C)
 
index 14950564c7b1fcaa536f607605ca9dbd8c1c6ca7..650edb46cbd68e2b96bca6d854c5d4e48db7bfb1 100644 (file)
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.0.0)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_async_infer_example async_infer_example.cpp)
 target_link_libraries(cpp_async_infer_example PRIVATE HailoRT::libhailort)
index ca5993188d461d1c86763cb4f5f7c59eca67e7be..06d4e34005a37f0be94644910c686bbe2b776d17 100644 (file)
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.0.0)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_async_infer_functionality_example async_infer_functionality_example.cpp)
 target_link_libraries(cpp_async_infer_functionality_example PRIVATE HailoRT::libhailort)
index bd6ef4d84092caac4f72a78d9c49544690e42f18..eccb90bef3544cf7e34ca4804de0360d99553ac5 100644 (file)
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.0.0)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_infer_pipeline_example infer_pipeline_example.cpp)
 target_link_libraries(cpp_infer_pipeline_example PRIVATE HailoRT::libhailort)
index cf7b65248ca288c608c78a099c8cdc285a9b65dd..6913af9ddef416eab3fc58bbe9a55e3c449c64cf 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_multi_device_example multi_device_example.cpp)
 target_link_libraries(cpp_multi_device_example PRIVATE HailoRT::libhailort Threads::Threads)
index 96b134993479d46088e77d359bf5bda6a03c2f0d..6f2ccbcf7e74a019cb4c3d0f4c688866c38e2c67 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 find_package(Threads REQUIRED)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_multi_network_vstream_example multi_network_vstream_example.cpp)
 target_link_libraries(cpp_multi_network_vstream_example PRIVATE HailoRT::libhailort Threads::Threads)
index c24a4e873f746c12332dcf0e507931e98ca5f31b..433c6c4c2f356d790d17992b6d8418a91febf7f9 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_multi_process_example multi_process_example.cpp)
 target_link_libraries(cpp_multi_process_example PRIVATE HailoRT::libhailort Threads::Threads)
index 31f4cf9253b1e97d48f9985447963e044a11b4ff..8929fafb71704fe4fe2defb3e1bb0ce71b8def02 100644 (file)
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.0.0)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_notification_callback_example notification_callback_example.cpp)
 target_link_libraries(cpp_notification_callback_example PRIVATE HailoRT::libhailort)
index 4493ef14c8b814b7139c86344f4c88f3d8d931e8..83f4dd5c09e9458d035030fa1827f65b276ebde2 100644 (file)
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.0.0)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_power_measurement_example power_measurement_example.cpp)
 target_link_libraries(cpp_power_measurement_example PRIVATE HailoRT::libhailort)
index adb93ba34cfb354b8740591df835734a493d2a16..1b03be650a06918095ad07ef7b9780e7ade7c04f 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_raw_async_streams_multi_thread_example raw_async_streams_multi_thread_example.cpp)
 target_link_libraries(cpp_raw_async_streams_multi_thread_example PRIVATE HailoRT::libhailort Threads::Threads)
index bde7dba037a94b89f0082a1c3a315dff0d8d513a..cf7e24d5cb5f304fb7d4bbd2fe8e112ef0815cf3 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_raw_async_streams_single_thread_example raw_async_streams_single_thread_example.cpp)
 target_link_libraries(cpp_raw_async_streams_single_thread_example PRIVATE HailoRT::libhailort Threads::Threads)
index b426240f6098daf9b464a44d80770d035968ab07..709110a7700cdc96cd70754fbced54edab8c7353 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_raw_streams_example raw_streams_example.cpp)
 target_link_libraries(cpp_raw_streams_example PRIVATE HailoRT::libhailort Threads::Threads)
index 8fed362dc3b7d4a353a7092b355578cff321701c..1b3a6895aa10dc624b04d661ee253703cdf79a8e 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_switch_network_groups_example switch_network_groups_example.cpp)
 target_link_libraries(cpp_switch_network_groups_example PRIVATE HailoRT::libhailort Threads::Threads)
index ec957697c7289371739817dc3904daf66a4ec4a4..8b5c1f2200975af1612a5e61e4c2aa36c8f7b9aa 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 find_package(Threads REQUIRED)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_switch_network_groups_manually_example switch_network_groups_manually_example.cpp)
 target_link_libraries(cpp_switch_network_groups_manually_example PRIVATE HailoRT::libhailort Threads::Threads)
index 8ef9e3af3eef6b03b0698ec46402d1644ce95e34..f0a8ad08a3874a88be03fbbc90c4f4ef08aac75f 100644 (file)
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0.0)
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 find_package(Threads REQUIRED)
 
-find_package(HailoRT 4.16.1 EXACT REQUIRED)
+find_package(HailoRT 4.16.2 EXACT REQUIRED)
 
 add_executable(cpp_vstreams_example vstreams_example.cpp)
 target_link_libraries(cpp_vstreams_example PRIVATE HailoRT::libhailort Threads::Threads)
index b8d6aabce898ad25684da6425c511dca62693a2b..1ad286cee45ae18b603da60f5e80b22e853040f6 100644 (file)
@@ -88,6 +88,14 @@ Expected<hailo_device_identity_t> control__parse_identify_results(CONTROL_PROTOC
 
     board_info.device_architecture = static_cast<hailo_device_architecture_t>(BYTE_ORDER__ntohl(identify_response->device_architecture));
 
+    // Device architecture can be HAILO_ARCH_HAILO15H or HAILO_ARCH_HAILO15M - but the FW will always return HAILO_ARCH_HAILO15H
+    // Based on a file the SCU gives us we can deduce the actual type
+    if (HAILO_ARCH_HAILO15H == board_info.device_architecture) {
+        auto dev_arch_exp = PartialClusterReader::get_actual_dev_arch_from_fuse(board_info.device_architecture);
+        CHECK_EXPECTED(dev_arch_exp);
+        board_info.device_architecture = dev_arch_exp.release();
+    }
+
     /* Write identify results to log */
     LOGGER__INFO("firmware_version is: {}.{}.{}",
             board_info.fw_version.major,
@@ -3065,15 +3073,22 @@ Expected<uint32_t> Control::get_partial_clusters_layout_bitmap(Device &device)
         return std::stoi(std::string(force_layout_env));
     }
 
-    auto device_arch_exp = device.get_architecture();
-    CHECK_EXPECTED(device_arch_exp);
-    if (HAILO_ARCH_HAILO8L != device_arch_exp.value() && HAILO_ARCH_HAILO15M != device_arch_exp.value()) {
+    auto dev_arch_exp = device.get_architecture();
+    CHECK_EXPECTED(dev_arch_exp);
+    const auto dev_arch = dev_arch_exp.release();
+    // In Both cases of Hailo15H and Hailo15M read fuse file (If no file found will return default value of all clusters)
+    if ((HAILO_ARCH_HAILO15H == dev_arch) || (HAILO_ARCH_HAILO15M == dev_arch)) {
+        auto bitmap_exp = PartialClusterReader::get_partial_clusters_layout_bitmap(dev_arch);
+        CHECK_EXPECTED(bitmap_exp);
+        const auto bitmap = bitmap_exp.release();
+        if (PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15_DEFAULT == bitmap) {
+            return Expected<uint32_t>(PARTIAL_CLUSTERS_LAYOUT_IGNORE);
+        } else {
+            return Expected<uint32_t>(bitmap);
+        }
+    } else if (HAILO_ARCH_HAILO8L != dev_arch) {
         // Partial clusters layout is only relevant in HAILO_ARCH_HAILO8L and HAILO_ARCH_HAILO15M arch
         return Expected<uint32_t>(PARTIAL_CLUSTERS_LAYOUT_IGNORE);
-    }
-
-    if (HAILO_ARCH_HAILO15M == device_arch_exp.value()) {
-        return PartialClusterReader::get_partial_clusters_layout_bitmap(device_arch_exp.value());
     } else {
         auto extended_device_info_response = get_extended_device_info_response(device);
         CHECK_EXPECTED(extended_device_info_response);
index a4179368fe21d21d25c10a756a32e88d5a4bfacd..e5953f34363bf3e356e6b6f01d5774dc96913be3 100644 (file)
@@ -8,7 +8,7 @@
  **/
 
 #include "hailo/hailort_common.hpp"
-
+#include "common/filesystem.hpp"
 #include "partial_cluster_reader.hpp"
 
 #include <fstream>
 namespace hailort
 {
 
-Expected<uint32_t> PartialClusterReader::get_arch_default_bitmap(const hailo_device_architecture_t dev_arch)
+// SKU is three bit value in fuse file in order to differentiate the different kind of boards
+#define SKU_VALUE_BITMAP (0x7)
+#define HAILO15H_SKU_VALUE (0x0)
+#define HAILO15M_SKU_VALUE (0x3)
+
+// SKU and partial cluster layout bitmap are located at specific locations in the fuse file according to the spec
+// Located in issue HRT-12971
+#define SKU_BYTE_INDEX_IN_FUSE_FILE (32)
+#define SKU_BIT_INDEX_IN_WORD (18)
+#define ACTIVE_CLUSTER_LAYOUT_BITMAP_INDEX_IN_FUSE_FILE (80)
+
+Expected<uint32_t> PartialClusterReader::get_arch_default_bitmap(hailo_device_architecture_t dev_arch)
 {
     switch(dev_arch) {
-        // Currently only supported architecture for this function is HAILO15M - but in future can add more
+        // Currently only supported architectures for this function are HAILO15H and HAILO15M - but in future can add
+        case HAILO_ARCH_HAILO15H:
         case HAILO_ARCH_HAILO15M:
-            return static_cast<uint32_t>(PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15M_DEFAULT);
+            return static_cast<uint32_t>(PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15_DEFAULT);
         default:
             LOGGER__ERROR("Error, Given architecture {} doesnt support partial cluster layout",
                 HailoRTCommon::get_device_arch_str(dev_arch));
@@ -30,49 +42,133 @@ Expected<uint32_t> PartialClusterReader::get_arch_default_bitmap(const hailo_dev
     }
 }
 
-bool PartialClusterReader::validate_arch_partial_clusters_bitmap(const hailo_device_architecture_t dev_arch,
-    const uint32_t bitmap)
+bool PartialClusterReader::validate_arch_partial_clusters_bitmap(uint32_t bitmap, uint8_t sku_value)
 {
-    switch(dev_arch) {
-        // Currently only supported architecture for this function is HAILO15M - but in future can add more
-        case HAILO_ARCH_HAILO15M:
+        // Currently only supported architectures for this function are HAILO15H and HAILO15M - but in future can add
+    switch (sku_value) {
+        case HAILO15H_SKU_VALUE:
+            return (PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15_DEFAULT == bitmap);
+        case HAILO15M_SKU_VALUE:
             return (std::find(HAILO15M__PARTIAL_CLUSTERS_LAYOUT_BITMAP_ARRAY.begin(),
                 HAILO15M__PARTIAL_CLUSTERS_LAYOUT_BITMAP_ARRAY.end(), bitmap) !=
                 HAILO15M__PARTIAL_CLUSTERS_LAYOUT_BITMAP_ARRAY.end());
         default:
-            LOGGER__ERROR("Error, Given architecture {} doesnt support partial cluster layout",
-                HailoRTCommon::get_device_arch_str(dev_arch));
             return false;
     }
 }
 
-Expected<uint32_t> PartialClusterReader::get_partial_clusters_layout_bitmap(const hailo_device_architecture_t dev_arch)
+// NOTE: This Function assumes fuse file exists - and file not being able to be opened is considered error
+Expected<std::pair<uint32_t, uint8_t>> PartialClusterReader::read_fuse_file()
 {
     std::ifstream layout_bitmap_file;
     layout_bitmap_file.open(PARTIAL_CLUSTER_READER_CLUSTER_LAYOUT_FILE_PATH, std::ios::binary);
-    if (!layout_bitmap_file.is_open()) {
-        LOGGER__WARNING("partial cluster layout bitmap file not found, Enabling all clusters by default");
-        return get_arch_default_bitmap(dev_arch);
-    }
+
+    CHECK_AS_EXPECTED(layout_bitmap_file.is_open(), HAILO_OPEN_FILE_FAILURE, "Failed Opening layout bitmap file {}",
+        PARTIAL_CLUSTER_READER_CLUSTER_LAYOUT_FILE_PATH);
+
+    // SKU is located at SKU_BYTE_INDEX_IN_FUSE_FILE
+    layout_bitmap_file.seekg(SKU_BYTE_INDEX_IN_FUSE_FILE, std::ios::beg);
+    CHECK_AS_EXPECTED(layout_bitmap_file.good(), HAILO_FILE_OPERATION_FAILURE, "Failed seek in fuse file");
+
+    // Read SKU value from file as well to validate arch type
+    uint32_t misc_word = 0;
+    layout_bitmap_file.read(reinterpret_cast<char*>(&misc_word), sizeof(misc_word));
+    CHECK_AS_EXPECTED(layout_bitmap_file.good(), HAILO_FILE_OPERATION_FAILURE, "Failed reading fuse file");
+    uint8_t sku_value = ((misc_word >> SKU_BIT_INDEX_IN_WORD) & SKU_VALUE_BITMAP);
+
+    // active clusters bitmap is located at ACTIVE_CLUSTER_LAYOUT_BITMAP_INDEX_IN_FUSE_FILE
+    layout_bitmap_file.seekg(ACTIVE_CLUSTER_LAYOUT_BITMAP_INDEX_IN_FUSE_FILE, std::ios::beg);
+    CHECK_AS_EXPECTED(layout_bitmap_file.good(), HAILO_FILE_OPERATION_FAILURE, "Failed seek in fuse file");
 
     uint32_t partial_clusters_layout_bitmap = 0;
     layout_bitmap_file.read(reinterpret_cast<char*>(&partial_clusters_layout_bitmap),
         sizeof(partial_clusters_layout_bitmap));
+    CHECK_AS_EXPECTED(layout_bitmap_file.good(), HAILO_FILE_OPERATION_FAILURE, "Failed reading fuse file");
 
-    // Fuse file represents clusters that are enabled with 0 in bit value and clusters that are disabled with 1
-    // We also ignore all the MSB's that dont represent clusters.
-    // Therefore, after reading the uint32 layout - we mask with the default bitmap and bitwise flip the
-    // relevant bits so that 1 will represent enabled clusters
-    const auto arch_bitmap_mask_exp = get_arch_default_bitmap(dev_arch);
-    CHECK_EXPECTED(arch_bitmap_mask_exp);
-    partial_clusters_layout_bitmap = (~partial_clusters_layout_bitmap & arch_bitmap_mask_exp.value());
     layout_bitmap_file.close();
 
-    CHECK_AS_EXPECTED(validate_arch_partial_clusters_bitmap(dev_arch, partial_clusters_layout_bitmap),
-        HAILO_INTERNAL_FAILURE, "Error, Invalid partial clusters bitmap value given {}",
+    CHECK_AS_EXPECTED(validate_arch_partial_clusters_bitmap(partial_clusters_layout_bitmap, sku_value),
+        HAILO_INTERNAL_FAILURE, "Error, Given SKU value {} doesnt support partial cluster layout {}", sku_value,
         partial_clusters_layout_bitmap);
 
-    return partial_clusters_layout_bitmap;
+    return std::make_pair(partial_clusters_layout_bitmap, static_cast<uint8_t>(sku_value));
+}
+
+Expected<uint8_t> PartialClusterReader::get_sku_value_from_arch(hailo_device_architecture_t dev_arch)
+{
+    switch(dev_arch) {
+        // Currently only supported architectures for this function are HAILO15H and HAILO15M - but in future can add
+        case HAILO_ARCH_HAILO15H:
+            return HAILO15H_SKU_VALUE;
+        case HAILO_ARCH_HAILO15M:
+            return HAILO15M_SKU_VALUE;
+        default:
+            LOGGER__ERROR("Error, Unknown sku value for Given architecture {}",
+                HailoRTCommon::get_device_arch_str(dev_arch));
+            return make_unexpected(HAILO_INTERNAL_FAILURE);
+    }
+}
+
+Expected<uint32_t> PartialClusterReader::get_partial_clusters_layout_bitmap(hailo_device_architecture_t dev_arch)
+{
+    std::pair<uint32_t, uint8_t> fuse_file_data;
+
+    // If file does not exist - get default values for dev_arch
+    if (!Filesystem::does_file_exists(std::string(PARTIAL_CLUSTER_READER_CLUSTER_LAYOUT_FILE_PATH))) {
+        LOGGER__INFO("partial cluster layout bitmap file not found, Enabling all clusters by default");
+        auto default_bitmap_exp = get_arch_default_bitmap(dev_arch);
+        CHECK_EXPECTED(default_bitmap_exp);
+        fuse_file_data.first = default_bitmap_exp.release();
+
+        auto sku_value_exp = get_sku_value_from_arch(dev_arch);
+        CHECK_EXPECTED(sku_value_exp);
+        fuse_file_data.second = sku_value_exp.release();
+    } else {
+        // This will read bitmap and verify with SKU value
+        auto fuse_file_exp = read_fuse_file();
+        CHECK_EXPECTED(fuse_file_exp);
+        fuse_file_data = fuse_file_exp.release();
+    }
+
+    const auto sku_value = fuse_file_data.second;
+    switch (dev_arch) {
+        case HAILO_ARCH_HAILO15H:
+            CHECK_AS_EXPECTED((HAILO15H_SKU_VALUE == sku_value), HAILO_INTERNAL_FAILURE,
+                "Device arch is of type {} but sku is {}", dev_arch, sku_value);
+            break;
+        case HAILO_ARCH_HAILO15M:
+            CHECK_AS_EXPECTED((HAILO15M_SKU_VALUE == sku_value), HAILO_INTERNAL_FAILURE,
+                "Device arch is of type {} but sku is {}", dev_arch, sku_value);
+            break;
+        default:
+            LOGGER__ERROR("Error, Device architecture {} doesnt support partial cluster layout", dev_arch);
+            return make_unexpected(HAILO_INTERNAL_FAILURE);
+    }
+
+    return Expected<uint32_t>(fuse_file_data.first);
+}
+
+Expected<hailo_device_architecture_t> PartialClusterReader::get_actual_dev_arch_from_fuse(hailo_device_architecture_t fw_dev_arch)
+{
+    // If fuse file does not exist - and fw_dev_arch is HAILO_ARCH_HAILO15H - then it is HAILO_ARCH_HAILO15H
+    if (!Filesystem::does_file_exists(std::string(PARTIAL_CLUSTER_READER_CLUSTER_LAYOUT_FILE_PATH))
+        && (HAILO_ARCH_HAILO15H == fw_dev_arch)) {
+        return HAILO_ARCH_HAILO15H;
+    } else {
+        auto fuse_file_exp = read_fuse_file();
+        CHECK_EXPECTED(fuse_file_exp);
+        const auto fuse_file_data = fuse_file_exp.release();
+
+        const auto sku_value = fuse_file_data.second;
+        if (HAILO15M_SKU_VALUE == sku_value) {
+            return HAILO_ARCH_HAILO15M;
+        } else if (HAILO15H_SKU_VALUE == sku_value) {
+            return HAILO_ARCH_HAILO15H;
+        } else {
+            LOGGER__ERROR("Error, Invalid sku received {}", sku_value);
+            return make_unexpected(HAILO_INVALID_ARGUMENT);
+        }
+    }
 }
 
 } /* namespace hailort */
index 492627299bbb3fd70cc9b17f07bca2319bf7fca2..d656867aa1a7d163d05937e4dd0f245da3b8192f 100644 (file)
@@ -25,23 +25,34 @@ namespace hailort
 #define PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15M_0     ((0x1 << 1) | (0x1 << 2) | (0x1 << 3))
 #define PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15M_1     ((0x1 << 0) | (0x1 << 2) | (0x1 << 3))
 #define PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15M_2     ((0x1 << 0) | (0x1 << 1) | (0x1 << 4))
+
+#define HAILO15M_PARTIAL_CLUSTER_LAYOUTS_LIST PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15M_0,\
+    PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15M_1, PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15M_2
+
 // Default is all clusters are enabled
-#define PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15M_DEFAULT       ((0x1 << 0) | (0x1 << 1) | (0x1 << 2) | (0x1 << 3) | (0x1 << 4))
+#define PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15_DEFAULT        ((0x1 << 0) | (0x1 << 1) | (0x1 << 2) | (0x1 << 3) | (0x1 << 4))
 
-constexpr const char* PARTIAL_CLUSTER_READER_CLUSTER_LAYOUT_FILE_PATH = "/sys/devices/platform/fuse";
+constexpr const char* PARTIAL_CLUSTER_READER_CLUSTER_LAYOUT_FILE_PATH = "/sys/devices/soc0/fuse";
 
 // Array that has all the valid layouts for Hailo15M
-static constexpr std::array<uint32_t, 4> HAILO15M__PARTIAL_CLUSTERS_LAYOUT_BITMAP_ARRAY = {
-    PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15M_0, PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15M_1,
-    PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15M_2, PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15M_DEFAULT
+static constexpr std::array<uint32_t, 3> HAILO15M__PARTIAL_CLUSTERS_LAYOUT_BITMAP_ARRAY = {
+    HAILO15M_PARTIAL_CLUSTER_LAYOUTS_LIST
+};
+
+// Array that has all the valid layouts for Hailo15 (Either Hailo15M or Hailo15H)
+static constexpr std::array<uint32_t, 4> HAILO15__PARTIAL_CLUSTERS_LAYOUT_BITMAP_ARRAY = {
+    HAILO15M_PARTIAL_CLUSTER_LAYOUTS_LIST, PARTIAL_CLUSTERS_LAYOUT_BITMAP__HAILO15_DEFAULT
 };
 
 class PartialClusterReader {
 public:
-    static Expected<uint32_t> get_partial_clusters_layout_bitmap(const hailo_device_architecture_t dev_arch);
+    static Expected<uint32_t> get_partial_clusters_layout_bitmap(hailo_device_architecture_t dev_arch);
+    static Expected<hailo_device_architecture_t> get_actual_dev_arch_from_fuse(hailo_device_architecture_t fw_dev_arch);
 private:
-    static Expected<uint32_t> get_arch_default_bitmap(const hailo_device_architecture_t dev_arch);
-    static bool validate_arch_partial_clusters_bitmap(const hailo_device_architecture_t dev_arch, const uint32_t bitmap);
+    static Expected<uint32_t> get_arch_default_bitmap(hailo_device_architecture_t dev_arch);
+    static Expected<uint8_t> get_sku_value_from_arch(hailo_device_architecture_t dev_arch);
+    static bool validate_arch_partial_clusters_bitmap(uint32_t bitmap, uint8_t sku_value);
+    static Expected<std::pair<uint32_t, uint8_t>> read_fuse_file();
 };
 
 
index be29d8452fb7e589d5897dad024972734a6cfc75..593b252e7f1ff1e95972638aa91e409fc185888c 100644 (file)
@@ -2,7 +2,7 @@
 @ECHO OFF
 
 set BASE_URI=https://hailo-hailort.s3.eu-west-2.amazonaws.com
-set HRT_VERSION=4.16.1
+set HRT_VERSION=4.16.2
 set FW_DIR=Hailo8/%HRT_VERSION%/FW
 set FW=hailo8_fw.%HRT_VERSION%_eth.bin
 
index 4c07f61cf01135c01b47b96edb13fe87b6c3329d..c2104ead0e52f9a69597050e4e2297e8aaf249cb 100755 (executable)
@@ -2,7 +2,7 @@
 set -e
 
 readonly BASE_URI="https://hailo-hailort.s3.eu-west-2.amazonaws.com"
-readonly HRT_VERSION=4.16.1
+readonly HRT_VERSION=4.16.2
 readonly FW_AWS_DIR="Hailo8/${HRT_VERSION}/FW"
 readonly FW="hailo8_fw.${HRT_VERSION}_eth.bin"
 
index ac905106e561cae56afd7245dee148fec586eed2..663ffcc306a0b5c5b7eff5771e2a44e2c53cd11b 100644 (file)
@@ -1,7 +1,7 @@
 :: cmd
 @ECHO OFF
 set BASE_URI=https://hailo-hailort.s3.eu-west-2.amazonaws.com
-set HRT_VERSION=4.16.1
+set HRT_VERSION=4.16.2
 set REMOTE_HEF_DIR=Hailo8/%HRT_VERSION%/HEFS
 set LOCAL_EXAMPLES_HEF_DIR=..\libhailort\examples\hefs
 set LOCAL_TUTORIALS_HEF_DIR=..\libhailort\bindings\python\platform\hailo_tutorials\hefs
index 8dd4a80b9047e20dc1cc7904e8a85cc2f825aa1a..fe7af3baf3d89ae1bcee8c17f3e121e9d14c9f86 100755 (executable)
@@ -2,7 +2,7 @@
 set -e
 
 readonly BASE_URI="https://hailo-hailort.s3.eu-west-2.amazonaws.com"
-readonly HRT_VERSION=4.16.1
+readonly HRT_VERSION=4.16.2
 readonly REMOTE_HEF_DIR="Hailo8/${HRT_VERSION}/HEFS"
 readonly LOCAL_EXAMPLES_HEF_DIR="../libhailort/examples/hefs"
 readonly LOCAL_TUTORIALS_HEF_DIR="../libhailort/bindings/python/platform/hailo_tutorials/hefs"