[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