Archivo

Entradas Etiquetadas ‘Programación’

Bit flags in C/C++

Sábado, 20 de agosto de 2011 Sin comentarios

Siempre me ha parecido muy útil el paso de parámetros por medio de banderas de bits (más conocidas como bit flags). En muchas de las librerías que he ido manejando estos últimos años he observado que es muy común pasar opciones, a por ejemplo una función, mediante un argumento de tipo int (32 bits) y de esta forma poder pasar un número de opciones igual al número de bits empleados por el tipo de dato. A continuación es dejo un ejemplo muy sencillo para que veáis como se suele utilizar los bits flags en C/C++. Leer más…

GD Star Rating
loading...
Share

OpenCV 2.X: Reading/Writing from/in markup languages (XML, YAML)

Viernes, 19 de agosto de 2011 Sin comentarios

La nueva interfaz de escritura y lectura en ficheros de lenguajes de marcas introducida en OpenCV desde la versión 2.0 nos permite muchas posibilidades. En este post explico como trabajar con la nueva clase FileStorage de OpenCV con dos sencillos ejemplos. Leer más…

GD Star Rating
loading...
Share

Usando la librería libav

Sábado, 2 de julio de 2011 5 comentarios

Hacía tiempo que no escribía por aquí y ya tenía muchas ganas :P … pero últimamente mi vida ha tenido muchos cambios. Leer más…

GD Star Rating
loading...
Share

Paralelismo: ¿OpenMP o Intel TBB?

Lunes, 6 de diciembre de 2010 Sin comentarios

Desde hace cosa de un año siempre que puedo paralelizar alguno de los programas que escribo lo hago de forma sencilla con OpenMP. OpenMP es un estándar que en la actualidad implementan la mayoría de compiladores (gcc, vc, etc.), mediante el cual podemos paralelizar fácilmente un bucle introduciendo ¡una línea de código!. Entonces, ¿a que viene este post? ¿por qué dudo entre un estándar o la librería de intel TBB que aunque tenga una versión abierta no es un estándar?. Este dilema se me planteó en el momento que vi que la gente que desarrolla las OpenCV han decidido cambiar el uso de OpenMP por las Intel TBB, aunque tenía mis dudas de porque había sucedido esto … ya que en sus orígenes las OpenCV fueron escritas por gente de Intel.

Pues bien, la misma gente de Intel en una Wiki de las TBB advierten que no tiene porque el uso de una librería sustituir a la otra, y que pueden ser perfectamente complementarias. Podemos usar TBB en una parte de la aplicación mientras usamos OpenMP en otra. Las OpenMP son fáciles de usar, son un estándar , están soportadas por la mayoría de compiladores y explotan bien el paralelismo. Sin embargo están muy orientadas a bucles o no están dirigidas para el paralelismo a nivel de algoritmos o estructuras de datos. Cuando OpenMP se ajuste bien a nuestro código deberíamos usarlo sin más.

Por otra parte hay que fijarse en el entorno de desarrollo. Si el código está escrito en C++, es probable que TBB se ajuste mejor. TBB encaja especialmente en el código que está altamente orientado a objetos, y hace un uso extenso de plantillas y tipos de datos definidos. Si el código está escrito en C o FORTRAN, OpenMP puede que sea una mejor solución que TBB por su estilo de codificación estructurado. TBB y los hilos nativos no requieren de un soporte específico por parte del compilador mientras que OpenMP si, por lo que OpenMP requiere que compiles con un compilador que reconozca los #pragmas de OpenMP.

Conclusión personal

Si llevas mucho tiempo usando OpenMP, lo estás usando en tus librerías y/o programas  y ya tienes cierto dominio de sus directivas y funcionamiento no tienes porque cambiar a TBB. Sin embargo, si estás empezando a introducir paralelismo en tu código, y este está altamente orientado a objetos sería recomendable empezar a usar directamente TBB. Estoy convencido que aprendiendo a usar TBB no habrá mucho problema en después usar OpenMP, ya que en principio es bastante más sencillo de usar.

Más información aquí (aunque en inglés).

Read the Intel Wiki.

GD Star Rating
loading...
Share

OpenCV 2.2 !

Lunes, 6 de diciembre de 2010 1 comentario


Sabéis que no suelo publicar anuncios sobre “nuevas versiones” de ningún programa, librería o S.O, pero OpenCV para mi merece una excepción. Pues eso, que han sacado la versión 2.2 cargadita de novedades. Entre las más apetecibles a primera vista: han incluido una nueva interfaz gráfica que hace uso de QT! :D .

As you know, I don’t use to post entries about “new releases” of any program, library or S.O. but OpenCV is an exception for me. So, the announcement is that the version 2.2 has been released filled of new features. Between the most interesting features, there is a new graphical interface that uses QT! :D .

GD Star Rating
loading...
Share