2012-03-06 10 views
5

Tengo un modelo de procesamiento de datos que está hecho de muchas cadenas de algoritmos que procesan fragmentos de datos. Cada cadena es un gráfico de algoritmos, que implementé con la clase de gráfico TBB.Intel TBB: conjunto de gráficos

Ahora me gustaría tener algo así como un "grupo de gráficos", es decir, un conjunto de tareas, cada una de ellas contiene un gráfico tbb ::. De esta manera podría ejecutar las cadenas de algoritmos en paralelo sobre los fragmentos de datos.

¿Podría apuntar cualquier ejemplo TBB de algo similar a un "grupo de gráficos", o podría sugerir y sugerencias para implementarlo?

Respuesta

1

Mi sugerencia sería que utilice tbb :: concurrent_queue o tbb :: concurrent_vector, la ventaja de esto es que puede cambiar su tamaño durante varios accesos. Mi consejo personal para esto es crear un objeto de bloqueo/gráfico para que nunca modifiques un objeto en paralelo.

http://threadingbuildingblocks.org/wiki/index.php?title=Concurrent_Vector

Un ejemplo para la cola se puede encontrar aquí: https://sites.google.com/site/samplecodesproject/tbb/containers-3/concurrent_queue

0

No estoy seguro de entender completamente lo que es exactamente lo que intenta lograr, pero vamos a tratar :). Parece que lo único que necesita es el correcto source_node (https://www.threadingbuildingblocks.org/docs/help/reference/flow_graph/source_node_cls.htm) para arrojar nuevos fragmentos de datos en el flujograma para su procesamiento. La instancia de flujo de gráficos se puede tratar como el algoritmo (como, por ejemplo, tbb :: parallel_pipeline) escrito de una manera un poco diferente. No debe tratarse como la estructura de datos como lista o vector. Por lo tanto, lo más probable es que no necesite un conjunto de gráficos :)