Instalando o MPICH2 pelo HomeBrew compilado com o Ifort

Uma das vantagens dos gerenciadores de pacotes disponíveis para o Mac OS X (e.g., Fink, HomeBrew, MacPorts) está na compilação de todos os pacotes, gerando executáveis rápidos e 100% compatíveis com as instruções do processador e com o ambiente de execução. Por outro lado, esta vantagem é contrabalançada pelas diversas opções disponíveis para o ambiente de compilação (flags de compilação). O HomeBrew é um desses gerenciadores e você pode especificar algumas opções de compilação, por exemplo, o compilador fortran a ser utilizado na compilação de um pacote. Um caso interessante é a compilação do pacote MPICH2. Se você compilar com o gfortran, então todos os executáveis gerados na compilação do MPICH2 serão lincados com as bibliotecas do gcc e com os headers do gfortran. Isso seria um padrão para o caso de haver apenas o gfortran como compilador fortran na máquina. Mas você pode querer compilar o MPICH2 com o ifort, o compilador fortan da Intel ou mesmo com o g95 ou pgi.

No linux, esse tipo de instalação seria mais ou menos assim, considerando-se o bash como shell e o ifort como compilador fortran:

$ export FC=ifort ICC=icc
$ make
$ make check
$ sudo make install

No caso da instalação do MPICH2 pelo HomeBrew, utilizando-se o ifort como compilador padrão, as instruções são semelhantes:

$ export FC=ifort ICC=icc CPP=icc
$ brew install mpich2 --default-fortran-flags

Só isso. O modificador “–default-fortran-flags” ajusta as variáveis FCFLAGS e FFLAGS (que são variáveis que otimizam a compilação de um código fortran) com valores compatíveis com um compilador nos padrões do gcc, como é o caso do ifort e o icc.

Anúncios

Erro: cannot open source file “asm/param.h”

Quando fui compilar o MPICH2 no meu notebook, ao rodar o comando make, me deparei com a seguinte mensagem de erro:

/usr/include/linux/param.h(4): catastrophic error: cannot open source file "asm/param.h"
  #include <asm/param.h>
                        ^

Isso aconteceu porque a versão da asm* instalada no meu Ubuntu 11.04 não era a mesma que o MPICH2 estava procurando. Para resolver este problema, basta criar um link simbólico do asm-generic para o asm:

sudo ln -s /usr/include/asm-generic /usr/include/asm

Depois, basta rodar o cmando make novamente para recompilar o MPICH2.

*ASM:

Procurando sobre o ASM, decobri que ele é um conjunto de funções geralmente escrito em linguagem Assembly (no linux utilizado em linguagem C) para facilitar a portabilidade do kernel para outros tipos de sistemas/plataformas.

Referências: