En aquest tema, aprendrem sobre les tècniques de depuració i perfilat en Fortran. La depuració és el procés d'identificar i corregir errors en el codi, mentre que el perfilat és l'anàlisi del rendiment del codi per identificar colls d'ampolla i optimitzar-lo.

  1. Introducció a la Depuració

1.1. Tipus d'Errors

  • Errors de Sintaxi: Errors en la forma en què el codi està escrit.
  • Errors d'Execució: Errors que ocorren durant l'execució del programa.
  • Errors Lògics: Errors en la lògica del programa que produeixen resultats incorrectes.

1.2. Eines de Depuració

  • GDB (GNU Debugger): Una eina de depuració popular que suporta Fortran.
  • Valgrind: Una eina per detectar errors de memòria.

1.3. Depuració amb GDB

Per utilitzar GDB, primer hem de compilar el nostre codi amb l'opció -g per incloure informació de depuració.

gfortran -g -o programa programa.f90
gdb ./programa

1.4. Comandes Bàsiques de GDB

  • break: Estableix un punt de ruptura.
    (gdb) break main
    
  • run: Executa el programa.
    (gdb) run
    
  • next: Executa la següent línia de codi.
    (gdb) next
    
  • print: Mostra el valor d'una variable.
    (gdb) print variable
    

Exemple de Depuració

program debug_example
  implicit none
  integer :: i, sum

  sum = 0
  do i = 1, 10
    sum = sum + i
  end do

  print *, 'Sum is ', sum
end program debug_example

Compilació i depuració:

gfortran -g -o debug_example debug_example.f90
gdb ./debug_example

  1. Introducció al Perfilat

2.1. Eines de Perfilat

  • gprof: Una eina de perfilat que funciona amb programes compilats amb gfortran.

2.2. Compilació per a Perfilat

Per utilitzar gprof, hem de compilar el nostre codi amb les opcions -pg.

gfortran -pg -o programa programa.f90

2.3. Executar el Programa i Generar el Perfil

Executem el programa per generar un fitxer de perfil (gmon.out).

./programa

2.4. Analitzar el Perfil

Utilitzem gprof per analitzar el fitxer de perfil.

gprof ./programa gmon.out > analysis.txt

Exemple de Perfilat

program profile_example
  implicit none
  integer :: i, j, sum

  sum = 0
  do i = 1, 1000
    do j = 1, 1000
      sum = sum + i * j
    end do
  end do

  print *, 'Sum is ', sum
end program profile_example

Compilació i perfilat:

gfortran -pg -o profile_example profile_example.f90
./profile_example
gprof ./profile_example gmon.out > analysis.txt

  1. Exercicis Pràctics

Exercici 1: Depuració

  1. Escriu un programa Fortran que calculi la suma dels primers 100 nombres naturals.
  2. Introdueix un error lògic en el codi.
  3. Utilitza GDB per identificar i corregir l'error.

Exercici 2: Perfilat

  1. Escriu un programa Fortran que calculi el producte de dos matrius grans.
  2. Compila el programa amb les opcions necessàries per a perfilat.
  3. Utilitza gprof per identificar les parts del codi que consumeixen més temps.

  1. Resum

En aquesta secció, hem après sobre les tècniques de depuració i perfilat en Fortran. Hem vist com utilitzar GDB per depurar el codi i com utilitzar gprof per analitzar el rendiment del nostre programa. Aquestes eines són essencials per desenvolupar codi eficient i lliure d'errors.

© Copyright 2024. Tots els drets reservats