提交 42e6af1a 编写于 作者: K Karim Nosir 提交者: TensorFlower Gardener

Add check for hexagon version between interface and skel.

libhexagon_interface and libhexagon_nn_skel should be used with matching versions. Users shouldn't use mixed versions as it will not work correctly.

PiperOrigin-RevId: 297239641
Change-Id: I4e82626fc395eaba23fd51f84fbb402e24b2fd8a
上级 b2ea4cc4
......@@ -132,6 +132,30 @@ class HexagonDelegate : public TfLiteDelegate {
if (hexagon_nn == nullptr) {
return false;
}
if (hexagon_nn->hexagon_nn_version != nullptr &&
hexagon_nn->hexagon_nn_hexagon_interface_version) {
int hexagon_nn_version = -1;
int hexagon_interface_version =
hexagon_nn->hexagon_nn_hexagon_interface_version();
if (hexagon_nn->hexagon_nn_version(&hexagon_nn_version) != 0) {
TFLITE_LOG_PROD(tflite::TFLITE_LOG_WARNING,
"Failed to fetch Hexagon NN version. This might be "
"because you're using incompatible versions of "
"libhexagon_interface and libhexagon_nn_skel. "
"You must use compatible versions. "
"Refer to Tensorflow Lite Hexagon Delegate Guide.");
return false;
}
if (hexagon_nn_version != hexagon_interface_version) {
TFLITE_LOG_PROD(
tflite::TFLITE_LOG_WARNING,
"Incompatible versions between interface library and "
"libhexagon_skel %d vs %d. You must use compatible versions. "
"Refer to Tensorflow Lite Hexagon Delegate Guide.",
hexagon_interface_version, hexagon_nn_version);
return false;
}
}
return hexagon_nn->hexagon_nn_is_device_supported &&
hexagon_nn->hexagon_nn_is_device_supported();
}
......
......@@ -76,6 +76,8 @@ HexagonNN CreateNewHexagonInterface() {
LOAD_FUNCTION(libhexagon_interface, hexagon_nn_is_device_supported,
hexagon_nn);
LOAD_FUNCTION(libhexagon_interface, hexagon_nn_version, hexagon_nn);
LOAD_FUNCTION(libhexagon_interface, hexagon_nn_hexagon_interface_version,
hexagon_nn);
hexagon_nn.interface_loaded = successfully_loaded;
return hexagon_nn;
}
......
......@@ -126,6 +126,9 @@ struct HexagonNN {
// Otherwise.
hexagon_nn_is_device_supported_fn* hexagon_nn_is_device_supported;
// Returns the version number of the interface library.
hexagon_nn_hexagon_interface_version_fn* hexagon_nn_hexagon_interface_version;
hexagon_nn_version_fn* hexagon_nn_version = nullptr;
bool interface_loaded = false;
......
......@@ -56,4 +56,7 @@ using hexagon_nn_is_device_supported_fn =
using hexagon_nn_version_fn = decltype(hexagon_nn_version);
using hexagon_nn_hexagon_interface_version_fn =
decltype(hexagon_nn_hexagon_interface_version);
#endif // TENSORFLOW_LITE_EXPERIMENTAL_DELEGATES_HEXAGON_HEXAGON_NN_INTERFACE_H_
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册