[Pcx-dev-l] Build, compiladores e Fortran

Raniere Silva ra092767 em ime.unicamp.br
Dom Out 20 01:01:50 BRST 2013


Olá,

o Rafael me procurou ontem pedindo informações sobre:

1. seleção do compilador e
2. necessidade de compilador para Fortran.

Gostaria de trazer o debate para a lista por considerá-la importante.

Seleção do Compilador
---------------------

A versão do código que foi me passado inicialmente possuia um workflow de
compilação que não minha opinião era um Frankenstein (utilizava sh, csh e make)
e pouco portátil.

Durante o primeiro ano da minha iniciação eu revisei todo esse workflow e
portei ele para formas mais modernas e eficientes (tanto para manutenção como
para execução). Agora não é mais preciso do csh (que nem sempre encontra-se
instalado da máquina) e é possível informar ao make o compilador desejado (isso
antes não era possível porque um script sh chamava um script csh para
determinar a arquitetura e depois chamava o make) pois este é chamado
diretamente.

Essa revisão do workflow de compilação encontra-se disponível em
https://github.com/lrsantos11/PCx-C. Para compilar utilize:

    $ ./configure
    $ make

No caso de desejar mudar o compilador:

    $ make CC=seu_compilador_c FC=seu_compilador_fortran

Também é possível passar flags a serem utilizadas pelos compiladores

    $ make CC=seu_compilador_c CFLAGS='conjunto de flags para c' FC=seu_compilador_fortran FCFLAGS='conjunto de flags para fortran'

Necessidade de Compilador para Fortran
--------------------------------------

Até onde eu sei, a primeira versão do PCx resolvia a fatoração de Cholesky
utilizando uma implementação do Ng-Peyton escrita em Fortran. Durante minha
revisão do workflow de compilação reparei que é possível trocar essa fatoração
de Cholesky por outra escrita em C, por exemplo, de forma a eliminar a
dependência de um compilador Fortran.

Por algum motivo o Rafael não queria utilizar o Ng-Peyton e estava procurando
alguma alternativa. Diz ele que está utilizando uma versão do PCx toda em C
(https://github.com/lrsantos11/PCx-C) que infelizmente tenho minhas dúvidas (e
cujo processo de compilação não foi atualizado).

Existe uma pasta no código do PCx chamada F2C que até onde entendi é uma
interface para acessar código Fortran em C mas que infelizmente não descobri
quando é utilizada:

    $ grep -ri f2c SRC
    SRC/cblas.c:/*  -- translated by f2c (version 19940927).
    SRC/cblas.c:     -lf2c -lm   (in that order)
    SRC/cblas.c:/*  -- translated by f2c (version 19940927).
    SRC/cblas.c:    -lf2c -lm   (in that order)
    SRC/cblas.c:/*  -- translated by f2c (version 19940927).
    SRC/cblas.c:    -lf2c -lm   (in that order)
    SRC/cblas.c:/*  -- translated by f2c (version 19940927).
    SRC/cblas.c:    -lf2c -lm   (in that order)
    SRC/cblas.c:/*  -- translated by f2c (version 19940927).
    SRC/cblas.c:    -lf2c -lm   (in that order)
    $ grep -ri cblas SRC
    SRC/Makefile.in:       jair.o cblas.o algorithm.o rcm.o


É isso. Grato pela atenção de todos.

Raniere


Mais detalhes sobre a lista de discussão Pcx-dev-l