Project

General

Profile

Actions

Support Request #15232

closed

Failed plugindescription generation when using tensorflow

Added by hidden over 2 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Normal
Customer:
CARIAD
Department:
Requester's Priority:
Normal
Support Level:
2nd Level
Resolution:
Solved Issue
Product Issue Numbers:
Affected Products:
Platform:
Windows 10 64bit
Topic:
ADTF::PluginDescription
FAQ Links:

Description

Supportanfrage

ich möchte gerne aus einem selbstgeschriebenen ADTF 3 Filter heraus tensorflow verwenden. Zum Testen habe ich ein Minimalbeispiel erstellt: Dazu habe ich den Data Processor Filter aus dem Tutorial erstellt und lediglich drei Zeilen Code eingefügt (+ die entsprechenden Verknüpfungen zur tensorflow Bibliothek in VS 2019 gesetzt):
Zwei neue "includes":
#include <tensorflow/c/c_api.h>
#include <iostream>

und dann z.B. in cTutorialFilterDataProcessor::cTutorialFilterDataProcessor() folgende Zeile als Test hinzugefügt:
std::cout << "Hello from TensorFlow C library version " << TF_Version() << std::endl;

In einem reinen C++ Projekt (ohne ADTF Bezug) funktioniert der build problemlos. Im ADTF Filter funktioniert der Gesamtbuild der Solution nicht mehr, sobald man die Zeile mit der Benutzung von tensorflow einfügt, hier konkret der Aufruf TF_Version().

Ein separater Build des tutorial_filter_data_processor funktioniert. Das Problem liegt beim build des Projekts tutorial_filter_data_processor_pdgen, ein Screenshot der leider nicht sehr aussagekräftigen Fehlermeldung habe ich angefügt.

Leider ist mir nicht ganz klar was die Rolle dieses _pdgen-Projekts ist und wieso hier ein Problem mit tensorflow auftreten sollte.

Ich habe auch schon versucht die tensorflow Benutzung in ein anderes Projekt auszulagern. Sobald ich dieses allerdings aus dem ADTF Filter heraus aufrufe führt es zum selben Fehler.

Gibt es vielleicht schon Erfahrung, wie tensorflow aus einem ADTF Filter heraus verwendet werden kann?

Lösung

Der Verweis zu Tensorflow hat gefehlt, das kann mittels DEPENDENT_DYNAMIC_LIBS definiert werden.
Siehe auch:

Files

ADTF_tensorflow_Fehler.PNG (25.5 KB) ADTF_tensorflow_Fehler.PNG hidden, 2021-09-21 07:14
log.txt (11.8 KB) log.txt hidden, 2021-09-22 09:57
Actions #1

Updated by hidden over 2 years ago

  • Status changed from New to In Progress
  • Customer set to CARIAD

Hallo Talitha,

wahrscheinlich liegt es nicht an tensorflow sondern an dem VS2019. Wir können bis jetzt keine 100% Freigabe für ADTF und VS2019 geben - sind aber dran dies zu ändern.

Folgende Info habe ich noch für dich:

Currently for ADTF 3.12.7, VS2017 VC141 is in use.
Howerver you can also could use VS2019 (IDE) in combination with VC141 to use new IDE features.
Theoretically VC142 (Standardtoolchain von VS2019) may be compatible, but may have cross effects with Qt (=VC141).

If you choose to use VS2019 + VC141, please be aware you will need to configure Conan + CMake accordingly.

Current ADTF is compiled and tested with VS2017 VC141:
https://support.digitalwerk.net/adtf/v3/adtf_html/page_system_requirements.html#section_windows_x64_requirements
There is currently no ADTF delivery for VS2019 VC142 available but planned until the following months to change to this toolchain.

Viele Grüße
Margarete

Actions #5

Updated by hidden over 2 years ago

Hallo Talitha,

könntest du uns den kompletten output vom build in Visual Studio zusenden?
Sowohl beim Bauen des Filters als auch der Plugin Description.
Welchen build type nutzt du und passt dieser zu tensor flow?

Viele Grüße
Margarete

Actions #6

Updated by hidden over 2 years ago

Hallo Margarete,

