Había oído hablar de de esta herramienta en la entrevista a Sanjiv Shah de OpenMP en thinking parallel [thinkingparallel.com], pero como él trabaja en Intel siempre parece más sospechoso tratándose de un producto comercial. Ahora que lo han liberado he estado echándole un vistazo y bueno, creo que tiene su ámbito de aplicación y que puede ser muy interesante para facilitar algunas tareas sin reinventar alguna rueda.
Por analizar un poco la librería, consta como de cuatro partes:
Algortimos para bucles paralelos:parallel_for, parallel_reduce, parallel_while. Me ha parecido de lo más interesante de la librería porque es muy fácil de implementar y te ahorra mucha gestión. Al algoritmo se le pasa un contenedor sobre el que operar y un functor y el lo procesa en paralelo automágicamente, aunque parece ser algo parametrizable.
Contenedores seguros a accesos concurrentes:concurrent_hash_map, concurrent_vector, concurrent_queue. Usan internamente los bloqueos de grano fino y estructuras de datos sin bloqueos [blogspot.com]. Que bien que no haya que hacerlo por uno mismo, tiene pinta de ser complicadillo y muy fácil hacerlo mal
Utilidades para gestión de la concurrencia: mutexes de diverso tipo (si, recursivos también [blogspot.com]), locks, operaciones atómicas
Un gestor de tareas: una ayuda para programar orientado a tareas, threads más ligeros que los del sistema.
Puede ayudar a hacer un poco más multiplataforma el código paralelizado en C++, aunque ya existen muchas librerías que lo hacen, como Boost.Thread [boost.org]. Supongo que estará bien usarlo cuando se necesita mucho rendimiento, una aproximación más sencilla no vale y paralelizarlo de este modo sale rápido y óptimo.
Java and.NET versions of TBB are currently being evaluated by Intel, and may eventually be announced. But Intel maintains that C++ is the company's priority, and it's where they'll be focusing the engineering resources that they're adding to the project.
Un vistazo
(Puntos:3, Interesante)( https://twitter.com/yapw | Última bitácora: Viernes, 13 Mayo de 2011, 21:21h )
Había oído hablar de de esta herramienta en la entrevista a Sanjiv Shah de OpenMP en thinking parallel [thinkingparallel.com], pero como él trabaja en Intel siempre parece más sospechoso tratándose de un producto comercial. Ahora que lo han liberado he estado echándole un vistazo y bueno, creo que tiene su ámbito de aplicación y que puede ser muy interesante para facilitar algunas tareas sin reinventar alguna rueda.
Por analizar un poco la librería, consta como de cuatro partes:
Desde que lo han hecho opensource le han asignado un domino propio, http://www.threadingbuildingblocks.org/ [threadingb...blocks.org] en el que hay bastante información. En particular el tutorial al que le he echado un vistazo es Intel® Threading Building Blocks: Tutorial [intel.com]
Por dar alguna nota no positiva... bueno, de momento solo soporta plataformas desde Intel Pentium 4, porteriores y compatibles, aunque en una de las FAQ del proyecto dicen que soportar todos los procesadores, sistemas operativos y compiladores es una las piedras angulares del proyecto [intel.com]. Veremos.
Puede ayudar a hacer un poco más multiplataforma el código paralelizado en C++, aunque ya existen muchas librerías que lo hacen, como Boost.Thread [boost.org]. Supongo que estará bien usarlo cuando se necesita mucho rendimiento, una aproximación más sencilla no vale y paralelizarlo de este modo sale rápido y óptimo.
Aquí había una firma
Re:Un vistazo
(Puntos:1)( https://twitter.com/yapw | Última bitácora: Viernes, 13 Mayo de 2011, 21:21h )
Aquí había una firma