Construyendo ATLAS (y luego Octave w / ATLAS)

9

Estoy tratando de configurar ATLAS (para luego poder compilar octavas con soporte ATLAS).

Si estoy en lo cierto, todavía necesito construir esto manualmente debido a las optimizaciones específicas del entorno. Veo un paquete para ATLAS, pero parece que está usando las opciones de compilación genéricas multiplataforma (por ejemplo, "será lento").

Entonces, ejecutar el script de configuración como se describe en los documentos parece ir mal. Como desarrollador de Java, nunca hago bien en cometer errores en estos procesos de compilación. ¿Me faltan dependencias (si es así, ¿hay alguna documentación sobre lo que necesito?)

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
fuente

Respuestas:

12

La mejor manera de construir la biblioteca ATLAS personalizada para su procesador particular es seguir las instrucciones en /usr/share/doc/libatlas3-base/README.Debian(también disponible para leer en línea aquí ). Las instrucciones indican explícitamente cómo reconstruir el atlaspaquete fuente para Debian / Ubuntu de una manera que le proporcionará paquetes personalizados que pueden instalarse en lugar de los paquetes proporcionados en los repositorios oficiales.

El extracto relevante de README.Debiandice:

Creación de paquetes Atlas optimizados en su ARCH

Construir sus propios paquetes optimizados de Atlas es sencillo. Simplemente obtenga las fuentes del paquete y sus dependencias de compilación:

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

y escriba lo siguiente desde el subdirectorio fuente del atlas:

# fakeroot debian/rules custom

debería producir un paquete llamado:

../libatlas3-base_*.deb

que está optimizado para la arquitectura en la que se ha construido Atlas. Luego instale el paquete usando dpkg -i.

Mike Miller
fuente
Después del último paso 'dpkg -i', ¿cómo compilo / enlazo contra CBLAS y CLAPACK de ATLAS? No tengo ningún ATLAS en / usr / local. ¿Qué argumentos -I y -L debo pasar a g ++? Intenté 'g ++ main.cpp -I $ ~ / atlas-xxxx / include -L ~ / atlas-xxxx / build / atlas-base / lib / -lf77blas -lcblas -latlas', pero me da '/ usr / bin / ld: no se puede encontrar -lf77blas '. Gracias.
Salmonstrikes
1
@Salmonstrikes Instale los paquetes libatlas-base-devy libatlas-devque también se crearon , y las bibliotecas se instalan para la construcción /usr/lib.
Mike Miller
1
¡Gracias! Eso funcionó Para futuras referencias, para obtener el código para compilar, necesitaba: 1) usar protectores externos "C" para 'cblas.h' y 'clapack.h' stackoverflow.com/questions/10786237/… 2) 'g ++ main.cpp -I / usr / include / atlas -lf77blas -lcblas -llapack_atlas '; por alguna razón, '-llapack' solo no funciona y necesitaba '-llapack_atlas'
Salmonstrikes
3

Parece que estas eran las dependencias que necesitaba, el proceso de compilación ahora se está ejecutando. Estas cosas nunca se documentan fácilmente en una buena forma de consumo.

Para Ubuntu (gfortran, g77 y f77 respectivamente):

sudo apt-get install gfortran f2c libcnf-dev

Además, cualquiera que encuentre esta pregunta puede encontrar esta pregunta de uso relacionada con stackoverflow:

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

David Parks
fuente