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
This commit is contained in:
parent
b2ea4cc49d
commit
42e6af1ac7
@ -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_
|
||||
|
Loading…
x
Reference in New Issue
Block a user