当前位置: 首页 > 工具软件 > HPCC Systems > 使用案例 >

HPCC(high performance challenge computer)benchmark安装方法

黄伟
2023-12-01

搞了快两天,终于在本机上运行了HPCC 性能测试。现在就把HPCC的安装方法给大家分享一下。

1. 改写编译脚本

HPCC 官方给出的运行指导实在是太简单了,根本就没有多大的实用价值。这里还要给大家说一点的就是运行HPCC一定需要MPI,但是没有BLAS也是可以的,或者根据我的经验,使用BLAS反而没法运行HPCC。首先选择一个编译模板,将这个模板改写成我们需要的编译脚本。我选择的编译模板是“Make.Linux_PII_CBLAS”(编译模板位于hpcc-1.5.0/hpcc-1.5.0/hpl/setup下),根据本机的情况,改写如下:

MPdir        = /home/andywang/mpich-install //本机安装mpi的位置
MPinc        = -I$(MPdir)/include //mpi头文件所在的位置
MPlib        = $(MPdir)/lib/libmpi.a //mpi静态库所在的位置

LAdir        = $(HOME)/clapack/lib //blas所在的位置
LAinc        = //由于HPCC中没有用到blas的头文件,所以这个地方可以空着
LAlib        = $(LAdir)/blas_LINUX.a $(LAdir)/lapack_LINUX.a $(LAdir)/libf2c.a
LINKER       = $(CC)

以上结果还不是最终结果,运行前先把名字改一下“Make.Linux”

回到主文件夹下执行命令“make arch=Linux”

结果错误如下:

