首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试编译HPCC基准时无法链接到BLAS/ATLAS

尝试编译HPCC基准时无法链接到BLAS/ATLAS
EN

Stack Overflow用户
提问于 2019-10-08 04:04:31
回答 1查看 178关注 0票数 1

我正在尝试在一个小型RHEL桌面上编译HPCC基准测试。在链接之前,一切看起来都很好。我的链接命令是

代码语言:javascript
复制
    mpicc -DAdd_ -DF77_INTEGER=int -DStringSunStyle  -I../../../include \
 -I../../../include/myarch -I/path/to/my/ATLAS_build/include \
-I/usr/include/openmpi-x86_64 -fomit-frame-pointer -O3 -funroll-loops \
-W -Wall -lm -o ../../../../hpcc ../../../lib/bugzilla/libhpl.a \
/path/to/my/ATLAS_build/lib/libcblas.a \
/path/to/my/ATLAS_build/lib/libatlas.a -L/usr/lib64/openmpi/lib

链接失败并出现几个错误,所有这些错误都与链接器找不到的BLAS/ATLAS对象有关。其中有几个是:

代码语言:javascript
复制
../../../lib/myarch/libhpl.a(HPL_dcopy.o): In function `HPL_dcopy':
HPL_dcopy.c:(.text+0x1e): undefined reference to `dcopy_'
../../../lib/myarch/libhpl.a(HPL_daxpy.o): In function `HPL_daxpy':
HPL_daxpy.c:(.text+0x2f): undefined reference to `daxpy_'
../../../lib/myarch/libhpl.a(HPL_dscal.o): In function `HPL_dscal':
HPL_dscal.c:(.text+0x22): undefined reference to `dscal_'
../../../lib/myarch/libhpl.a(HPL_idamax.o): In function `HPL_idamax':
HPL_idamax.c:(.text+0x1a): undefined reference to `idamax_'
../../../lib/myarch/libhpl.a(HPL_dgemv.o): In function `HPL_dgemv':
HPL_dgemv.c:(.text+0xba): undefined reference to `dgemv_'
HPL_dgemv.c:(.text+0x136): undefined reference to `dgemv_'

这是我真的不明白的地方。以dgemv为例。libhpl.a确实调用了它:

代码语言:javascript
复制
>$ nm libhpl.a | grep dgemv
HPL_dgemv.o:
                 U dgemv_

现在,libcblas.a有一个对它的引用,但需要ATLAS中的版本:

代码语言:javascript
复制
>$ nm libcblas.a | grep dgemv
cblas_dgemv.o:
                 U ATL_dgemv

最后,ATLAS有ATL_dgemv吗?

代码语言:javascript
复制
ATL_dgemv.o:
0000000000000000 T ATL_dgemv

所以,是的,它确实是这样的。所以CBLAS有一个HPCC应该(我认为)能够插入的dgemv,但是它需要ATL_dgemv。但是ATLAS有ATL_dgemv。那么,为什么链接器无法找到HPCC所需的所有内容呢

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-08 08:10:47

您的日志表明libhpl.a需要libcblas.alibatlas.a都没有提供的dgemv_符号(我假设您的最后一个命令是nm libatlas.a | grep dgemv)。

dgemv_中的尾随下划线强烈表明它需要Fortran BLAS(而不是C BLAS)库,因此您可以简单地用libblas.a替换libcblas.a

IIRC,另一个选项是调整HPL配置,并指示它使用cblas而不是(Fortran) BLAS。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58276422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档