<< Chapter < Page Chapter >> Page >

REAL A(100,10,2) ...A = SIN(A)

Cada elemento del arreglo A es reemplazado por su seno. Los intrínsecos de FORTRAN 90 también trabajan con secciones de arreglos, con tal de que la variable que reciba los resultados esté en concordancia de tamaño con la que se pasó:


REAL A(100,10,2) REAL B(10,10,100)... B(:,:,1) = COS(A(1:100:10,:,1))

También se han extendido otros intrínsecos tales como SQRT , LOG , etc. Entre los nuevos intrínsecos se encuentran:

  • FORTRAN 90 tiene reducciones de vectores tales como MAXVAL , MINVAL y SUM . Para arreglos de orden superior (cualquier cosa mayor que un vector) tales funciones pueden realizar una reducción a lo largo de una dimensión en particular. Adicionalmente, existe una función DOT_PRODUCT (producto punto) para los vectores.
  • Los intrínsecos MATMUL y TRANSPOSE pueden manipular matrices completas.
  • RESHAPE le permite crear un nuevo arreglo a partir de los elementos de uno antiguo con diferente tamaño. SPREAD replica un arreglo a lo largo de una nueva dimensión. MERGE copia porciones de un arreglo en otro, bajo el control de una máscara. CSHIFT permite desplazar un arreglo en una o más dimensiones.
  • SHAPE , SIZE , LBOUND , y UBOUND le permiten averiguar cómo está construido un arreglo.
  • Dos intrínsecos nuevos de reducción, ANY y ALL , sirven para probar en paralelo varios elementos de un arreglo.

Nuevas características de control

FORTRAN 90 incluye algunas nuevas características de control, entre ellas una primitiva de asignación condicional llamada WHERE , que pone las asignaciones de un arreglo con concordancia de tamaños bajo el control de una máscara, tal como en el ejemplo siguiente. He aquí un ejemplo de la primitiva WHERE :


REAL A(2,2), B(2,2), C(2,2) DATA B/1,2,3,4/, C/1,1,5,5/... WHERE (B .EQ. C)A = 1.0 C = B + 1.0ELSEWHERE A = -1.0ENDWHERE

En aquellos casos donde la expresión lógica es TRUE , A obtiene 1.0 y C obtiene B+1.0 . En la claúsula ELSEWHERE , A obtiene -1.0 . El resultado de la operación anterior serán los arreglos A y C con los elementos:


A = 1.0 -1.0 C = 2.0 5.0 -1.0 -1.0 1.0 5.0

Nuevamente, no hay ningún orden implícito en estas asignaciones condicionales, lo cual significa que pueden realizarse en paralelo. La ausencia de orden implícito es crítica para permitir a los sistemas de cómputo SIMD y a los ambientes SPMD tener flexibilidad en la ejecución de tales cálculos.

Arreglos automáticos y asignables

Cada programa requiere variables temporales o espacio de trabajo. En el pasado, los programadores de FORTRAN a menudo administraban su propio espacio libre, declarando un arreglo lo suficientemente grande para manejar cualquier requerimiento temporal. Esta práctica se traga la memoria (aunque la memoria virtual, por lo general), e incluso puede tener efectos indeseados en el rendimiento. Con la habilidad de asignar la memoria dinámicamente, los programadores pueden esperar más tiempo para decidir cuánto espacio vacío deben obtener. FORTRAN 90 soporta la asignación dinámica de memoria mediante dos nuevas características del lenguaje: arreglos automáticos y arreglos asignables.

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