erst Mal vielen Dank für deine schnelle Antwort. Ich versuche mir gerade für VS2019 die VC141 Toolkette zu besorgen (und danach zu integrieren) um zu schauen ob das hilft. Aktuell benutze ich definitiv VC142.
Da ich außerdem ADTF 3.10 verwende noch folgende Frage: ist dafür auch VS2017 VC141 vorgesehenen und getestet, oder brauche ich dafür eine noch ältere Version?

Ich habe dir außerdem wie gewünscht den Output vom kompletten build angehängt.

Ich arbeite momentan lediglich im Release Modus, ich habe auch keinen Debug-Build von tensorflow.

In einem C++ Projekt ohne ADTF Bezug funktioniert das Zusammenspiel mit tensorflow dementsprechend auch nur im Release Modus. Zum Ausführen (post-build) eines solchen Projekts muss dann noch eine tensorflow.dll in das richtige Verzeichnis (wo die .exe erstellt wird) kopiert werden. Hier ist mir auch noch unklar was entsprechend für das ADTF Plugin gemacht werden müsste. Aber ich denke diesen Schritt müssen wir erst angehen, wenn wir den build erfolgreich abschließen.

Viele Grüße
Talitha

Actions #8

Updated by hidden over 2 years ago

Kurzes Update: Ich habe jetzt in VS2019 die Toolkette v141 nachinstalliert und für das gesamte ADTF Filter Projekt darauf umgestellt. Leider bekomme ich beim build noch immer den selben Fehler.

Actions #9

Updated by hidden over 2 years ago

Ich denke ich habe das Problem gelöst: Es scheint, dass der build des _pdgen Projekt bereits die tensorflow.dll benötigt - auch wenn mir nicht klar ist wofür. D.h. wenn ich die tensorflow.dll bereits in das Verzeichnis lege wo das plugin und die plugindescription erstellt werden, dann funktioniert der build und es gibt keine Fehlermeldung mehr.

Viele Grüße

Actions #10

Updated by hidden over 2 years ago

  • Status changed from In Progress to To Be Closed
  • Topic set to ADTF::Common
  • Resolution set to Solved Issue

Hallo Talitha,

danke für die Info und gut das es sich von "selbst" gelöst hat.
Damit schließen wir das Ticket.

Grüße
Margarete

Actions #11

Updated by hidden over 2 years ago

  • Description updated (diff)
Actions #12

Updated by hidden over 2 years ago

  • Project changed from 30 to Public Support
  • Subject changed from ADTF 3 + tensorflow to Failed plugindescription generation when using tensorflow
  • Description updated (diff)
  • Private changed from Yes to No
  • Topic changed from ADTF::Common to ADTF::PluginDescription

Hallo Talitha,

Es scheint, dass der build des _pdgen Projekt bereits die tensorflow.dll benötigt - auch wenn mir nicht klar ist wofür.

Der Plugin Description Generator lädt das Plugin und fährt es hoch um zu wissen, welche Pins, Properties usw vorhanden sind, erstellt daraus eine Plugin Description als Meta Information, damit zb der Configuration Editor die Inhalt des Plugins kennt, ohne diese Instanziieren zu müssen. D.h. der Plugin Description Generator benötigt alle Runtime Abhängigkeiten, sonst klappt das Laden natürlich nicht. Siehe https://support.digitalwerk.net/adtf/v3/guides/tools_adtf_plugin_description_generator.html

D.h. wenn ich die tensorflow.dll bereits in das Verzeichnis lege wo das plugin und die plugindescription erstellt werden, dann funktioniert der build und es gibt keine Fehlermeldung mehr.

Unter dem angegebenen Link findest du auch eine elegantere Möglichkeit tensorflow zu referenzieren, dann musst du es nicht ins Verzeichnis legen.
Das ersetzt aber nicht deinen install bzw. deploy, dort muss es vermutlich auch bekannt sein, wo tensorflow zu finden ist.
Dennoch ist die Verwendung von DEPENDENT_DYNAMIC_LIBS die korrekte Vorgehensweise.
Bedenke aber dabei, dass du hier alle weiteren Abhängigkeiten ggf. auch angeben musst, sollte tensorflow weitere Dlls benötigen.

Actions #13

Updated by hidden over 2 years ago

  • Status changed from To Be Closed to Closed
Actions

Also available in: Atom PDF