Gebäude ATLAS (und später Octave w / ATLAS)

9

Ich versuche, ATLAS einzurichten (damit ich später mit ATLAS-Unterstützung Oktave kompilieren kann).

Wenn ich richtig liege, muss ich dies aufgrund der umgebungsspezifischen Optimierungen immer noch manuell erstellen. Ich sehe ein Paket für ATLAS, aber es sieht so aus, als würde es die plattformübergreifenden generischen Build-Optionen verwenden (z. B. "es wird langsam sein").

Das Ausführen des Konfigurationsskripts wie in den Dokumenten beschrieben scheint also schlecht zu laufen . Als Java-Entwickler bin ich nie gut darin, Fehler oder Fehler in diesen Erstellungsprozessen zu machen. Fehlen mir Abhängigkeiten (wenn ja, gibt es Unterlagen darüber, was ich brauche)?

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
quelle

Antworten:

12

Der beste Weg , um die ATLAS - Bibliothek individuell auf Ihren speziellen Prozessor zu bauen , ist den Anweisungen in folgen /usr/share/doc/libatlas3-base/README.Debian(auch zum Lesen von Online verfügbar hier ). In den Anweisungen wird explizit angegeben, wie atlasdas Quellpaket für Debian / Ubuntu so neu erstellt werden kann, dass Sie benutzerdefinierte Pakete erhalten, die anstelle der in den offiziellen Repositorys bereitgestellten Pakete installiert werden können.

Der relevante Auszug aus README.Debiansagt:

Erstellen optimierter Atlas-Pakete auf Ihrem ARCH

Das Erstellen eigener optimierter Atlas-Pakete ist unkompliziert. Holen Sie sich einfach die Quellen des Pakets und seine Build-Abhängigkeiten:

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

und geben Sie Folgendes aus dem Unterverzeichnis der Atlasquelle ein:

# fakeroot debian/rules custom

Es sollte ein Paket mit dem Namen:

../libatlas3-base_*.deb

das für die Architektur optimiert ist, auf der Atlas aufgebaut wurde. Dann installieren Sie das Paket mit dpkg -i.

Mike Miller
quelle
Wie kompiliere / verknüpfe ich nach dem letzten 'dpkg -i'-Schritt gegen ATLAS' CBLAS und CLAPACK? Ich habe keine ATLAS in / usr / local. Welche -I- und -L-Argumente sollte ich an g ++ übergeben? Ich habe versucht 'g ++ main.cpp -I $ ~ / atlas-xxxx / include -L ~ / atlas-xxxx / build / atlas-base / lib / -lf77blas -lcblas -latlas', aber es gibt mir '/ usr / bin / ld: -lf77blas 'kann nicht gefunden werden. Vielen Dank.
Salmonstrikes
1
@Salmonstrikes Installieren Sie die libatlas-base-devund libatlas-devPakete, die ebenfalls erstellt wurden, und die Bibliotheken werden zum Einbauen installiert /usr/lib.
Mike Miller
1
Vielen Dank! Das funktionierte Zum späteren Nachschlagen, um Code zum Kompilieren zu bekommen, brauchte ich: 1) externe "C" -Wachen für 'cblas.h' und 'clapack.h' zu verwenden stackoverflow.com/questions/10786237/… 2) 'g ++ main.cpp -I / usr / include / atlas -lf77blas -lcblas -llapack_atlas '; Aus irgendeinem Grund funktioniert '-llapack' alleine nicht und ich brauchte '-llapack_atlas'
Salmonstrikes
3

Es sieht so aus, als wären dies die Abhängigkeiten, die benötigt werden. Der Erstellungsprozess wird jetzt ausgeführt. Diese Dinge lassen sich nie einfach in einer schönen Verbrauchsmaterialform dokumentieren.

Für Ubuntu (gfortran, g77 bzw. f77):

sudo apt-get install gfortran f2c libcnf-dev

Jeder, der diese Frage findet, kann auch diese verwandte Frage zur Verwendung des Stapelüberlaufs finden:

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

David Parks
quelle