| 1 | 1/1 | 返回列表 |
| 查看: 904 | 回復(fù): 0 | ||
onesupeng金蟲 (職業(yè)作家)
|
[資源]
【原創(chuàng)】并行平臺構(gòu)建與管理[6]:并行測試 GotoBLAS+hpl測試之安裝(1)
|
|
前面講了atlas+hpl的安裝,測試了一下,效率不是很理想。傳聞使用Goto blas庫測得的效率略理想一些,于是今天試了一下,安裝成功。將過程貼出來供大家討論。 GotoBLAS之編譯: 1、 到 http://www.tacc.utexas.edu/resources/software/ 網(wǎng)站上下載 Source Code v.1.00或者其他版本,我用的是Source Code v.1.00,網(wǎng)站需要注冊,不過是免費(fèi)的,很快就可以搞定。 2、用 tar -zxvf 解壓之,可以看到GotoBLAS的文件夾 3、編輯Makefile.rule,詳細(xì)情況見附件;更改getarch.c里面的archtecture,使之符合自己的情況 4、make 5、cd exports 執(zhí)行make so 6、新編輯xerbla.c,內(nèi)容見附件二,執(zhí)行g(shù)cc -c xerbla.c -o xerbla.o 在GotoBLAS下可以看到libgoto.a,libgoto_opteronp-r1.00.a,libgoto_opteronp-r1.00.so,xerbla.o幾個新東西,表明編譯成功。 附件一:Makefile.rule # # Beginning of user configuration # # This library's version REVISION = -r1.00 # Which do you prefer to use for C compiler? Default is gcc. # I recommend you to use GCC because inline assembler is required. C_COMPILER = GNU # C_COMPILER = INTEL # Which do you prefer to use for C compiler? Default is GNU G77. # F_COMPILER = G77 # F_COMPILER = G95 # F_COMPILER = GFORTRAN # F_COMPILER = INTEL # F_COMPILER = PGI # F_COMPILER = PATHSCALE # F_COMPILER = IBM # F_COMPILER = COMPAQ # F_COMPILER = SUN # F_COMPILER = F2C # If you want to build threaded version. # You can specify number of threads by environment value # "OMP_NUM_THREADS", otherwise, it's automatically detected. SMP = 2 # You may specify Maximum number of threads. It should be minimum. MAX_THREADS = 2 # If you need 64bit binary; some architecture can accept both 32bit and # 64bit binary(EM64T, Opteron, SPARC and Power/PowerPC). BINARY64 = 1 # If you need 64bit integer interface. INTERFACE64 = 1 # If you need Special memory management; # Using HugeTLB file system(Linux / AIX / Solaris) CCOMMON_OPT += -DALLOC_HUGETLB # Using static allocation instead of dynamic allocation # CCOMMON_OPT += -DALLOC_STATIC # If you want to use CPU affinity CCOMMON_OPT += -DUSE_CPU_AFFINITY # If you want to use memory affinity (for NUMA) # CCOMMON_OPT += -DUSE_MEMORY_AFFINITY # If you have special compiler to run script to determine architecture. GETARCH_CC = GETARCH_FLAGS = # # End of user configuration # MACHINE := $(shell uname -m | sed -e s/i.86/i386/ ) OSNAME := $(shell uname -s) ifeq ($(MACHINE), i386) BINARY64 = NATIVEARCH = YES endif ifeq ($(MACHINE), ia64) BINARY64 = YES NATIVEARCH = YES endif ifeq ($(MACHINE), alpha) BINARY64 = YES NATIVEARCH = YES endif ifeq ($(OSNAME), AIX) NATIVEARCH = YES endif ifeq ($(OSNAME), Darwin) ifndef BINARY64 NATIVEARCH = YES endif endif # If you need to access over 4GB chunk on 64bit system. ifdef BINARY64 CCOMMON_OPT += -D__64BIT__ ifdef INTERFACE64 CCOMMON_OPT += -DUSE64BITINT endif endif # If you need modified GEMV/GEMM to find best parameters; # CCOMMON_OPT += -DPARAMTEST # CCOMMON_OPT += -DPREFETCHTEST # Common Optimization Flag COMMON_OPT += -O2 # Optimization Flag for C compiler CCOMMON_OPT += # Optimization Flag for Fortran Compiler FCOMMON_OPT += # Profiling flags COMMON_PROF = -pg ################## End of Main Configuration ##################### # TO suppress recursive includes INCLUDED = 1 ifndef C_COMPILER C_COMPILER = GNU endif ifndef F_COMPILER F_COMPILER = G77 endif ifeq ($(C_COMPILER), GNU) COMPILER = gcc CCOMMON_OPT += -Wall ifneq ($(OSNAME), CYGWIN_NT-5.1) CCOMMON_OPT += -fPIC endif ifndef NATIVEARCH ifdef BINARY64 CCOMMON_OPT += -m64 GETARCH_FLAGS = -m64 else CCOMMON_OPT += -m32 GETARCH_FLAGS = -m32 endif endif COMMON_PROF += -fno-inline endif ifeq ($(C_COMPILER), INTEL) COMPILER = icc CCOMMON_OPT += -fPIC endif ifeq ($(F_COMPILER), G77) COMPILER_F77 = g77 BU = _ CCOMMON_OPT += -DF_INTERFACE_F2C -DNEED_F2CCONV FCOMMON_OPT += -Wall ifneq ($(OSNAME), CYGWIN_NT-5.1) FCOMMON_OPT += -fPIC endif ifndef NATIVEARCH ifdef BINARY64 FCOMMON_OPT += -m64 else FCOMMON_OPT += -m32 endif endif endif ifeq ($(F_COMPILER), G95) COMPILER_F77 = g95 BU = _ CCOMMON_OPT += -DF_INTERFACE_F2C FCOMMON_OPT += -Wall ifneq ($(OSNAME), CYGWIN_NT-5.1) FCOMMON_OPT += -fPIC endif ifndef NATIVEARCH ifdef BINARY64 FCOMMON_OPT += -m64 else FCOMMON_OPT += -m32 endif endif endif ifeq ($(F_COMPILER), GFORTRAN) COMPILER_F77 = gfortran BU = _ CCOMMON_OPT += -DF_INTERFACE_GFORT FCOMMON_OPT += -Wall ifneq ($(OSNAME), CYGWIN_NT-5.1) FCOMMON_OPT += -fPIC endif ifndef NATIVEARCH ifdef BINARY64 FCOMMON_OPT += -m64 else FCOMMON_OPT += -m32 endif endif endif ifeq ($(F_COMPILER), INTEL) COMPILER_F77 = ifort BU = _ CCOMMON_OPT += -DF_INTERFACE_F2C FCOMMON_OPT += -fPIC ifdef INTERFACE64 FCOMMON_OPT += -i8 endif endif ifeq ($(F_COMPILER), IBM) COMPILER_F77 = xlf BU = # FCOMMON_OPT += -qarch=440 ifdef BINARY64 FCOMMON_OPT += -q64 else FCOMMON_OPT += -q32 endif endif ifeq ($(F_COMPILER), COMPAQ) ifeq ($(OSNAME), Linux) COMPILER_F77 = fort FCOMMON_OPT += -fPIC else COMPILER_F77 = f77 endif BU = _ endif ifeq ($(F_COMPILER), PGI) COMPILER_F77 = pgf77 BU = _ CCOMMON_OPT += -DF_INTERFACE_F2C FCOMMON_OPT += -fPIC COMMON_PROF += -DPGICOMPILER ifndef BINARY64 # FCOMMON_OPT += -tp k8-32 FCOMMON_OPT += -tp p7 EXTRALIB += -L/opt/pgi/linux86/6.0/lib -lpgc else FCOMMON_OPT += -tp k8-64 EXTRALIB += -L/opt/pgi/linux86-64/6.0/lib -lpgc -lpgf90rtl ifdef INTERFACE64 FCOMMON_OPT += -i8 endif endif endif ifdef SMP EXTRALIB += -lpthread endif ifeq ($(F_COMPILER), PATHSCALE) COMPILER_F77 = pathf90 BU = _ CCOMMON_OPT += -DAMD_ABI -DF_PATHSCALE FCOMMON_OPT += -fPIC ifndef BINARY64 CCOMMON_OPT += -DF_INTERFACE_F2C FCOMMON_OPT += -m32 else FCOMMON_OPT += -m64 ifdef INTERFACE64 FCOMMON_OPT += -i8 endif endif endif ifeq ($(F_COMPILER), SUN) COMPILER_F77 = f90 BU = _ CCOMMON_OPT += -DF_SUN FCOMMON_OPT += -pic ifndef BINARY64 CCOMMON_OPT += -DF_INTERFACE_F2C endif endif ifeq ($(F_COMPILER), F2C) COMPILER_F77 = f2cf77 BU = _ CCOMMON_OPT += -DF_INTERFACE_F2C -DNEED_F2CCONV FCOMMON_OPT += -Wall -fPIC endif # Currently Windows version doesn't support threads ifeq ($(OSNAME), CYGWIN_NT-5.1) SMP = endif ifdef SMP CCOMMON_OPT += -DSMP_SERVER ifeq ($(C_COMPILER), GNU) ifeq ($(OSNAME), Linux) CCOMMON_OPT += -pthread endif endif endif ifndef GETARCH_CC GETARCH_CC = gcc endif ARCH := $(shell (cd $(TOPDIR); ./getarch 0 $(GETARCH_CC) $(GETARCH_FLAGS))) SUBARCH := $(shell (cd $(TOPDIR); ./getarch 1 $(GETARCH_CC) $(GETARCH_FLAGS))) ARCHSUBDIR := $(shell (cd $(TOPDIR); ./getarch 2 $(GETARCH_CC) $(GETARCH_FLAGS))) CONFIG := $(shell (cd $(TOPDIR); ./getarch 3 $(GETARCH_CC) $(GETARCH_FLAGS))) FU := $(shell (cd $(TOPDIR); ./getarch 4 $(GETARCH_CC) $(GETARCH_FLAGS))) LIBSUBARCH := $(shell (cd $(TOPDIR); ./getarch 5 $(GETARCH_CC) $(GETARCH_FLAGS))) CORE := $(shell (cd $(TOPDIR); ./getarch 6 $(GETARCH_CC) $(GETARCH_FLAGS))) ifndef MAX_THREADS MAX_THREADS := $(shell (cd $(TOPDIR); ./getarch 7 $(GETARCH_CC) $(GETARCH_FLAGS))) endif CCOMMON_OPT += -DMAX_CPU_NUMBER=$(MAX_THREADS) LIBPREFIX = libgoto ARFLAGS = CPP = $(CC) -E AR = $(COMPILER_PREFIX)ar AS = $(COMPILER_PREFIX)as LD = $(COMPILER_PREFIX)ld RANLIB = $(COMPILER_PREFIX)ranlib include $(TOPDIR)/Makefile.$(ARCHSUBDIR) CCOMMON_OPT += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) ifeq ($(CORE), PPC440) CCOMMON_OPT += -DALLOC_QALLOC endif ifeq ($(CORE), PPC440FP2) CCOMMON_OPT += -DALLOC_STATIC endif ifeq ($(FU), _) CCOMMON_OPT += -DFUNDERSCORE=$(FU) -DNEEDFUNDERSCORE endif ifeq ($(BU), _) CCOMMON_OPT += -DBUNDERSCORE=$(BU) -DNEEDBUNDERSCORE endif CFLAGS = $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) $(CONFIG) PFLAGS = $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) $(CONFIG) -DPROFILE $(COMMON_PROF) # FFLAGS += $(COMMON_OPT) $(FCOMMON_OPT) $(CONFIG) FFLAGS += $(COMMON_OPT) $(FCOMMON_OPT) FPFLAGS = $(COMMON_OPT) $(FCOMMON_OPT) $(COMMON_PROF) ifndef SMP LIBNAME = $(LIBPREFIX)_$(LIBSUBARCH)$(REVISION).a LIBNAME_P = $(LIBPREFIX)_$(LIBSUBARCH)$(REVISION)_p.a else LIBNAME = $(LIBPREFIX)_$(LIBSUBARCH)p$(REVISION).a LIBNAME_P = $(LIBPREFIX)_$(LIBSUBARCH)p$(REVISION)_p.a endif LIBSONAME = $(LIBNAME:.a=.so) LIBDLLNAME = $(LIBNAME:.a=.dll) LIBDYNNAME = $(LIBNAME:.a=.dylib) LIBWIN2KNAME = $(LIBNAME:.a=.lib) LIBDEFNAME = $(LIBNAME:.a=.def) LIBEXPNAME = $(LIBNAME:.a=.exp) LIBZIPNAME = $(LIBNAME:.a=.zip) LIBS = $(TOPDIR)/$(LIBNAME) LIBS_P = $(TOPDIR)/$(LIBNAME_P) ifndef SMP LIBPTHREAD = else LIBPTHREAD = -lpthread endif CC = $(COMPILER_PREFIX)$(COMPILER) FC = $(COMPILER_PREFIX)$(COMPILER_F77) .SUFFIXES: .po .o .f .f.o: $(FC) $(FFLAGS) -c $< .f.po: $(FC) $(FPFLAGS) -pg -c $< 附件二:xerbla.c#include #include int xerbla_(char *message, int *info, long length){ fprintf(stderr, " ** On entry to %6s, parameter number %2d had an illegal value\n", message, *info); exit(1); } |
找到一些相關(guān)的精華帖子,希望有用哦~
| 1 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 317求調(diào)劑 +12 | 申子申申 2026-03-19 | 18/900 |
|
|---|---|---|---|---|
|
[考研] 一志愿華中農(nóng)業(yè)071010,總分320求調(diào)劑 +5 | 困困困困坤坤 2026-03-20 | 6/300 |
|
|
[考研] 考研調(diào)劑 +4 | 來好運(yùn)來來來 2026-03-21 | 4/200 |
|
|
[考研] 材料學(xué)碩301分求調(diào)劑 +7 | Liyouyumairs 2026-03-21 | 7/350 |
|
|
[考研] 材料求調(diào)劑 +5 | @taotao 2026-03-21 | 5/250 |
|
|
[考研] 297求調(diào)劑 +3 | 喜歡還是不甘心 2026-03-20 | 3/150 |
|
|
[考研] 工科0856求調(diào)劑 +3 | 沐析汀汀 2026-03-21 | 3/150 |
|
|
[考研] 求助 +5 | 夢里的無言 2026-03-21 | 6/300 |
|
|
[考研] 311求調(diào)劑 +3 | 勇敢的小吳 2026-03-20 | 3/150 |
|
|
[考研] 302求調(diào)劑 +12 | 呼呼呼。。。。 2026-03-17 | 12/600 |
|
|
[考研] 296求調(diào)劑 +4 | www_q 2026-03-20 | 4/200 |
|
|
[考研] 265求調(diào)劑 +12 | 梁梁校校 2026-03-19 | 14/700 |
|
|
[考研] 265求調(diào)劑 +3 | Jack?k?y 2026-03-17 | 3/150 |
|
|
[考研] 303求調(diào)劑 +5 | 睿08 2026-03-17 | 7/350 |
|
|
[考研]
|
.6lL 2026-03-18 | 8/400 |
|
|
[考研] 274求調(diào)劑 +10 | S.H1 2026-03-18 | 10/500 |
|
|
[考研] 286求調(diào)劑 +6 | lemonzzn 2026-03-16 | 10/500 |
|
|
[考研] 一志愿福大288有機(jī)化學(xué),求調(diào)劑 +3 | 小木蟲200408204 2026-03-18 | 3/150 |
|
|
[考研] 312求調(diào)劑 +8 | 陌宸希 2026-03-16 | 9/450 |
|
|
[考研] 有沒有道鐵/土木的想調(diào)劑南林,給自己招師弟中~ +3 | TqlXswl 2026-03-16 | 7/350 |
|