构建ATLAS(以及后来的Octave w/ ATLAS)

我正在尝试设置ATLAS(以便稍后使用ATLAS支持编译Octave)。
如果我没错的话,由于环境特定的优化,我仍然需要手动构建它。我确实看到了一个ATLAS的软件包,但是它似乎使用的是跨平台通用的构建选项(例如,“速度会很慢”)。
所以,按照文档中描述的运行配置脚本似乎进展不顺利。作为一个Java开发者,我在这些构建过程中总是对错误一头雾水。我是否缺少依赖项(如果是的话,有没有关于我需要什么的文档)?
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
2个回答

构建适合您特定处理器的ATLAS库的最佳方法是按照/usr/share/doc/libatlas3-base/README.Debian中的说明进行操作(也可在线阅读此处)。该说明明确告知如何重新构建Debian/Ubuntu的atlas源代码包,以生成可替代官方软件库提供的软件包的自定义构建软件包。

README.Debian中相关摘录如下:

Building Optimized Atlas Packages on your ARCH

Building your own optimized packages of Atlas is straightforward. Just get the sources of the package and its build-dependencies:

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

and type the following from the atlas source subdir:

# fakeroot debian/rules custom

it should produce a package called:

../libatlas3-base_*.deb

which is optimized for the architecture Atlas has been built on. Then install the package using dpkg -i.


在最后的 'dpkg -i' 步骤之后,我该如何编译/链接ATLAS的CBLAS和CLAPACK?我在 /usr/local 中没有任何ATLAS。我应该向g++传递哪些 -I 和 -L 参数?我尝试过 'g++ main.cpp -I$/atlas-xxxx/include -L/atlas-xxxx/build/atlas-base/lib/ -lf77blas -lcblas -latlas',但返回 '/usr/bin/ld: cannot find -lf77blas'。谢谢。 - Salmonstrikes
1@Salmonstrikes 安装 libatlas-base-devlibatlas-dev 包,这些包也已构建,并且库已安装在 /usr/lib 用于编译。 - Michael Miller
1谢谢!那个方法有效。供将来参考,为了让代码编译通过,我需要:1)在'cblas.h'和'clapack.h'中使用extern "C"保护 http://stackoverflow.com/questions/10786237/atlas-gemm-linking-undefined-reference-to-cblas-sgemm 2)'g++ main.cpp -I/usr/include/atlas -lf77blas -lcblas -llapack_atlas';由于某种原因,仅使用'-llapack'无法正常工作,我需要使用'-llapack_atlas'。 - Salmonstrikes