-
2009-02-23
Build GotoBLAS with Nehalem under SUSE Linux - [tech]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://blues083.blogbus.com/logs/35625185.html
Goto果然是大牛,两个邮件就解决了我的问题。之前还和microsoft的叶思量呢,你说做HPC要是做到了老头,你说人家得有多牛啊~
记录一下:
CPU: intel X5570 x 2
MEM: 4G x 6 DDR3 REG ECC 1333
OS: Suse Enterprise Linux 10 SP2 x86_64
I use the patch that Dr. Goto supply for Nehalem.
getarch.c:
#define FORCE_PENRYN
in Makefile.rule only:
C_COMPILER = GNU
F_COMPILER = GFORTRAN
BINARY64 = 1
then:
#make
and I got this:
make[3]: Entering directory `/root/GotoBLAS/level1/copy/x86_64'
gcc -c -O2 -D__64BIT__ -D_GNU_SOURCE -Wall -fPIC -m64 -DF_INTERFACE_GFORT -DPACKED_RETURN -DMAX_CPU_NUMBER=16 -DNUM_BUFFERS=\(2*16\) -DEXPRECISION -m128bit-long-double -DASMNAME=scopy_k -DASMFNAME=scopy_k_ -DNAME=scopy_k_ -DCNAME=scopy_k -DBUNDERSCORE=_ -DNEEDBUNDERSCORE -I../../.. -DARCH_X86_64 -DPENRYN -DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=64 -DL2_SIZE=1048576 -DL2_LINESIZE=64 -DDTB_ENTRIES=256 -DDTB_SIZE=4096 -DHAVE_CMOV -DHAVE_MMX -DHAVE_SSE -DHAVE_SSE2 -DHAVE_SSE3 -DHAVE_SSSE3 -DHAVE_SSE4_1 -DCORE_PENRYN -UDOUBLE -UCOMPLEX -DC_INTERFACE copy_sse_core2.S -o ../scopy_k.o
copy_sse_core2.S: Assembler messages:
copy_sse_core2.S:244: Error: no such instruction: `palignr $4,%xmm0,%xmm1'
copy_sse_core2.S:249: Error: no such instruction: `palignr $4,%xmm9,%xmm2'
copy_sse_core2.S:254: Error: no such instruction: `palignr $4,%xmm10,%xmm3'
copy_sse_core2.S:259: Error: no such instruction: `palignr $4,%xmm11,%xmm4'
copy_sse_core2.S:264: Error: no such instruction: `palignr $4,%xmm12,%xmm5'
copy_sse_core2.S:269: Error: no such instruction: `palignr $4,%xmm13,%xmm6'
copy_sse_core2.S:274: Error: no such instruction: `palignr $4,%xmm14,%xmm7'
copy_sse_core2.S:279: Error: no such instruction: `palignr $4,%xmm15,%xmm8'
copy_sse_core2.S:291: Error: no such instruction: `palignr $4,%xmm0,%xmm1'
copy_sse_core2.S:295: Error: no such instruction: `palignr $4,%xmm9,%xmm2'
copy_sse_core2.S:299: Error: no such instruction: `palignr $4,%xmm10,%xmm3'
copy_sse_core2.S:303: Error: no such instruction: `palignr $4,%xmm11,%xmm4'
copy_sse_core2.S:307: Error: no such instruction: `palignr $4,%xmm12,%xmm5'
copy_sse_core2.S:311: Error: no such instruction: `palignr $4,%xmm13,%xmm6'
copy_sse_core2.S:315: Error: no such instruction: `palignr $4,%xmm14,%xmm7'
copy_sse_core2.S:319: Error: no such instruction: `palignr $4,%xmm15,%xmm8'
copy_sse_core2.S:339: Error: no such instruction: `palignr $4,%xmm0,%xmm1'
copy_sse_core2.S:340: Error: no such instruction: `palignr $4,%xmm5,%xmm2'
copy_sse_core2.S:345: Error: no such instruction: `palignr $4,%xmm6,%xmm3'
copy_sse_core2.S:346: Error: no such instruction: `palignr $4,%xmm7,%xmm4'
copy_sse_core2.S:368: Error: no such instruction: `palignr $4,%xmm0,%xmm1'
copy_sse_core2.S:369: Error: no such instruction: `palignr $4,%xmm3,%xmm2'
copy_sse_core2.S:385: Error: no such instruction: `palignr $4,%xmm0,%xmm1'
copy_sse_core2.S:605: Error: no such instruction: `palignr $12,%xmm0,%xmm1'
copy_sse_core2.S:610: Error: no such instruction: `palignr $12,%xmm9,%xmm2'
copy_sse_core2.S:615: Error: no such instruction: `palignr $12,%xmm10,%xmm3'
copy_sse_core2.S:620: Error: no such instruction: `palignr $12,%xmm11,%xmm4'
copy_sse_core2.S:625: Error: no such instruction: `palignr $12,%xmm12,%xmm5'
copy_sse_core2.S:630: Error: no such instruction: `palignr $12,%xmm13,%xmm6'
copy_sse_core2.S:635: Error: no such instruction: `palignr $12,%xmm14,%xmm7'
copy_sse_core2.S:640: Error: no such instruction: `palignr $12,%xmm15,%xmm8'
copy_sse_core2.S:652: Error: no such instruction: `palignr $12,%xmm0,%xmm1'
copy_sse_core2.S:656: Error: no such instruction: `palignr $12,%xmm9,%xmm2'
copy_sse_core2.S:660: Error: no such instruction: `palignr $12,%xmm10,%xmm3'
copy_sse_core2.S:664: Error: no such instruction: `palignr $12,%xmm11,%xmm4'
copy_sse_core2.S:668: Error: no such instruction: `palignr $12,%xmm12,%xmm5'
copy_sse_core2.S:672: Error: no such instruction: `palignr $12,%xmm13,%xmm6'
copy_sse_core2.S:676: Error: no such instruction: `palignr $12,%xmm14,%xmm7'
copy_sse_core2.S:680: Error: no such instruction: `palignr $12,%xmm15,%xmm8'
copy_sse_core2.S:700: Error: no such instruction: `palignr $12,%xmm0,%xmm1'
copy_sse_core2.S:701: Error: no such instruction: `palignr $12,%xmm5,%xmm2'
copy_sse_core2.S:706: Error: no such instruction: `palignr $12,%xmm6,%xmm3'
copy_sse_core2.S:707: Error: no such instruction: `palignr $12,%xmm7,%xmm4'
copy_sse_core2.S:729: Error: no such instruction: `palignr $12,%xmm0,%xmm1'
copy_sse_core2.S:730: Error: no such instruction: `palignr $12,%xmm3,%xmm2'
copy_sse_core2.S:746: Error: no such instruction: `palignr $12,%xmm0,%xmm1'
make[3]: *** [../scopy_k.o] Error 1
make[3]: Leaving directory `/root/GotoBLAS/level1/copy/x86_64'
make[2]: *** [scopy_k.o] Error 2
make[2]: Leaving directory `/root/GotoBLAS/level1/copy'
make[1]: *** [libs] Error 1
make[1]: Leaving directory `/root/GotoBLAS/level1'
make: *** [libs] Error 1
linux-1une:~/GotoBLAS #
原因是GotoBLAS需要使用>=2.17的binutils,然后,虽然安装了新的binutils,但是被安装在了/usr/local/bin,而gcc调用的是/usr/bin下的,所以也需要手工更新一下/usr/bin下的as。
就这么简单啊。
收藏到:Del.icio.us








