<< 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:
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.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.ANY
y
ALL
, sirven para probar en paralelo varios elementos de un arreglo.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.
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.
Notification Switch
Would you like to follow the 'Cómputo de alto rendimiento' conversation and receive update notifications?