Construindo o ATLAS (e depois a oitava com ATLAS)

9

Estou tentando configurar o ATLAS (para depois compilar a oitava com o suporte do ATLAS).

Se estiver correto, ainda preciso criar isso manualmente devido às otimizações específicas do ambiente. Eu vejo um pacote para o ATLAS, mas parece que ele está usando as opções de compilação genérica entre plataformas (por exemplo, "será lento").

Portanto, a execução do script de configuração, conforme descrito nos documentos, parece não funcionar corretamente. Como desenvolvedor de Java, nunca me saio bem ao cometer erros ou falhas nesses processos de compilação. Estou faltando dependências (se houver, existe alguma documentação sobre o que eu preciso)?

allusers@vbubuntu:~/Downloads/atlas3.10.1/build_vbubuntu$ ../configure -b 64 -D c -DPentiumCPS=3000 --with-netlib-lapack-tarfile=/home/allusers/Downloads/lapack-3.5.0.tgz

make: `xconfig' is up to date.
./xconfig -d s /home/allusers/Downloads/atlas3.10.1/build_vbubuntu/../ -d b /home/allusers/Downloads/atlas3.10.1/build_vbubuntu  -b 64 -D c -DPentiumCPS=3000 -Si lapackref 1

OS configured as Linux (1)

Assembly configured as GAS_x8664 (2)

Vector ISA Extension configured as  SSE3 (6,448)
ERROR: enum fam=3, chip=2, mach=0
make[3]: *** [atlas_run] Error 44
make[2]: *** [IRunArchInfo_x86] Error 2

Architecture configured as  Corei1 (25)
ERROR: enum fam=3, chip=2, mach=0
make[3]: *** [atlas_run] Error 44
make[2]: *** [IRunArchInfo_x86] Error 2

Clock rate configured as 2350Mhz
ERROR: enum fam=3, chip=2, mach=0
make[3]: *** [atlas_run] Error 44
make[2]: *** [IRunArchInfo_x86] Error 2

Maximum number of threads configured as  4
Parallel make command configured as '$(MAKE) -j 4'
ERROR: enum fam=3, chip=2, mach=0
make[3]: *** [atlas_run] Error 44
make[2]: *** [IRunArchInfo_x86] Error 2
Cannot detect CPU throttling.
rm -f config1.out
make atlas_run atldir=/home/allusers/Downloads/atlas3.10.1/build_vbubuntu exe=xprobe_comp redir=config1.out \
                args="-v 0 -o atlconf.txt -O 1 -A 25 -Si nof77 0 -V 448   -b 64 -d b /home/allusers/Downloads/atlas3.10.1/build_vbubuntu"
make[1]: Entering directory `/home/allusers/Downloads/atlas3.10.1/build_vbubuntu'
cd /home/allusers/Downloads/atlas3.10.1/build_vbubuntu ; ./xprobe_comp -v 0 -o atlconf.txt -O 1 -A 25 -Si nof77 0 -V 448   -b 64 -d b /home/allusers/Downloads/atlas3.10.1/build_vbubuntu > config1.out
make[2]: gfortran: Command not found
make[2]: *** [IRunF77Comp] Error 127
make[2]: g77: Command not found
make[2]: *** [IRunF77Comp] Error 127
make[2]: f77: Command not found
make[2]: *** [IRunF77Comp] Error 127