评论
你能将需要的那个patch,发到我邮箱吗?谢谢。
我的邮箱:jinslotus@163.com
我在Intel X5560平台上編譯GotoBLAS也遇到了類似的問題。不知道您方便也將patch檔案寄給我呢?
順便問您:
1. 這個patch是從哪邊來的?
2. 該如何上這個patch檔呢?
再次謝謝您的幫忙
2、patch命令,自己研究一下就知道了。
3、请留下mail地址。
谢谢!
原来是需要这个
#define FORCE_PENRYN
gotoblas在intel的E5520 新cpu上编译过不去阿
rhel5.3 binutils-2.17.50.0.6-9.el5
gcc -c -O2 -D__64BIT__ -D_GNU_SOURCE -Wall -fPIC -m64 -DF_INTERFACE_F2C -DSMP_SERVER -DMAX_CPU_NUMBER=16 -DNUM_BUFFERS=\(2*16\) -DASMNAME=isamax_k -DASMFNAME=isamax_k_ -DNAME=isamax_k_ -DCNAME=isamax_k -DBUNDERSCORE=_ -DNEEDBUNDERSCORE -I../../.. -DARCH_X86_64 -DINTEL_UNKNOWN -DL1_DATA_SIZE=32768 -DL1_DATA_ASSOCIATIVE=8 -DL1_DATA_LINESIZE=64 -DL2_SIZE=262144 -DL2_ASSOCIATIVE=6 -DL2_LINESIZE=64 -DDTB_SIZE=4096 -DDTB_ASSOCIATIVE=4 -DDTB_ENTRIES=64 -DHAVE_CMOV -DHAVE_MMX -DHAVE_SSE -DHAVE_SSE2 -DHAVE_SSE3 -DHAVE_SSSE3 -DHAVE_SSE4_1 -DHAVE_SSE4_2 -DHAVE_CFLUSH -DNUM_SHAREDCACHE=1 -DNUM_CORES=1 -UDOUBLE -UF_INTERFACE -DABS iamax_sse.S -o ../isamax_k.o
In file included from ../../../common.h:201,
from iamax_sse.S:23:
../../../param.h:1195:21: error: division by zero in #if
../../../param.h:1195:21: error: division by zero in #if
../../../param.h:1205:21: error: division by zero in #if
../../../param.h:1205:21: error: division by zero in #if
../../../param.h:1225:21: error: division by zero in #if
../../../param.h:1225:21: error: division by zero in #if
../../../param.h:1235:21: error: division by zero in #if
单机hpl效率能上95%么...linpack能上, hpl怎么测只到92%+阿
我的email: dayqz##@###hotmail.com
更新一下,我的一个同事花了一些时间,用多线程的GotoBLAS,4个HPL进程,每个进程两个线程,效率跑到了97%,这只是5520的结果,估计5550以上的更好些,你知道的,5550以上的内存才能跑到1333。