J'ai réussi à prototyper une application en utilisant la géniale bibliothèque de graphes TBB d'Intel. Cela semble fonctionner plutôt bien, mais maintenant je dois refactoriser le code dans une version prête pour la production.Gérez et mettez à jour manuellement le graphique de flux Intel TBB?
Auparavant, j'ai travaillé avec des frameworks plus grands et plus "surdéveloppés" pour ce domaine particulier (le travail est dans le traitement d'image et les applications précédentes ont utilisé ITK/VTK). Pour cette application, cependant, j'essaie de prendre une approche de niveau inférieur et plus ciblée.
Actuellement, je suis en train d'assembler tout mon graphique en main()
ce qui n'est évidemment pas viable. Je voudrais autoriser le pipeline à fonctionner de manière itérative afin que je puisse saisir les données de sortie de chaque étape et les afficher à des fins de débogage/d'analyse. Mon idée jusqu'ici est de faire abstraction de chaque «étape» logique de l'application dans une classe qui accepte un &tbb::flow::graph
comme argument constructeur et stocke en interne une référence au nœud graphique qu'elle contrôle. Je peux avoir la classe wrapper allouer tbb::flow::broadcast_node
supplémentaire à la sortie et un noeud asynchrone après cela pour déclencher des événements.
Est-ce un concept de conception raisonnable? De manière générale, comment les autres ont-ils intégré les concepts de graphe de flux TBB dans la structure de leur application? Les exemples et la documentation sont assez rares pour cette partie particulière de la bibliothèque TBB.