Introdução

Fortran, uma das linguagens de programação mais antigas, ainda desempenha um papel vital na computação científica moderna. Embora muitos possam considerá-la obsoleta, ela continua sendo uma escolha popular para aplicações que exigem alto desempenho, especialmente em áreas como simulações numéricas e processamento de dados científicos. Com o surgimento de linguagens como Python, que oferecem flexibilidade e uma vasta gama de bibliotecas, a integração de Fortran com Python tornou-se uma prática comum. Neste tutorial, iremos explorar como você pode utilizar o F2PY, uma ferramenta que faz parte do NumPy, para facilitar a chamada de códigos Fortran a partir de Python. Além disso, discutiremos como integrar esses códigos a frameworks de machine learning para aproveitar ao máximo o desempenho do Fortran e a simplicidade do Python.

Etapas

  1. Preparação do Ambiente

    Certifique-se de ter o Fortran e Python instalados em seu sistema. Para compilar o código Fortran, você precisará do gfortran, que faz parte do GCC. Além disso, instale o NumPy, que contém o F2PY, usando o pip: `pip install numpy`.

    commands
    # Verifique se o gfortran está instalado
    gfortran --version
    # Instale o NumPy
    pip install numpy

  2. Criação de um Código Fortran Simples

    Crie um arquivo `hello.f90` contendo um código Fortran simples que calcula a soma de dois números. Este código será chamado a partir do Python.

    hello.f90
    subroutine add_numbers(a, b, result)
        implicit none
        real :: a, b, result
        result = a + b
    end subroutine add_numbers

  3. Compilação do Código Fortran Usando F2PY

    Compile o código Fortran usando o F2PY, que permite a criação de um módulo Python a partir do seu código Fortran. Execute o seguinte comando no terminal:

    commands
    f2py -c -m hello_module hello.f90

  4. Escrevendo o Código Python para Chamar o Fortran

    Crie um arquivo Python `main.py` onde você importará o módulo gerado e chamará a sub-rotina que adiciona os números. O uso de Try/Except assegura que qualquer erro seja tratado.

    main.py
    import numpy as np
    import hello_module
    
    def main():
        a = 5.0
        b = 3.0
        result = np.zeros(1)
        hello_module.add_numbers(a, b, result)
        print(f'A soma é: {result[0]}')
    
    if __name__ == '__main__':
        main()

  5. Executando o Código Python

    Depois de ter escrito o arquivo `main.py`, você pode executá-lo usando o Python. Isso chamará a sub-rotina Fortran que calcula a soma e imprime o resultado.

    commands
    python main.py

  6. Integrando o Fortran com Frameworks de Machine Learning

    Como um exemplo, vamos integrar o Fortran a um modelo simples de machine learning usando o scikit-learn. Primeiro, crie uma função em Fortran para calcular a média e a variância de um vetor de números, e depois utilize esta função em Python para calcular as estatísticas de um conjunto de dados.

    statistics.f90
    subroutine stats(arr, n, mean, variance)
        implicit none
        real, dimension(:) :: arr
        integer :: n
        real :: mean, variance
        integer :: i
        mean = sum(arr) / n
        variance = sum((arr - mean)**2) / n
    end subroutine stats

  7. Compilando o Código Fortran de Estatística

    Compile o novo código Fortran de estatísticas da mesma forma que fez anteriormente, usando o F2PY. Isso permitirá que você chame a sub-rotina na análise de dados em Python.

    commands
    f2py -c -m stats_module statistics.f90

  8. Escrevendo o Código Python para Chamadas Estatísticas

    Modifique o arquivo `main.py` para incluir a chamada da nova sub-rotina de estatísticas, passando um vetor de dados aleatórios para obter a média e a variância.

    main.py
    import numpy as np
    import stats_module
    
    np.random.seed(0)
    data = np.random.rand(100)
    mean = np.zeros(1)
    variance = np.zeros(1)
    
    stats_module.stats(data, len(data), mean, variance)
    print(f'A média é: {mean[0]}, e a variância é: {variance[0]}')

  9. Executando o Código para Estimativas Estatísticas

    Execute o código Python para calcular a média e variância dos dados aleatórios gerados e observe os resultados.

    commands
    python main.py

Conclusão

Neste tutorial, exploramos como integrar o Fortran com o Python utilizando o F2PY, possibilitando que utilizemos o desempenho superior do Fortran em conjunto com a flexibilidade do Python. Aprendemos a implementar e compilar códigos Fortran, e a utilizá-los para aplicações de machine learning através da integração com bibliotecas populares como o NumPy e scikit-learn. Esta abordagem permite não apenas a reutilização de código legado em Fortran, mas também a potencialização dos projetos de machine learning, unindo o melhor de dois mundos.

Hashtags

#Fortran #Python #F2PY #MachineLearning #DataScience #IntegraçãoDeLinguagens