Unable to find usable compiler for F77; abortingMake sure compilers are in your path, and specify good compilers to configure
(see INSTALL.txt or 'configure --help' for details)make[1]: *** [atlas_run] Error 8
make[1]: Leaving directory `/home/allusers/Downloads/atlas3.10.1/build_vbubuntu'
make: *** [IRun_comp] Error 2
ERROR 512 IN SYSCMND: 'make IRun_comp args="-v 0 -o atlconf.txt -O 1 -A 25 -Si nof77 0 -V 448   -b 64"'
mkdir src bin tune interfaces
mkdir: cannot create directory ‘src’: File exists
mkdir: cannot create directory ‘bin’: File exists
mkdir: cannot create directory ‘tune’: File exists
mkdir: cannot create directory ‘interfaces’: File exists
make: *** [make_subdirs] Error 1
make -f Make.top startup
make[1]: Entering directory `/home/allusers/Downloads/atlas3.10.1/build_vbubuntu'
Make.top:1: Make.inc: No such file or directory
Make.top:325: warning: overriding commands for target `/AtlasTest'
Make.top:76: warning: ignoring old commands for target `/AtlasTest'
make[1]: *** No rule to make target `Make.inc'.  Stop.
make[1]: Leaving directory `/home/allusers/Downloads/atlas3.10.1/build_vbubuntu'
make: *** [startup] Error 2
mv: cannot move ‘lapack-3.5.0’ to ‘../reference/lapack-3.5.0’: Directory not empty
mv: cannot stat ‘lib/Makefile’: No such file or directory
../configure: 450: ../configure: cannot create lib/Makefile: Directory nonexistent
../configure: 451: ../configure: cannot create lib/Makefile: Directory nonexistent
../configure: 452: ../configure: cannot create lib/Makefile: Directory nonexistent
../configure: 453: ../configure: cannot create lib/Makefile: Directory nonexistent
../configure: 509: ../configure: cannot create lib/Makefile: Directory nonexistent
DONE configure
David Parks
fonte

Respostas:

12

A melhor maneira de criar a biblioteca ATLAS personalizada para seu processador específico é seguir as instruções em /usr/share/doc/libatlas3-base/README.Debian(também disponível para leitura online aqui ). As instruções explicitamente explicam como reconstruir o atlaspacote fonte do Debian / Ubuntu de uma maneira que lhe dará pacotes personalizados que podem ser instalados no lugar dos pacotes fornecidos nos repositórios oficiais.

O trecho relevante de README.Debiandiz:

Criando pacotes Atlas otimizados no seu ARCH

Construir seus próprios pacotes otimizados da Atlas é simples. Apenas obtenha as fontes do pacote e suas dependências de compilação:

# apt-get source atlas
# apt-get build-dep atlas
# apt-get install devscripts

e digite o seguinte na subpasta fonte do atlas:

# fakeroot debian/rules custom

deve produzir um pacote chamado:

../libatlas3-base_*.deb

que é otimizado para a arquitetura em que Atlas foi construído. Em seguida, instale o pacote usando dpkg -i.

Mike Miller
fonte
Após a última etapa do 'dpkg -i', como compilar / vincular o CBLAS e o CLAPACK do ATLAS? Não tenho ATLAS em / usr / local. Quais argumentos -I e -L devo passar para o g ++? Eu tentei 'g ++ main.cpp -I $ ~ / atlas-xxxx / include -L ~ / atlas-xxxx / build / atlas-base / lib / -lf77blas -lcblas -latlas', mas ele me fornece '/ usr / bin / ld: não é possível encontrar -lf77blas '. Obrigado.
Salmonstrikes
11
@Salmonstrikes Instale os pacotes libatlas-base-deve libatlas-devque também foram criados, e as bibliotecas estão instaladas para construção /usr/lib.
Mike Miller
11
Obrigado! Isso funcionou Para referência futura, para obter o código para compilar, eu precisava: 1) usar guardas externas "C" para 'cblas.h' e 'clapack.h' stackoverflow.com/questions/10786237/… 2) 'g ++ main.cpp -I / usr / include / atlas -lf77blas -lcblas -llapack_atlas '; por alguma razão '-llapack' sozinho não funciona e eu precisava '-llapack_atlas'
Salmonstrikes
3

Parece que essas eram as dependências necessárias, o processo de compilação está sendo executado agora. Essas coisas nunca são apenas facilmente documentadas em uma boa forma de consumível.

Para o Ubuntu (gfortran, g77 e f77, respectivamente):

sudo apt-get install gfortran f2c libcnf-dev

Além disso, qualquer pessoa que encontrar essa pergunta poderá encontrar esta questão de uso relacionada ao stackoverflow:

/programming/23876286/building-octave-from-source-did-atlas-get-included-properly-in-octaves-confi

David Parks
fonte