/usr/bin/gcc  -DHPL_CALL_CBLAS -I../../../include -I../../../include/Linux  -I/home/andywang/mpich-install/include -fomit-frame-pointer -O0 -funroll-loops -o ../../../../hpcc ../../../lib/Linux/libhpl.a  /home/andywang/clapack/lib/blas_LINUX.a /home/andywang/clapack/lib/lapack_LINUX.a /home/andywang/clapack/lib/libf2c.a /home/andywang/mpich-install/lib/libmpi.a -lm
/home/andywang/mpich-install/lib/libmpi.a(lib_libmpi_la-initthread.o):在函数‘MPIR_Init_thread’中:
initthread.c:(.text+0xa3):对‘pthread_mutexattr_init’未定义的引用
initthread.c:(.text+0xb0):对‘pthread_mutexattr_settype’未定义的引用
initthread.c:(.text+0xd7):对‘pthread_mutexattr_init’未定义的引用
initthread.c:(.text+0xe4):对‘pthread_mutexattr_settype’未定义的引用
/home/andywang/mpich-install/lib/libmpi.a(lib_libmpi_la-mpit_initthread.o):在函数‘PMPI_T_init_thread’中:
mpit_initthread.c:(.text+0x1d6):对‘pthread_mutexattr_init’未定义的引用
mpit_initthread.c:(.text+0x1e3):对‘pthread_mutexattr_settype’未定义的引用
/home/andywang/mpich-install/lib/libmpi.a(lib_libmpi_la-errutil.o):在函数‘MPIR_Err_init’中:
errutil.c:(.text+0x290):对‘pthread_mutexattr_init’未定义的引用
errutil.c:(.text+0x29d):对‘pthread_mutexattr_settype’未定义的引用
/home/andywang/mpich-install/lib/libmpi.a(lib_libmpi_la-async.o):在函数‘MPIR_Init_async_thread’中:
async.c:(.text+0x353):对‘pthread_mutexattr_init’未定义的引用
async.c:(.text+0x360):对‘pthread_mutexattr_settype’未定义的引用
/home/andywang/mpich-install/lib/libmpi.a(lib_libmpi_la-mpiu_thread_posix.o):在函数‘MPIU_Thread_create’中:
mpiu_thread_posix.c:(.text+0x8d):对‘pthread_create’未定义的引用
/home/andywang/mpich-install/lib/libmpi.a(lib_libmpi_la-ch3_init.o):在函数‘MPIDI_CH3I_Shm_supported’中:
ch3_init.c:(.text+0x19):对‘pthread_mutexattr_init’未定义的引用
ch3_init.c:(.text+0x26):对‘pthread_mutexattr_setpshared’未定义的引用
ch3_init.c:(.text+0x30):对‘pthread_mutexattr_destroy’未定义的引用
/home/andywang/mpich-install/lib/libmpi.a(lib_libmpi_la-ch3_win_fns.o):在函数‘MPIDI_CH3I_Win_allocate_shm’中:
ch3_win_fns.c:(.text+0x2c95):对‘pthread_mutexattr_init’未定义的引用
ch3_win_fns.c:(.text+0x2cab):对‘pthread_mutexattr_setpshared’未定义的引用
ch3_win_fns.c:(.text+0x2cd7):对‘pthread_mutexattr_destroy’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdtest.o):在函数‘HPL_pdtest’中:
HPL_pdtest.c:(.text+0xa29):对‘cblas_’未定义的引用
HPL_pdtest.c:(.text+0xb7f):对‘cblas_dgemv’未定义的引用
HPL_pdtest.c:(.text+0xbe2):对‘cblas_dgemv’未定义的引用
../../../lib/Linux/libhpl.a(pdmatcmp.o):在函数‘pdmatcmp’中:
pdmatcmp.c:(.text+0x15e):对‘cblas_idamax’未定义的引用
pdmatcmp.c:(.text+0x214):对‘cblas_daxpy’未定义的引用
pdmatcmp.c:(.text+0x244):对‘cblas_idamax’未定义的引用
../../../lib/Linux/libhpl.a(pdtrans.o):在函数‘dmv2mx_’中:
pdtrans.c:(.text+0x14e3):对‘cblas_dcopy’未定义的引用
pdtrans.c:(.text+0x1625):对‘cblas_dcopy’未定义的引用
pdtrans.c:(.text+0x1cf7):对‘cblas_daxpy’未定义的引用
pdtrans.c:(.text+0x1e41):对‘cblas_daxpy’未定义的引用
../../../lib/Linux/libhpl.a(pdtrans.o):在函数‘pdtrans’中:
pdtrans.c:(.text+0x2b34):对‘cblas_dscal’未定义的引用
../../../lib/Linux/libhpl.a(tstdgemm.o):在函数‘HPCC_TestDGEMM’中:
tstdgemm.c:(.text+0x61f):对‘cblas_dgemm’未定义的引用
tstdgemm.c:(.text+0x789):对‘cblas_dgemv’未定义的引用
tstdgemm.c:(.text+0x7d5):对‘cblas_dgemv’未定义的引用
tstdgemm.c:(.text+0x830):对‘cblas_dgemv’未定义的引用
tstdgemm.c:(.text+0x8b0):对‘cblas_dgemv’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdlange.o):在函数‘HPL_pdlange’中:
HPL_pdlange.c:(.text+0x916):对‘cblas_idamax’未定义的引用
HPL_pdlange.c:(.text+0xb7d):对‘cblas_idamax’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdpancrN.o):在函数‘HPL_pdpancrN’中:
HPL_pdpancrN.c:(.text+0x20b):对‘cblas_dgemv’未定义的引用
HPL_pdpancrN.c:(.text+0x260):对‘cblas_dcopy’未定义的引用
HPL_pdpancrN.c:(.text+0x2cf):对‘cblas_dscal’未定义的引用
HPL_pdpancrN.c:(.text+0x394):对‘cblas_dgemv’未定义的引用
HPL_pdpancrN.c:(.text+0x49e):对‘cblas_dscal’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdpancrT.o):在函数‘HPL_pdpancrT’中:
HPL_pdpancrT.c:(.text+0x208):对‘cblas_dgemv’未定义的引用
HPL_pdpancrT.c:(.text+0x260):对‘cblas_dcopy’未定义的引用
HPL_pdpancrT.c:(.text+0x2cf):对‘cblas_dscal’未定义的引用
HPL_pdpancrT.c:(.text+0x394):对‘cblas_dgemv’未定义的引用
HPL_pdpancrT.c:(.text+0x49e):对‘cblas_dscal’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdpanllN.o):在函数‘HPL_pdpanllN’中:
HPL_pdpanllN.c:(.text+0x1c2):对‘cblas_dtrsv’未定义的引用
HPL_pdpanllN.c:(.text+0x235):对‘cblas_dscal’未定义的引用
HPL_pdpanllN.c:(.text+0x2ce):对‘cblas_dgemv’未定义的引用
HPL_pdpanllN.c:(.text+0x348):对‘cblas_dcopy’未定义的引用
HPL_pdpanllN.c:(.text+0x41f):对‘cblas_dscal’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdpanllT.o):在函数‘HPL_pdpanllT’中:
HPL_pdpanllT.c:(.text+0x1c5):对‘cblas_dtrsv’未定义的引用
HPL_pdpanllT.c:(.text+0x238):对‘cblas_dscal’未定义的引用
HPL_pdpanllT.c:(.text+0x2d4):对‘cblas_dgemv’未定义的引用
HPL_pdpanllT.c:(.text+0x34b):对‘cblas_dcopy’未定义的引用
HPL_pdpanllT.c:(.text+0x422):对‘cblas_dscal’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdpanrlN.o):在函数‘HPL_pdpanrlN’中:
HPL_pdpanrlN.c:(.text+0x19f):对‘cblas_dscal’未定义的引用
HPL_pdpanrlN.c:(.text+0x1ee):对‘cblas_daxpy’未定义的引用
HPL_pdpanrlN.c:(.text+0x287):对‘cblas_dger’未定义的引用
HPL_pdpanrlN.c:(.text+0x369):对‘cblas_dscal’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdpanrlT.o):在函数‘HPL_pdpanrlT’中:
HPL_pdpanrlT.c:(.text+0x1bc):对‘cblas_dscal’未定义的引用
HPL_pdpanrlT.c:(.text+0x21d):对‘cblas_daxpy’未定义的引用
HPL_pdpanrlT.c:(.text+0x2cf):对‘cblas_dger’未定义的引用
HPL_pdpanrlT.c:(.text+0x3b1):对‘cblas_dscal’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdrpanllN.o):在函数‘HPL_pdrpanllN’中:
HPL_pdrpanllN.c:(.text+0x219):对‘cblas_dtrsm’未定义的引用
HPL_pdrpanllN.c:(.text+0x2ce):对‘cblas_dgemm’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdrpanllT.o):在函数‘HPL_pdrpanllT’中:
HPL_pdrpanllT.c:(.text+0x20e):对‘cblas_dtrsm’未定义的引用
HPL_pdrpanllT.c:(.text+0x2b8):对‘cblas_dgemm’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdrpancrN.o):在函数‘HPL_pdrpancrN’中:
HPL_pdrpancrN.c:(.text+0x25f):对‘cblas_dgemm’未定义的引用
HPL_pdrpancrN.c:(.text+0x34b):对‘cblas_dgemm’未定义的引用
HPL_pdrpancrN.c:(.text+0x3e9):对‘cblas_dtrsm’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdrpancrT.o):在函数‘HPL_pdrpancrT’中:
HPL_pdrpancrT.c:(.text+0x254):对‘cblas_dgemm’未定义的引用
HPL_pdrpancrT.c:(.text+0x340):对‘cblas_dgemm’未定义的引用
HPL_pdrpancrT.c:(.text+0x3de):对‘cblas_dtrsm’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdrpanrlN.o):在函数‘HPL_pdrpanrlN’中:
HPL_pdrpanrlN.c:(.text+0x268):对‘cblas_dtrsm’未定义的引用
HPL_pdrpanrlN.c:(.text+0x35f):对‘cblas_dgemm’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdrpanrlT.o):在函数‘HPL_pdrpanrlT’中:
HPL_pdrpanrlT.c:(.text+0x268):对‘cblas_dtrsm’未定义的引用
HPL_pdrpanrlT.c:(.text+0x35f):对‘cblas_dgemm’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdupdateNN.o):在函数‘HPL_pdupdateNN’中:
HPL_pdupdateNN.c:(.text+0x261):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateNN.c:(.text+0x2d2):对‘cblas_dgemm’未定义的引用
HPL_pdupdateNN.c:(.text+0x3a3):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateNN.c:(.text+0x414):对‘cblas_dgemm’未定义的引用
HPL_pdupdateNN.c:(.text+0x5b9):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateNN.c:(.text+0x635):对‘cblas_dgemm’未定义的引用
HPL_pdupdateNN.c:(.text+0x6bc):对‘cblas_dgemm’未定义的引用
HPL_pdupdateNN.c:(.text+0x787):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateNN.c:(.text+0x803):对‘cblas_dgemm’未定义的引用
HPL_pdupdateNN.c:(.text+0x88a):对‘cblas_dgemm’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdupdateNT.o):在函数‘HPL_pdupdateNT’中:
HPL_pdupdateNT.c:(.text+0x261):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateNT.c:(.text+0x2d2):对‘cblas_dgemm’未定义的引用
HPL_pdupdateNT.c:(.text+0x3a3):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateNT.c:(.text+0x414):对‘cblas_dgemm’未定义的引用
HPL_pdupdateNT.c:(.text+0x5b6):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateNT.c:(.text+0x632):对‘cblas_dgemm’未定义的引用
HPL_pdupdateNT.c:(.text+0x6b9):对‘cblas_dgemm’未定义的引用
HPL_pdupdateNT.c:(.text+0x776):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateNT.c:(.text+0x7f2):对‘cblas_dgemm’未定义的引用
HPL_pdupdateNT.c:(.text+0x879):对‘cblas_dgemm’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdupdateTN.o):在函数‘HPL_pdupdateTN’中:
HPL_pdupdateTN.c:(.text+0x261):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateTN.c:(.text+0x2d2):对‘cblas_dgemm’未定义的引用
HPL_pdupdateTN.c:(.text+0x3a3):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateTN.c:(.text+0x414):对‘cblas_dgemm’未定义的引用
HPL_pdupdateTN.c:(.text+0x5b9):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateTN.c:(.text+0x635):对‘cblas_dgemm’未定义的引用
HPL_pdupdateTN.c:(.text+0x6bc):对‘cblas_dgemm’未定义的引用
HPL_pdupdateTN.c:(.text+0x787):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateTN.c:(.text+0x803):对‘cblas_dgemm’未定义的引用
HPL_pdupdateTN.c:(.text+0x88a):对‘cblas_dgemm’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdupdateTT.o):在函数‘HPL_pdupdateTT’中:
HPL_pdupdateTT.c:(.text+0x261):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateTT.c:(.text+0x2d2):对‘cblas_dgemm’未定义的引用
HPL_pdupdateTT.c:(.text+0x3a3):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateTT.c:(.text+0x414):对‘cblas_dgemm’未定义的引用
HPL_pdupdateTT.c:(.text+0x5b6):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateTT.c:(.text+0x632):对‘cblas_dgemm’未定义的引用
HPL_pdupdateTT.c:(.text+0x6b9):对‘cblas_dgemm’未定义的引用
HPL_pdupdateTT.c:(.text+0x776):对‘cblas_dtrsm’未定义的引用
HPL_pdupdateTT.c:(.text+0x7f2):对‘cblas_dgemm’未定义的引用
HPL_pdupdateTT.c:(.text+0x879):对‘cblas_dgemm’未定义的引用
../../../lib/Linux/libhpl.a(HPL_dlocmax.o):在函数‘HPL_dlocmax’中:
HPL_dlocmax.c:(.text+0xaf):对‘cblas_idamax’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdmxswp.o):在函数‘HPL_pdmxswp’中:
HPL_pdmxswp.c:(.text+0x1aa):对‘cblas_dcopy’未定义的引用
HPL_pdmxswp.c:(.text+0x1ec):对‘cblas_dcopy’未定义的引用
HPL_pdmxswp.c:(.text+0x4fc):对‘cblas_dcopy’未定义的引用
HPL_pdmxswp.c:(.text+0x709):对‘cblas_dcopy’未定义的引用
HPL_pdmxswp.c:(.text+0x750):对‘cblas_dcopy’未定义的引用
../../../lib/Linux/libhpl.a(HPL_pdtrsv.o):在函数‘HPL_pdtrsv’中:
HPL_pdtrsv.c:(.text+0xf5c):对‘cblas_dtrsv’未定义的引用
HPL_pdtrsv.c:(.text+0xf9b):对‘cblas_dcopy’未定义的引用
HPL_pdtrsv.c:(.text+0x1551):对‘cblas_dgemv’未定义的引用
HPL_pdtrsv.c:(.text+0x1691):对‘cblas_daxpy’未定义的引用
HPL_pdtrsv.c:(.text+0x1712):对‘cblas_dtrsv’未定义的引用
HPL_pdtrsv.c:(.text+0x1762):对‘cblas_dcopy’未定义的引用
HPL_pdtrsv.c:(.text+0x17d1):对‘cblas_dgemv’未定义的引用
collect2: error: ld returned 1 exit status
Makefile.hpcc:50: recipe for target '../../../../hpcc' failed
make[1]: *** [../../../../hpcc] Error 1
make[1]: Leaving directory '/home/andywang/hpcc-1.5.0/hpcc-1.5.0/hpl/lib/arch/build'
Makefile:7: recipe for target 'all' failed
make: *** [all] Error 2

