Paralelizador automático de Visual C++ 2013

Si el otro día hablaba del declive de Delphi, hoy vamos a justo lo opuesto. Como C/C++ un lenguaje de programación del que en bastante ocasiones se ha pronosticado su final, sigue vigente, e incluso ganando cuota de mercado.

El reciente Visual C++ 2013, viene con mejoras sobre la versión 2012 en cuento a funciones C99, STL y mejoras de rendimiento. En cuanto a esto último, me ha llamado la atención el paralelizador automático, una característica ya disponible con la versión 2012, pero que había pasado por alto. Lo que si es nuevo, es que se incluya como opción de compilador en el propio IDE dentro de C/C++ / Generación de código / Habilitar generación de código paralelo.

Basta añadir la opción /Qpar, para que Visual C++ detecte bucles que pueden ser paralelizados entre diferentes cores, y genere el código adecuado para hacerlo.

Se nos ofrece un control añadido sobre la paralelización automatizada, que de forma parecida a OpenMP, nos permite indicar al compilador como queremos que se comporte en este sentido. Bien, no es quizás tan potente y flexible, pero si mucho más fácil de utilizar, e integrado en el entorno.

Le indica a Visual C++ que debería intentar el siguiente bucle en n cores/procesadores:

#pragma loop(hint_parallel(n))

Le indica a Visual C++ que no debería en absoluto paralelizar el siguiente bucle:

#pragma loop(no_vector)

En combinacón con hint_paralel, le indica al compilador que en el siguiente bucle, puede ignorar la comprobación de dependencias al vectorizarlo:

#pragma loop(ivdep)

Deja un comentario