Una mirada entre programación paralela y a tradicional práctica educativa. - Rafael Ricardo Mantilla Güiza (I+D Revista de Investigaciones, 2014)
En los últimos años se ha visto un gran avance en la evolución del hardware, empresas como Intel han desarrollado procesadores potentes con múltiples núcleos (core ¡3,¡5,¡7,etc.), con el fin de mejorar los tiempos de ejecución de procesos. Sin embargo el software no ha tenido el mismo crecimiento en sus lenguajes de programación, han surgido lenguajes que facilitan la programación a través de IDEs (Entornos de Desarrollo Integrados), que mejoran la interacción entre las instrucciones, sentencias, funciones, procedimientos de un programa, y en especial el entorno e interfaz del programador; pero, no en el aprovechamiento al máximo de la capacidad hardware que posee el equipo de cómputo con varios procesadores. Así surge la pregunta de investigación: ¿Cómo mejorar el rendimiento de aplicaciones desarrolladas en visual C++ aplicando técnicas de programación en paralelo con la herramienta Intel Parallel Studio XE?. El objetivo de estudio fue determinar el impacto de aplicar las técnicas de paralelismo en algoritmos de ordenamientos e instrucciones de almacenamiento implementados en el lenguaje C++ con las herramientas de Parallel Studio XE, frente a los algoritmos de ordenamiento e instrucciones de almacenamiento con técnicas de programación tradicional. El estudio es de tipo cuantitativo, con un enfoque cuasi experimental, compara dos escenarios de desarrollo. El escenario control (programación secuencial) y el escenario experimental (programación en paralelo) bajo la IDE de visual studio 2010 con su lenguaje de visual C++, incorporando librerías desarrolladas por Intel a través de su paquete Paralell Studio Xe (Padua, 2011). La programación es paralelo se usa para acelerar la resolución de problemas de alto coste computancional, que tienen por finalidad reducir los tiempos de ejecución partiendo del tiempo secuencial t(n), usando p procesadores para reducir su tiempo de ejecución así: t(n)/p. Este tiempo de ejecución depende de diversas variables: tamaño de la entrada, compilador, maquina, y el programador entre otras.