前几个错误比较明显,没有加上lpthread,把编译脚本再改一下:把HPL_LIBS 改为 $(HPLlib) $(LAlib) $(MPlib) -lpthread -lm

再运行以下,有关于pthread的错误已经得到解决。再来看看有关于cblas的错误,这些未定义的引用都是来自于blas,看看blas_LINUX.a中的相关符号,

nm blas_LINUX.a | grep idamax
idamax.o:
0000000000000000 T f2c_idamax

发现符号不一样,这些函数都是以cblas开头的,所以推测要安装cblas。我们的机器上现在已经有blas了,所以直接下载cblas即可安装,安装cblas前还要安装gfortran,使用源安装即可。改写makefile.in如下:

BLLIB = /home/andywang/clapack/lib/blas_LINUX.a //本机上安装blas的位置
CBLIB = ../lib/cblas_$(PLAT).a //生成的cblas的位置与名称

好了,安装好了cblas,再编译HPCC试试,先将cblas与blas放到一起,再改写编译脚本:

LAlib        = $(LAdir)/cblas_LINUX.a $(LAdir)/blas_LINUX.a $(LAdir)/lapack_LINUX.a $(LAdir)/libf2c.a


结果又出现如下错误:

make arch=Linux
mkdir hpl/lib/Linux
mkdir: 无法创建目录"hpl/lib/Linux": 文件已存在
Makefile:7: recipe for target 'all' failed
make: [all] Error 1 (ignored)
( cd hpl/lib/arch/build ; make arch=Linux -f Makefile.hpcc )
make[1]: Entering directory '/home/andywang/hpcc-1.5.0/hpcc-1.5.0/hpl/lib/arch/build'
/usr/bin/gcc  -DHPL_CALL_CBLAS -I../../../include -I../../../include/Linux  -I/home/andywang/mpich-install/include -fomit-frame-pointer -O0 -funroll-loops -o ../../../../hpcc ../../../lib/Linux/libhpl.a  /home/andywang/clapack/lib/cblas_LINUX.a /home/andywang/clapack/lib/blas_LINUX.a /home/andywang/clapack/lib/lapack_LINUX.a /home/andywang/clapack/lib/libf2c.a /home/andywang/mpich-install/lib/libmpi.a -lpthread -lm
/home/andywang/clapack/lib/cblas_LINUX.a(cblas_dscal.o):在函数‘cblas_dscal’中:
cblas_dscal.c:(.text+0x22):对‘dscal_’未定义的引用
/home/andywang/clapack/lib/cblas_LINUX.a(cblas_dcopy.o):在函数‘cblas_dcopy’中:
cblas_dcopy.c:(.text+0x21):对‘dcopy_’未定义的引用
/home/andywang/clapack/lib/cblas_LINUX.a(cblas_daxpy.o):在函数‘cblas_daxpy’中:
cblas_daxpy.c:(.text+0x32):对‘daxpy_’未定义的引用
/home/andywang/clapack/lib/cblas_LINUX.a(idamaxsub.o):在函数‘idamaxsub_’中:
idamaxsub.f:(.text+0x7):对‘idamax_’未定义的引用
/home/andywang/clapack/lib/cblas_LINUX.a(cblas_dgemv.o):在函数‘cblas_dgemv’中:
cblas_dgemv.c:(.text+0x13e):对‘dgemv_’未定义的引用
cblas_dgemv.c:(.text+0x187):对‘dgemv_’未定义的引用
/home/andywang/clapack/lib/cblas_LINUX.a(cblas_dger.o):在函数‘cblas_dger’中:
cblas_dger.c:(.text+0xa9):对‘dger_’未定义的引用
cblas_dger.c:(.text+0xe1):对‘dger_’未定义的引用
/home/andywang/clapack/lib/cblas_LINUX.a(cblas_dtrsv.o):在函数‘cblas_dtrsv’中:
cblas_dtrsv.c:(.text+0x16e):对‘dtrsv_’未定义的引用
/home/andywang/clapack/lib/cblas_LINUX.a(cblas_dgemm.o):在函数‘cblas_dgemm’中:
cblas_dgemm.c:(.text+0x134):对‘dgemm_’未定义的引用
cblas_dgemm.c:(.text+0x1c7):对‘dgemm_’未定义的引用
/home/andywang/clapack/lib/cblas_LINUX.a(cblas_dtrsm.o):在函数‘cblas_dtrsm’中:
cblas_dtrsm.c:(.text+0x14d):对‘dtrsm_’未定义的引用
collect2: error: ld returned 1 exit status
Makefile.hpcc:50: recipe for target '../../../../hpcc' failed
make[1]: *** [../../../../hpcc] Error 1
make[1]: Leaving directory '/home/andywang/hpcc-1.5.0/hpcc-1.5.0/hpl/lib/arch/build'
Makefile:7: recipe for target 'all' failed
make: *** [all] Error 2

