<< Chapter < Page Chapter >> Page >

¿Su compilador reconoce el código muerto en el siguiente programa? ¿Cómo puede estar seguro? ¿Le envía el compilador algún aviso?


main() {int k=1; if (k == 0)printf ("Esta sentencia nunca se ejecuta.\n"); }

Compile el siguiente código, y ejecútelo bajo distintos niveles de optimización.

Trate de adivinar los distintos tipos de optimizaciones que se están realizando para mejorar el rendimiento, conforme se incrementa el nivel de optimización.


REAL*8 A(1000000) DO I=1,1000000A(I) = 3.1415927 ENDDODO I=1,1000000 A(I) = A(I) * SIN(A(I)) + COS(A(I)) ENDDOPRINT *,"Terminado"

Tome el siguiente segmento de código y compílelo a varios niveles de optimización. Observe el código ensamblador generado (en algunos compiladores esto se hace con la opción -S) y encuentre los efectos de cada nivel de optimización sobre el lenguaje máquina. Mida el tiempo de ejecución del programa para ver el rendimiento a diferentes niveles de optimización. Si tiene acceso a múltiples arquitecturas, observe el código generado usando los mismos niveles de optimización sobre diferentes arquitecturas.


REAL*8 A(1000000) COMMON/BLK/A.... Llamada para medir el tiempo DO I=1,1000000A(I) = A(I) + 1.234 ENDDO.... Llamada para medir el tiempo END

¿Por qué es necesario poner el arreglo adentro de un bloque común?

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