Compilando LAPACK e BLAS com ifort

Este tutorial é muito simples e mostra como compilar as bibliotecas de Álgebra Linear BLAS e LAPACK do netlib (http://www.netlib.org) utilizando os compiladores C e fortran da Intel (icc e ifort).

Tanto para Linux (Ubuntu 11.04) quanto no OS X (Mountain Lion), os procedimentos são os mesmos:

$ wget -c http://www.netlib.org/lapack/lapack-3.4.2.tgz
$ tar -zxvf lapack-3.4.2.tgz
$ cd lapack-3.4.2
$ cp INSTALL/make.inc.ifort ./make.inc
$ make lapacklib
$ make blaslib

Como resultado da compilação, duas bibliotecas (libs) deverão ser criadas:

  • liblapack.a
  • librefblas.a

Dependendo da sua aplicação, pode ser necessário atribuir algum valor para a variável “LAPACK_PATH” indicando o caminho das libs que foram geradas. Se a compilação das libs foi feita em /home/user/lapack-3.4.2, então, pode-se fazer:

$ export LAPACK_PATH=/home/user/lapack-3.4.2

Este comando pode ser incluído no seu ~/.bashrc ou mesmo em /etc/bash.bashrc.

Referência:

Anúncios

Catastrophic error: could not set locale “” to allow processing of multibyte characters

As mensagem de erro de compilação dos compiladores da Intel são bastante interessantes: “Catastrophic error…”, ou “Erro catastrófico…” 🙂

Esse erro apareceu quando executei o comando “make” para compilar um código fonte em uma máquina Linux (Ubuntu 11.04) utilizando os compiladores da Intel (ifort/icc). Esse erro apareceu porque o Makefile não conseguiu determinar qual é o “idioma” do terminal, muito embora a variável “LANG” estivesse ajustada para “en_US.UTF-8” (LANG=en_US.UTF-8).

A solução foi ajustar mais uma variável de localização, a “LC_ALL” com o mesmo valor de “LANG”, ou seja:

$ export LC_ALL=en_US.UTF-8

Você pode colocar no seu .bashrc ou ainda em /etc/bash.bashrc, e problema resolvido!

Referência:

 

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.