又出现了这些符号没有定义,通过分析源代码可以发现这些引用来自于blas的源文件,但由于在每个源文件中有包含了blaswrap.h,这个头文件的作用就是将函数名改为如下形式,例如“#define srotg_ f2c_srotg”,因此可以改写lapack的编译脚本,重新生成blas_LINUX.a。编译脚本改写如下:

CC        = gcc -DNO_BLAS_WRAP

如此就可以保持函数的本来形式。再次编译,又会出现一些错误(这些错误由于疏忽忘记记录了),解决这些问题后才算是将HPCC编译好,但编译好后在运行过程中还是会出现

** On entry to DGEMM , parameter number 8 had an illegal value

以上问题估计是blas造成的,此时我们已经陷入绝境,不过“山穷水尽疑无路”,再对源码进行研究后发现,这几个对于cblas的调用都是来自于hpl/src/blas中,其实一共就八个函数,仔细进行研究后可以发现,对于这八个函数的实现都位于“#ifdef HPL_CALL_VSIPL”后,所以第一想法就是把这些函数都移动到“#ifdef HPL_CALL_CBLAS”后,但是再次编译还是出现一些符号运行不了,因为这些符号在hpl_blas.h中定义为#define    HPL_dswap           cblas_dswap,所以程序编译完成后还是只有cblas_dswap,而没有HPL_dswap,可以把这部分定义注释掉,如此再编译运行,就可以正常执行了,中间有一部分问题由于不是边做边记,所以有些问题没有全部记录下来,如果有同学在安装HPCC过程中遇到什么问题,可以再来询问我。

 类似资料: