<< Chapter < Page Chapter >> Page >

Se ha dicho, "No sé qué lenguaje se usará para programar computadoras de alto rendimiento dentro de 10 años, pero sí que se llamará FORTRAN". A riesgo de iniciar una guerra de exterminio, necesitamos discutir las fortalezas y debilidades de los lenguajes que se usan para cómputo de alto rendimiento. Muchos científicos de computadoras (no científicos de la computación) se han entrenado en una dieta continua de C, C++ Que conste que ambos autores de este libro son consumados expertos en C, C++ y FORTRAN, y no tienen nociones preconcebidas. o algún otro lenguaje enfocado en estructuras de datos u objetos. Cuando los estudiantes se topan por vez primera con el cómputo de alto rendimiento, tienen el deseo instintivo de continuar programando en su lenguaje favorito. Sin embargo, si se quiere obtener el rendimiento máximo en un extenso rango de arquitecturas, FORTRAN es el único lenguaje práctico.

Cuando los estudiantes preguntan el porqué, usualmente la primera respuesta es "porque siempre ha sido así". Y en cierta forma es cierto. Físicos, ingenieros mecánicos, químicos, ingenieros estructurales y meteorólogos realizan mucha programación en computadoras de alto rendimiento, y FORTRAN es el lenguaje en esos campos. (¿Cuándo fue la última vez que un estudiante de ciencias de la computación escribió un programa que funcione apropiadamente, y que calcule durante una semana completa?) Así que de forma natural los vendedores de computadoras de alto rendimiento ponen un gran esfuerzo en hacer que FORTRAN trabaje muy bien en la arquitectura que comercializan.

Pero, claro está, ésta no es la única razón por la cual FORTRAN es el mejor lenguaje. Hay algunos elementos fundamentales que hacen que C, C++ o cualesquiera otro lenguaje orientado a las estructuras de datos no resulte adecuado para la programación de alto rendimiento. En una palabra, el problema son los apuntadores . Los apuntadores (o direcciones) son la forma mediante la cual los buenos científicos de la computación construyen listas ligadas, árboles binarios, colas dobles y toda clase de elegantes estructuras de datos. El problema estriba en que el efecto de una operación con apuntadores sólo se conoce a tiempo de ejecución, cuando el valor de dicho apuntador se carga en memoria. Una vez que el optimizador del compilador ve un apuntador, se vienen abajo todas las apuestas. No puede hacerse ninguna suposición sobre el efecto de una operación de apuntadores a tiempo de compilación. Debe generarse código conservador (menos optimizado) que simplemente hace exactamente la misma operación en lenguaje máquina, que la que describe el lenguaje de alto nivel.

Aunque la carencia de apuntadores en FORTRAN es una ventaja para la optimización, limita seriamente la habilidad del programador para crear estructuras de datos. En ciertas aplicaciones, especialmente en aquellas altamente escalables y basadas en redes, el uso de las estructuras de datos adecuadas puede mejorar significativamente el rendimiento global de la aplicación. Para resolverlo, en la especificación de FORTRAN 90 se han agregado apuntadores al lenguaje. En cierto modo, se trata de un intento de la comunidad FORTRAN para evitar que los programadores usen C en sus aplicaciones en aquellas áreas donde requieren del uso de estructuras de datos. Si los programadores comienzan a usar apuntadores en sus códigos, sus programas en FORTRAN sufrirán los mismos problemas que inhiben la optimización de los programas en C. En cierto modo FORTRAN ha renunciado a su principal ventaja respecto a C, por tratar de parecerse a C. El debate acerca de los apuntadores es una de las razones que ha frenado la tasa de adopción de FORTRAN 90. Muchos programadores prefieren crear sus estructuras de datos, comunicaciones y otro trabajo de contabilidad en C, y hacer sus cálculos en FORTRAN 77.

FORTRAN 90 también tiene fortalezas y debilidades cuando se le compara con FORTRAN 77 en plataformas de cómputo de alto rendimiento. FORTRAN 90 tiene una fuerte ventaja sobre FORTRAN 77 en su semántica mejorada, que da mayores oportunidades para optimizaciones avanzadas. Esta ventaja es especialmente cierta sobre sistemas de memoria distribuida, en los que la descomposición de datos es un factor significativo. (Véase [link] .) Sin embargo, hasta que FORTRAN 90 se vuelva popular, los vendedores no tendrán motivación para exprimir hasta el último bit de rendimiento de FORTRAN 90.

Así que mientras FORTRAN 77 continúe siendo el lenguaje principal para el cómputo de alto rendimiento en el futuro cercano, otros lenguajes como C y FORTRAN 90 tendrán que jugar papeles limitados y potencialmente incrementales. En cierto modo el retador potencial más fuerte a FORTRAN a largo plazo puede venir en la forma de un conjunto de herramientas numéricas como Matlab. Sin embargo, los paquetes como Matlab tienen su propio conjunto de retos de optimización que deben superarse antes de que puedan derrocar a FORTRAN 77.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Cómputo de alto rendimiento. OpenStax CNX. Sep 02, 2011 Download for free at http://cnx.org/content/col11356/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Cómputo de alto rendimiento' conversation and receive update notifications?

Ask